本章主要讲解目前常见的反爬虫和反反爬虫技术,但并不会过多的涉及到具体的技术,仅仅作为科普,或者是同学们今后继续学习的一个方向。也欢迎各位同学在讨论区和我一起交流爬取技术的心得体会。
”反爬虫“从字面上就很好理解:防止爬虫的人员爬取网站的内容。爬虫技术无疑为我们提供了很多便利,但是对于网站来说,自己的内容被别人爬取,不仅一点利益都没有,甚至还要消耗大量的流量,这无疑是网站拥有者无法忍受的。因此,就出现了“反爬虫”技术。
对于网站拥有者来说,爬虫是最让他们“讨论”的东西,主要的原因是网站公开的免费信息被批量抓取后,就会丧失相应的竞争,从而减少了盈利。而就目前国内的情况来说,尚没有相应的法律法规,能够定义爬取网站的信息是否涉嫌违法。也就是说,爬虫在国内是个擦边球——有可能起诉成功,也有可能完全无效。因此,发爬虫技术相应而生——它是防止爬虫在网站上肆意妄为、为网站拥有者坚守利润点的最后的保障。
除了上面提到的利益问题。反爬虫还有以下几种的目的:
解决方法:目前的解决方法,大部分是首先对图像进行处理,然后模拟人工滑动的方式。(难)
9. 发送错误信息
当网站识别出发出的请求是来自于爬虫程序的,并不会拒绝连接,而是为该请求提供一个错误的信息或者数据,一方面让爬虫程序误认为爬取到了想要的数据,另一方面,也降低了服务器的请求压力。
解决方法:抽取50%或者以上的数据进行抽查或者再次爬取。
10. 行为识别
目前大型的网站,例如阿里巴巴等,会对用户在网站上操作的每一个动作进行判断。当用户的动作具有间歇性、鼠标停留时间等特征与正常访问时的数据产生误差时,系统会判定为爬虫程序,并且拒绝相应的请求。
解决方式:通过Selenium和phantomjs完全模拟浏览器进行操作。
11. 重要数据图像化
网站在传输数据之前,将数据编码为图片的格式,通过图片来展示认为重要的数据。
解决方式:使用OCR识别技术,识别图像中的数据。(难)
爬虫与反爬虫本身就是一种“对抗性”的技术。
正所谓“道高一尺,魔高一丈”。反爬虫技术的出现,往往会导致反反爬虫技术的“问世”。作为一名爬虫工程师,我们要意识到,目前的反爬虫技术,已经逐渐从当初普通的限制IP,变为现在的验证信息的方法进行发展——事实上,目前爬虫技术通过IP代理技术,可以完全无视限制IP的约束。但是,像是“滑动滑块”、“点击对应的文字”等具有动作判定的反爬虫技术,我们并没有什么特别好的办法,只能一点一点的去模拟,去猜测动作判定的标准——而标准会随时因为提供商的升级进行改变。
作为新手的我们,需要记住应对反爬虫的策略最重要的一点是:了解网站的反爬虫手段是什么?在分析网站反爬虫的这个过程中,是一个不断测试、不断分析的过程。弄清楚网站的反爬虫机制后,我们就成功了一大半了。