Python爬虫之反爬虫技术

村口二丫2021-12-24 12:55

  一般网站从三个方面反爬虫:1、用户要求的Headers,2、用户行为,3、网站目录和数据加载方法。

Python爬虫之反爬虫技术

  前两种更容易遇到,大多数网站都从这些角度反爬虫。第三种是使用ajax的网站,这增加了爬行的难度(防止静态爬虫使用ajax技术动态加载页面)。

  1、从用户要求的Headers反爬虫是最常见的反爬虫策略。

  伪装header。许多网站会检测Headers的优步-Agent,一些网站会检测Referer(一些资源网站的防盗链是检测Referer)。如果遇到这种反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名[评论:往往容易被忽略。通过对请求的抓包分析,确定referer,并在程序中模拟访问请求头中添加]。对于检测Headers的反爬虫,在爬虫中修改或添加Headers可以很好。

  2、根据用户行为反爬虫。

  也有一些网站通过检测用户行为,比如同一IP在短时间内多次访问同一页面,或者同一账户在短时间内多次进行同一操作。[这种防爬行需要足够的ip来处理]

  (1)、大部分网站都是前一种情况。对于这种情况,可以通过使用IP代理来解决。可以写一个爬虫,爬上网上公开的代理ip,检测后全部保存。有了大量的代理ip,你可以要求每次更换一个ip几次,这在requests或urlib中很容易做到,这样你就可以轻松绕过第一个反爬虫。

  (2)。对于第二种情况,下一个请求可以在每个请求之后随机间隔几秒钟。一些有逻辑漏洞的网站可以通过请求几次退出登录,重新登录,并继续绕过同一账号,不能在短时间内多次执行同一请求的限制。【评论:一般很难处理账户的防爬限制,随机几秒的请求往往可能会被屏蔽。如果能有多个账户,切换使用效果更好】

  3、动态页面的反爬虫。

  以上情况大多出现在静态页面和一些网站上。我们需要爬行的数据是通过ajax请求或Java生成的。

  解决方案:Selenium+PhantomJS。

  Selenium:自动web测试解决方案,完全模拟真实的浏览器环境,完全模拟基本上所有用户的操作。

  PhantomJS:一个没有图形界面的浏览器。

  总结如图:

Python爬虫之反爬虫技术

  以上就是小编为大家整理发布的“Python爬虫之反爬虫技术”一文,更多相关内容尽在开课吧广场Python教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享