充分了解一下反爬策略

jj 2022-07-27

网络爬虫技术已经成为一种非常流行的网络技术,对于一个内容驱动的网站来说,不可避免的会受到网络爬虫技术的光顾。优秀的爬虫技术不会干扰网站的正常运行,而糟糕的爬虫技术会带来很多麻烦,因为他们的页面抓取能力差,经常会有几十个或者上百个重复请求,增加了网络站点的访问压力,导致站点访问缓慢甚至无法访问。
 


为了避免这种情况,网站会使用反抓取技术,一般从一般用户请求的头、一般用户行为、网站目录、数据加载方式三个方面来实现反爬虫。
 
1.穿越报头反爬虫技术
 
普通用户要求的头反爬虫技术是最常见的反爬虫技术策略。很多网站会检测Headers的User-Agent,有些网站会检测Referer(有些资源网站的防盗链就是检测Referer)。如果遇到这种反爬虫技术机制,可以直接给爬虫技术添加头,把浏览器的User-Agent复制到爬虫技术头;或将Referer值修改为目标网络站点的域名。对于检测报头的反爬虫技术,在爬虫技术中修改或添加报头可以很好的绕过它。
 
2.基于一般用户行为的反爬虫技术
 
还有一些网站会检测到一般的用户行为,比如同一个IP在短时间内多次访问同一个页面,或者同一个账号在短时间内多次做同样的操作。
 
大部分网点都是前一种情况,对于这种情况可以使用IP代理,精灵ip代理适用于多个平台,在全国各地都有自营的服务器节点,有大量的IP地址,就可以每隔几个请求就换一个IP,这在requests或者urllib2中很容易做到,所以可以很容易的绕过第一道反爬虫技术。
 
在第二种情况下,下一个请求可以在每次请求后随机间隔几秒钟发出。一些存在逻辑漏洞的网站,可以通过多次请求、注销、再次登录、继续请求的方式,绕过同一账号不能在短时间内多次发出相同请求的限制。
 
3.动态页面的反爬虫技术
 
以上情况大多出现在静态页面,以及一些网站上。我们需要抓取的数据是通过ajax请求获取的,或者是Java生成的。首先,使用Firebug或HttpFox来分析网络请求。如果能找到ajax请求,分析出具体的参数和响应的具体含义,就可以采用上面的方法,直接用requests或者urllib2模拟ajax请求,分析响应的json,得到需要的数据。
 
反爬虫和爬虫是相辅相成的,遵守目标站点的规则才是利人利己的好爬虫。

扫一扫,咨询微信客服