反爬虫策略

搜寻了大多数资料,反爬虫策略只是为了让爬虫更复杂,更麻烦,目前貌似没有能一劳永逸的方案。

以下的策略只是增加爬虫的难度,增加爬虫成本。

1.Headers限制


反爬虫策略_第1张图片

检查User-Agent属性,判断是否为浏览器访问。

检查Referer属性,判断来源。

以下是网上收集的获取不到HTTP_REFERER值的情况:

① 在浏览器内直接敲URL

② windows桌面上的超链接图标

③浏览器内书签

④第三方软件(如Word,Excel等)内容中的链接

⑤SSL认证网站跳入

⑥http://example.com/“> meta页面设置自动跳转时,在example.com将取不到REFERER URL

⑦使用JavaScript的Location.href或者是Location.replace()


这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。


2.IP限制

限制IP也是很多网站反爬虫的初衷,有些人随便写一个循环,就开始暴力爬取 ,确实会给网站服务器带来很大的负担,而这种频繁的访问,显然也不会是真实用户行为,索性果断把你封掉。

当然,攻击者可以通过不断换IP的形式来绕过这种限制。而且封IP会流失用户,一般情况下不会采取。

3.动态加载

通过异步加载,一方面是为了反爬虫,一方面也可以给网页浏览带来不同的体验,实现更多的功能。很多动态网站都是通过ajax或者JavaScript来加载请求的网页。

4.验证码

给用户请求次数加一个阀值,超过该阀值,弹出验证码界面。

5.返回伪造的信息

确定该请求为爬虫请求后,返回虚假混乱的数据增加筛选复杂度。

以下是引用sexycoder的观点:

反爬虫最基本的策略:

1.检查浏览器http请求里面的user-agent字段

2.检查http请求的referer(即当前的这个页面是从哪个页面跳转过来的)

爬虫策略:

这两个都是在http协议的报文段的检查,同样爬虫端可以很方便的设置这些字段的值,来欺骗服务器。

反爬虫进阶策略:

1.像知乎一样,在登录的表单里面放入一个隐藏字段,里面会有一个随机数,每次都不一样,这样除非你的爬虫脚本能够解析这个随机数,否则下次爬的时候就不行了。

2.记录访问的ip,统计访问次数,如果次数太高,可以认为这个ip有问题。

爬虫进阶策略:

1.像这篇文章提到的,爬虫也可以先解析一下隐藏字段的值,然后再进行模拟登录。

2.爬虫可以使用ip代理池的方式,来避免被发现。同时,也可以爬一会休息一会的方式来降低频率。另外,服务器根据ip访问次数来进行反爬,再ipv6没有全面普及的时代,这个策略会很容易造成误伤。

反爬虫进进阶策略:

1.数据投毒,服务器在自己的页面上放置很多隐藏的url,这些url存在于html文件文件里面,但是通过css或者js使他们不会被显示在用户看到的页面上面。(确保用户点击不到)。那么,爬虫在爬取网页的时候,很用可能取访问这个url,服务器可以100%的认为这是爬虫干的,然后可以返回给他一些错误的数据,或者是拒绝响应。

爬虫进进阶策略:

1.各个网站虽然需要反爬虫,但是不能够把百度,谷歌这样的搜索引擎的爬虫给干了(干了的话,你的网站在百度都说搜不到!)。这样爬虫应该就可以冒充是百度的爬虫去爬。(但是ip也许可能被识破,因为你的ip并不是百度的ip)

反爬虫进进进阶策略:

给个验证码,让你输入以后才能登录,登录之后,才能访问。

爬虫进进进阶策略: 图像识别,机器学习,识别验证码。不过这个应该比较难,或者说成本比较高。  

你可能感兴趣的:(反爬虫策略)