随着抓取的数据量到一定程度,数据重复及爬取过程中的死链问题会凸显。怎么来解决反爬问题呢? 一、 网站如何发现爬虫一般来说,网站会有以下一些简单的策略发现爬虫程序: 1)单一IP非常规的访问频次; 2)单一IP非常规的数据流量; 3)大量重复简单的网站浏览行为,只下载网页,没有后续的JS,CSS请求; 5)通过一些陷阱来发现爬虫,例如一些通过CSS对用户隐藏的链接,只有爬虫才会访问; 二、网站如何进行反爬一般来说网站会采用下面两个简单的策略来防止爬虫: 1.大量使用动态网页,是的爬虫的爬取难度增加,重要数据都拿不到,即使爬虫采用了Web环境来渲染(内置浏览器),也会大大增加爬虫的负担和爬虫时间;(当然,采用动态加载的技术,对服务器的负担也会大大减轻) 2.基于流量的拒绝: 开启带宽限制模块,限制每个IP最多连接数,最大带宽等; 三、爬虫如何发现自己可能被网站识别了如果爬取过程中出现以下情况,那么小心了,你的爬虫可能被网站发现了: 1.验证码出现; 2.Unusual content delivery delay 非常规的延时; 3.Frequent response with HTTP 403, 404, 301 or 50x error; 四、 爬虫应对反爬的策略我们可以从以下几个方面来考虑应对反爬: 1)User-Agent池; 2)代理服务器池; 3)CookieJar等的管理; 4)协议的细节考虑,如:需要大量的实践经验总结的 抓取数据时不处理CSS,JS等; nofollow属性;css的display属性;探测陷阱; 验证refer locator等; 5)使用分布式的多机策略;爬慢点,把爬虫放到访问频繁的主站IP子网下,如教育网; 6)使用了各种规则来尝试批量爬取,然后对规则动态进行组合; 7)验证码的搞定:机器学习,图像识别; 8)尽可能遵守 总结以上文章主要面对初级及中级爬虫工程师的参考资料。由于本人能力及知识有限,目前只能总结到这里。但是关于爬虫的知识和技术,互联网知识和技术更新换代非常快。后期本人会尽我所能,根据实际工程需要,增加新的实用的知识。 |
|
来自: zhulin1028 > 《待分类》