注册
登录
提问时间:2018/5/19 16:56:50    楼主:未知网友   阅读量:322

生老病死是人之常情,自然规律,无可避免。网络爬虫同样也没有永恒的生命,因为它时刻要面临着反爬虫的围追截堵,爬虫工程师不可能让网络爬虫永远的运行下去,却可以让爬虫尽可能存活的时间长一点。

那么面对反爬虫,如何让网络爬虫的生存周期长一点呢?两个字:伪装。所谓“雄兔脚扑朔,雌兔眼迷离,双兔傍地走,安能辨我是雌雄”。当爬虫伪装的和真实用户差不多,达到以假乱真时,就很难被反爬虫识别出来了,除非大面积误杀。

一、用户代理(user-Agent)

用户代理是用户访问目标服务器的工具,并告知服务器用户正在使用哪个网络浏览器访问,如果没有设置用户代理,服务器不会让你查看内容,正如,主人不会随便让陌生人进屋一样。不同的浏览器,user-Agent也各不相同,最好的办法就是搜集很多user-Agent,然后爬虫随机使用,不要一个UA用到底也不要有规律的使用。正如一个亲戚不停的去蹭饭,或者几个亲戚排队轮流去蹭饭,估计这友谊的小船要翻了。

二、代理IP(proxy)

网络爬虫没有代理IP,那真的是寸步难行了。大多数的网站都会设置一个阈值,当某个IP访问的次数到达了阈值便会受到限制;还有很多网站会设置一个访问频率,当单位时间内访问频率反人类了也会被限制,这个时候只有代理IP才能突破这个限制,大量的优质代理IP不停的分担压力,就算被封了也可以再换一批。选择代理IP时一定要选择高匿代理IP,普匿代理和透明代理会露出马脚,暴露伪装。

三、请求头(Request Headers)

很多网站的反爬虫比较严格,或者说比较狡猾,它们会揪出某个细节不放,可能一时不小心就会被发现。当你访问页面的时候他们会查找特定的请求响应头信息,如果特定的头信息没有被发现,他们会阻止内容显示或者展示一个虚假的内容。正如地下工作者半夜敲门要对下暗号“天王盖地虎,宝塔镇河妖”一样。这个其实也很好解决,用谷歌浏览器访问网页,然后按住F12可以看到相信的请求头信息,然后模拟即可。

做好这三点基本也就伪装的差不多了,还有一些细节也要注意,比如访问延时,真实的用户不可能访问每个页面都是固定的几秒钟,肯定有快有慢,这时可以设置随机时间,每访问一个页面随机休息几秒钟。


总之,当爬虫伪装的越像真实用户,被反爬虫发现的几率就越小,当然,伪装的越像,牺牲的效率值也就越大,这就需要爬虫工程师好好的衡量下,找出两者的平衡点了。