您的位置: 首页 > 新闻资讯 > 正文

常见反爬虫的破解方法

发布时间:2019-11-08 14:57:00 来源:

有爬虫存在,自然也会有反爬虫,这个一攻一防,你进我退,你退我进,仿佛一场持久战。黑洞代理下面将我们爬虫的时候最常会遇到的反爬类型介绍一遍,这样我们在遇到的时候,就可以对症下药。

常见反爬虫的破解方法

1、访问频率

很好理解,如果访问太频繁网站可能针对您的ip封锁一段时间,这和防DDoS的原理一样。对于网络爬虫来说,碰到这样的限制一下任务的频率就还可以了,还可以尽量让网络爬虫想人类一样访问网页(比如随机sleep一段时间,如果每隔3s访问一次网站很显然不是正常人的行为)。

2、通过Header封杀

一般浏览器访问网站会有header,比如Safari或者Chrome等等,还有操作系统信息。如果使用程序访问并不会有这样的header。破解也很简单,访问的时候加上header就行。

3、验证码

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

4、登录限制

也比较常见。不过公开信息的网站一般不会有这个限制,这样让用户也麻烦了。其实反抓取措施都或多或少的影响真实用户,反抓取越严格,误杀用户的可能性也越高。对网络爬虫来说,登录同样还可以通过模拟登录的方式解决,加个cookie就行了(话又说回来,网络的原理很重要)。

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

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

6、ip限制

网站可能将识别的ip永久封杀,这种方式需要的人力比较大,而且误伤用户的代价也很高。但是破解办法却非常简单。目前代理池几乎是搞网络爬虫的标配了,甚至还有很多高匿代理等好用的东西。所以这基本上只能杀杀小网络爬虫。

7、网站内容反抓取

有一些网站将网站内容用只有人类还可以接收的形式来呈现(其实反抓取就是区别对待人类和机器嘛)。比如将内容用图片的形式显示。但是近几年来人类和机器的差别越来越小,图片还可以用OCR准确率非常高地去识别。

反抓取总结:

网络爬虫和反抓取是典型的攻防双方的互相升级。但是黑洞代理认为,这种升级不像军事,军事是无尽头的,但是网络爬虫和反抓取是有尽头的。

网络爬虫的尽头就是浏览器,一旦使用浏览器,程序完全还可以模拟真实用户发出请求,缺点是就是消耗资源,因为需要新开一个进程,解析DOM,运行客户端JavaScript代码。(chrome的node api在github开源仅仅两天,就拿到8k个star)

反抓取的尽头就是像Google这种超级厉害的验证码,毕竟验证码的根本目的就是识别人类和机器的。

当然了,有一些保护措施非常严密的网站,要突破反爬虫起来是非常困难的,这就有待大神爬虫工程师来进行破除了。


相关文章内容简介

1 常见反爬虫的破解方法

  有爬虫存在,自然也会有反爬虫,这个一攻一防,你进我退,你退我进,仿佛一场持久战。黑洞代理下面将我们爬虫的时候最常会遇到的反爬类型介绍一遍,这样我们在遇到的时候,就可以对症下药。  1、访问频率  很好理解,如果访问太频繁网站可能针对您的ip封锁一段时间,这和防DDoS的原理一样。对于网络爬虫来说,碰到这样的限制一下任务的... [阅读全文]