参考资料:Python爬虫,你是否真的了解它?: https://www.bilibili.com/read/cv4144658
爬虫:通过计算机去获取信息,以节约人力成本,不节约的就不需要用了。
反爬虫的最终:区别计算机和人,从而达到,排除计算机的访问,允许人的访问。
最终结论:爬虫与反爬虫都是有尽头的。
爬虫的尽头就是极度模拟用户(自动化)。
反爬虫的尽头就是机器无法识别而人类可以识别的验证码。
所以,省事的话,不如只学一招自动化?好像也是可以,虽然就是慢了点。获取用自动化获取关键信息,然后再去并发请求。
常见的反爬虫措施:
1、访问频率
如果访问太频繁网站可能针对你的ip封锁一段时间,这和防DDoS的原理一样,对于爬虫来说,碰到这样的限制一下任务的频率就可以了,可以
让爬虫像人类频度一样访问网页,sleep个5秒10秒。
2、登录限制
公开信息的网站一般不会有这个限制,这样让用户也麻烦了。此处通过模拟登录避开,增加一个Cookies。
3、通过header封杀
增加一个header即可,可以通过faker随机生成一个请求头。
4、JavaScript脚本动态获取网站数据(升级)
有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JS程序,然后JS获取内容。更高级
的是,js在本地计算一个token,然后拿这个token来进行ajax后去内容。而本地的js又是经过代码混淆和加密的,这样会增加解析请求的难度。
不过直接模拟浏览器运行,则可以轻松破解。
5、验证码(终极武器)
验证码是专门用来区分人和计算机的手段。对于反爬来说,需要能解决验证码的问题。常见的验证码,Google的reCAPTCHA,极验。
6、ip限制
网站可能识别的ip永久封杀,这种方式需要的人力比较大,误杀用户代价很高。破解方法是使用代理池。
7、网站内容反爬
有一些网站将网站内容用只有人类可以接收的形式来呈现,比如将内容用图片的形式显示。图片识别可以使用ocr。比如:单一链接请求返回的数据
只是图片的一部分编码,需要多个url返回结果合并以后才能得到一个完整的图。