常见的反爬策略及其破解方法

xiaoxiao2023-03-27  21

原创: 笔者 深度学习与图像目标检测

用爬虫抓取网站数据的时候,经常会突然发现抓不了数据,这就说明你的爬虫程序被对方服务器识别为爬虫了。大型的网站都会设定完备的反爬策略,来维护自身的信息,而一般对方服务器判断请求者是一个合法者,多通过User-Agent、IP、Cookies、数据加密等方式。下面针对这几种反爬策略,列出一些常用的破解反爬虫技术方案,供大家在设计爬虫时参考。

用户请求的Headers设置

     当用户访问一个网站时,网站会对Headers的User-Agent进行检测,还有一部分对Referer检测,当遇到这种反爬机制,在爬虫当中添加Headers请求头,将浏览器的请求信息以字典的数据形式添加到爬虫请求头部.一般通过浏览器调用键盘F12快捷键或者右键查看元素调出对一个网页的请求显示,然后点击Network即可查看当前User-Agent信息。做爬虫时最好随机切换不同的User-Agent,以便让服务器判断不是当前一个固定的浏览器访问。

     数据解密

有时候数据显示在页面对使用者来说是友好的,但对爬虫来说就糟糕了。然而有些数据是通过JS加密、Ajax请求来获取数据。有些通过javascript进行加密页面数据,这种只能找到加密代码进行处理,这种方案是最好、最快获取数据,但是破解难度较大,会花费相当多的时间。其中本人也遇到过这种网站。这种破解方案就是使用Selenium+PhantomJS,调用浏览器内核,使用Selenium模拟人为操作网页,并解析页面中的JS脚本,最终想获取的数据才能获取.这种操作几乎能破解大多数数据加密反爬虫,不过它的效率比较低。

验证码识别

 

     利用图片验证码防止爬虫也比较常见,常见12306网站验证码、网站登录图片验证、Google 验证码等等,目前对特别复杂的验证码没有很好的识别,只能通过第三方平台或者图像识别技术解决。常见的Python图片识别库包括Tesseract和其他第三方识别平台。

 

代理IP设置

 

     如果你的爬虫用固定的IP去抓取数据,不到一会也会被识别你是爬虫。网站通过检测访问者IP是否在一定时间进行大量访问,一旦被检测直接封杀。一般在请求的时候加入代理IP,网上大多数免费代理IP的可效性 比较低,最好使用购买代理,基本有效性90%以上。所以做爬虫系统,最好购买有效性比较高的代理IP,然后建立代理IP池,定时判断IP的有效性后,再添加代理进行抓取。

 

Cookies重置

 

     有些网站为了辨别用户身份,进行Session跟踪,服务器会向用户本地浏览器存储文本文件,当进行下次访问的时候,浏览器会自动带这个文件给服务器,服务器进行判断识别用户.所以服务器利用Cookies包含的信息判断在HTTP传输中的状态.Cookies最典型的应用判断是否已经登录和保留用户信息。

      一般反爬服务器也会对cookie进行时间有效设置,如果在有效期外,就不能抓取数据了。这种破解方式就要建立一个cookie池了,定时通过cookie池中的cookie去访问网站判断,如果失效,则往池里添加新的cookie信息,依次循环.

 

     本文粗略地介绍了以上几种反爬破解方案,几乎能破解90%以上的反爬。做爬虫应用,实际上就是和反爬策略角逐的过程,为了保证数据的有效性和价值,我们在设计爬虫时需要根据实际情况,采用相应的破解策略。

转载请注明原文地址: https://www.6miu.com/read-4988248.html

最新回复(0)