16
2020
03

常见的反爬虫和应对方法?

1)通过Headers反爬虫


从用户请求的Headers反爬虫是最常见的反爬虫策略。可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。


2)基于用户行为反爬虫


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


大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。


可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。


有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。


对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。


有些有逻辑漏洞的网站,可以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。


3)动态页面的反爬虫


首先用Fiddler对网络请求进行分析,如果能够找到ajax请求,也能分析出具体的参数和响应的具体含义,我们就能采用上面的方法。


直接利用requests或者urllib2模拟ajax请求,对响应的json进行分析得到需要的数据。


但是有些网站把ajax请求的所有参数全部加密了,没办法构造自己所需要的数据的请求。


这种情况下就用selenium+phantomJS,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。