这两天呢,忽然看了一下,自己手边管理的爬虫,看了一下,数据抓取率有点偏低了。 于是自己研究了一下Amazon的反爬虫技术!
于是我在这里写下一点点,我对于反爬虫的一点点认知,欢迎各位大佬拍砖!
反爬虫技术的核心要点就是,在不影响客户体验的情况下,以最大的可能性,禁止掉爬虫!
要做反爬虫,首先要知道爬虫的基本信息。
从技术层面上来说,爬虫无非就是有两种实现途径。 一个是渲染,采用程序调用(控制)浏览器来执行某一些步骤或者是,采集某一些数据。 第二种就是 抓包。 直接进行数据接口的访问信息!
针对这两种的爬虫的机制来说的话:
反爬虫可以进行一下以下操作:
首先,渲染的核心呢,就是浏览加载页面,而浏览器加载的有个关键的点就是,整个页面(html+js+css+jpg+....)等等,全部都加载到了这个页面才算是加载完成!
而反爬虫就可以在一些非重要的js进行一下,线程的休眠,或者在某个不是很重要的接口里面,写上休眠,这个样子,就可以将一个页面从开始加载,到加载完成。所耗费的时间拉长,因为不是不是特别重要的原因,既不影响客户体验,也能降低爬虫的抓取能力!(一个爬虫绝对受不了,一个页面加载需要5-10秒的时间。)
而针对抓包这块的话,可进行的操作的点就多了。
一些简单的例子,没host,不允许访问啊,没user-agent不允许访问啊,封ip,必须登录状态啊,等等操作,有很大的操作空间,而我就不班门弄斧了!
而作为爬虫端呢,需要做到的有4点,分别是数据的 一致性,即时性,准确性,跟完整性!
一致性: 在后台数据未改变的情况下,两次抓取数据必须一致!
反爬虫技术中的: 数据混淆,就是针对这个来直接性进行的。 (例如:天眼查)
爬虫数据倘若一条不对,则整个批次,都需要重新抓取处理!
即时性: 假设,你的爬虫每天固定12点执行。 而网站每天下午一点进行数据刷新。 也就是说,如果你想要前面的数据的话,必须保证在13点之前爬虫就执行完毕,否则,就不是一个批次了!
据我所知,貌似没有专门针对这个的反爬虫技术,因为,网站数据不可能是变动有规律的。 只能能说一点一点的变!
完整性: 假设,一条产品的一个价格属性,假设商家在上架时未给产品设定这个属性。 我们抓不到,情有可原,但设定了,浏览器访问也出现了。 爬虫没抓到,就是失职!
反爬虫技术在针对这个的时候,将这个产品的属性在产品页:进行多个位置进行固定展示,但这些个位置中间随机一下! (例如 :amazon)
准确性: 页面所显示的所有的数据,爬虫必须做到准确无误,绝对不能再任意环节更改数据内容! 否则会影响后期数据分析的!
反爬虫技术中好像也没有专门针对这个的。 倘若数据不准确,也是会影响客户体验的!
网友评论