Python爬虫之反爬虫

樵夫2021-12-24 12:55

  这也是一个深刻的话题,就像攻击武器和防御武器一样,双方总是在升级。常见的反爬措施(我遇到过)如下:

Python爬虫之反爬虫

  1、访问频率。

  很容易理解,如果访问太频繁,网站可能会对你的ip进行一段时间的封锁,这DOS的原理是一样的。对于爬虫来说,限制任务频率是可以的,爬虫可以尽量像人类一样访问网页(比如随机sleep一段时间,每3s访问一次网站显然不是正常人的行为)。

  2、登录限制。

  它也很常见。然而,披露信息的网站通常没有这种限制,这使得用户感到麻烦。事实上,反爬行措施或多或少会影响真实用户。反爬行越严格,误杀用户的可能性就越高。对于爬虫来说,登录也可以通过模拟登录来解决。只需添加一个cookie(另一方面,网络的原理非常重要)。

  3、通过Header封杀。

  一般浏览器访问网站会有header,如Safari或chrome,以及操作系统信息。如果使用程序访问,就不会有这样的header。破解也很简单。访问时添加header。

  4、JavaScript脚本动态获取网站数据。

  有些网站(尤其是单页网站)的内容不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更先进的是,JavaScript在本地计算一个token,然后用这个token进行AJAX获取内容。本地JavaScript被代码混淆和加密,所以我们爬虫几乎不可能通过查看源代码来模拟这个请求(主要是token不可能破解),但我们可以从另一个角度:headless浏览器,也就是我们直接运行这个客户端程序,可以100%模拟真实用户!

  5、验证码

  这几乎是终极武器,验证码是专门用来区分人和计算机的手段。对于反爬方来说,这种方法对真实用户和搜索引擎(其实可以通过记录搜索引擎爬虫的ip来区分和解决)有很大的危害。相信读者都有输入验证码的痛苦经历。但是这个方法不是无敌的!通过现在流行的机器学习,大部分验证码都可以轻松识别!谷歌的reCAPTCHA是一个非常先进的验证码,但也可以通过模拟浏览器破解。

  6、ip限制。

  该网站可能会永久禁止识别的ip,这需要大量的人力,而且意外伤害用户的成本也很高。但破解方法非常简单。目前,代理池几乎是爬虫的标准配置,甚至有很多有用的东西,如高匿代理。所以这基本上只能杀死小爬虫。

  7、网站内容反爬。

  有些网站以只有人类才能接受的形式呈现网站内容(其实反爬就是区别对待人类和机器)。例如,以图片的形式显示内容。然而,近年来,人类和机器之间的差异越来越小,图片可以通过OCR的准确性来识别。

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

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