chapet13-常见的反爬虫和反反爬虫技术

本章主要讲解目前常见的反爬虫和反反爬虫技术,但并不会过多的涉及到具体的技术,仅仅作为科普,或者是同学们今后继续学习的一个方向。也欢迎各位同学在讨论区和我一起交流爬取技术的心得体会。
”反爬虫“从字面上就很好理解:防止爬虫的人员爬取网站的内容。爬虫技术无疑为我们提供了很多便利,但是对于网站来说,自己的内容被别人爬取,不仅一点利益都没有,甚至还要消耗大量的流量,这无疑是网站拥有者无法忍受的。因此,就出现了“反爬虫”技术。

为什么要反爬虫?

对于网站拥有者来说,爬虫是最让他们“讨论”的东西,主要的原因是网站公开的免费信息被批量抓取后,就会丧失相应的竞争,从而减少了盈利。而就目前国内的情况来说,尚没有相应的法律法规,能够定义爬取网站的信息是否涉嫌违法。也就是说,爬虫在国内是个擦边球——有可能起诉成功,也有可能完全无效。因此,发爬虫技术相应而生——它是防止爬虫在网站上肆意妄为、为网站拥有者坚守利润点的最后的保障。

反爬虫的目的

除了上面提到的利益问题。反爬虫还有以下几种的目的:

  1. 破坏了网站的正常访问
    常见于初学者(特指我们)。作为一名新手,我们往往兴奋于自己能够爬取一个网页的信息,但是却没有考虑到网站服务器的压力。如果我们爬取之后还没有断开连接,服务器认为你还有相关的服务需求,因此一直进行响应。这样无疑会降低网站服务器的正常处理速度。
  2. 保护数据
    常见于专业性网站。作为一个专业性的网站,通常存储着具有自己特色或者是处理后的数据,这些数据虽然已经公开了,但是网站拥有者并不愿意将这些数据被别人爬取。
  3. 防止商业竞争
    常见于商业网站。举个最简单的例子,我们经常看到“双十一”这种节日中,某些电商打出“全网最低价,不是最低赔十倍”的口号。如果一个电商能够爬取到另一位竞争电商的销售信息,并且进行针对性的策略,那么无疑会对对手产生很大的冲击。
常见的反爬虫技术和反反爬虫技术
  1. 限制IP
    当网站发现某个IP访问的速度不仅飞快,而且都是在同一个IP段的时候,会认为该IP在进行爬虫操作,因此会对该IP进行限制访问,拒绝传输数据。
    解决方法:首先通过设置User-Agent来模拟正常的访问流程,同时通过获取代理IP来爬取数据。
  2. 必须登录才能访问
    我们在之前的文章中,通过设置User-Agent模拟浏览器,让服务器认为我们是一个正常的访问过程。当网站发现服务器压力非常大,而且都是正常的User-Agent时,往往会对部分比价重要的数据,设置为必须登录才能访问。
    解决方法:我们可以首先注册一个账号,带上账号的Cookie爬取数据
  3. 使用验证码验证登录
    网站使用验证码进行登录验证,查看网站必须在登录界面输入相应的验证码才能够访问。
    解决方法:使用机器学习算法,对验证码进行训练。或者是通过打码平台以及人工打码的方式进行处理。(难)
  4. 使用异步加载的方式加载数据
    网站的数据并不全部加载,只有当用户查看到最底部时,网站才会将剩下的数据加载出来。
    解决方法:正如我们之前学到的一样,Ajax技术的确难以处理。我们需要通过不断地请求,去分析其规律,根据规律模拟出Ajax所求情的网页链接。
  5. 滑动滑块
    目前比较流行的验证方法。即只有用户通过鼠标,将一部分的图像移动到对应的区域,才能够正常访问,如下图所示:
    chapet13-常见的反爬虫和反反爬虫技术_第1张图片

解决方法:目前的解决方法,大部分是首先对图像进行处理,然后模拟人工滑动的方式。(难)
9. 发送错误信息
当网站识别出发出的请求是来自于爬虫程序的,并不会拒绝连接,而是为该请求提供一个错误的信息或者数据,一方面让爬虫程序误认为爬取到了想要的数据,另一方面,也降低了服务器的请求压力。
解决方法:抽取50%或者以上的数据进行抽查或者再次爬取。
10. 行为识别
目前大型的网站,例如阿里巴巴等,会对用户在网站上操作的每一个动作进行判断。当用户的动作具有间歇性、鼠标停留时间等特征与正常访问时的数据产生误差时,系统会判定为爬虫程序,并且拒绝相应的请求。
解决方式:通过Selenium和phantomjs完全模拟浏览器进行操作。
11. 重要数据图像化
网站在传输数据之前,将数据编码为图片的格式,通过图片来展示认为重要的数据。
解决方式:使用OCR识别技术,识别图像中的数据。(难)

总结

爬虫与反爬虫本身就是一种“对抗性”的技术。
正所谓“道高一尺,魔高一丈”。反爬虫技术的出现,往往会导致反反爬虫技术的“问世”。作为一名爬虫工程师,我们要意识到,目前的反爬虫技术,已经逐渐从当初普通的限制IP,变为现在的验证信息的方法进行发展——事实上,目前爬虫技术通过IP代理技术,可以完全无视限制IP的约束。但是,像是“滑动滑块”、“点击对应的文字”等具有动作判定的反爬虫技术,我们并没有什么特别好的办法,只能一点一点的去模拟,去猜测动作判定的标准——而标准会随时因为提供商的升级进行改变。
作为新手的我们,需要记住应对反爬虫的策略最重要的一点是:了解网站的反爬虫手段是什么?在分析网站反爬虫的这个过程中,是一个不断测试、不断分析的过程。弄清楚网站的反爬虫机制后,我们就成功了一大半了。

你可能感兴趣的:(Python,爬虫从入门到精通,爬虫,python,后端)