注册
登录
提问时间:2017/12/16 16:28:28    楼主:未知网友   阅读量:421
作为爬虫工作者来说,反爬虫策略是最大的敌人,它总是让你的爬取工作不那么顺利的完成,时不时给你添堵,找麻烦。于是,持久战开始了,今天反爬虫策略提升了,明天我就提升了爬虫策略,后天反爬虫策略再升级……爬虫与反爬虫之间的战争从来没有停过,这里分享两种最常见的反爬虫策略及应对方法。

从用户请求的Headers反爬虫是最常见的反爬虫策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。

还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。

大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。这样的代理ip爬虫经常会用到,最好自己准备一个;需要高质量的代理IP提高效率,也可以付费购买一些代理IP,比如站大爷代理IP平台上的短效优质代理和一手私密代理,都是非常不错的。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。

对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。有些有逻辑漏洞的网站,可以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。