如何规避网站反爬虫检查

2,340 阅读3分钟

有的时候,我们爬取网页的时候,会出现403错误,因为这些网页为了防止别人恶意采集信息,所以进行了一些反爬虫的设置。
那我们就没办法了吗?当然不会!

一、如何发现自己可能被网站识别了

 1、CAPTCHApages (captcha,验证码)

 2、Unusualcontent delivery delay (响应时间、速度变慢了)

 3、Frequentresponse with HTTP404,301 or 50x errors

 (1)301 MovedTemporarily

 (2)401unauthorized

 (3)403forbidden (aAatch处理的)

 (4)404 notfound

 (5)408 requesttimeout

 (6)429 too manyrequests

 (7)503 serviceunavailable (ip层)

 二、好的规避反爬虫检查的方法

 (一)多主机策略;(客户端多主机或者服务器多主机)

 (二)爬得慢一点,不要攻击主机,如果发现被阻止,立即降低访问频次,设计得smart一点,来找到访问频次限制的临界点;

 1.尽量减少请求次数,能抓列表页就不抓详情页
 2.不要只看 Web 网站,还有 App 和 H5,他们的反爬虫措施一般比较少
 3.如果真的对性能要求很高,可以考虑多线程(一些成熟的框架如 scrapy都已支持),甚至分布式

 (三)通过变换 IP 或 代理服务器 来掩饰; 很多网站在不同的地方都有不同的服务器(IP不同),这时即可通过动态切换IP去访问同一个网站,以解决访问频次或流量限制的问题。

 寻找分布式服务器:“站长之家”网站里面查找一些网站的分布式服务器部署IP的情况,用IP进行访问。

 在全球有很多站点,怎样获得站点?搜索“顶级域名”,把结果复制出来,即可。

 动态IP切换技术:

 1.为什么要使用IP代理?

 为了防止IP访问频繁而被封掉,如果用100个代理IP访问100个页面,可以给网站造成一种有100个人,每个人访问了1页的错觉。这样自然而然就不会限制你的访问了

 2.如何防止IP被封?

  • 设置延迟:time.sleep(random.randint(1,3));
  • 使用IP代理,让其他的IP代替你的IP访问页面;

 3.如何获取代理IP?
 www.xiongmaodaili.com/ (熊猫代理网站提供)

  • ProxyHandler ----> Request()
  • Opener ----> urlopen()
  • 安装Opener

 4.如何检测代理是否成功?
 测试网址:2019.ip138.com/ic.asp

 (四)把爬虫放到访问频繁的主站IP的子网下,例如教育;

 (五)频繁改变自己的User-Agent;

 常见模拟浏览器的信息:
 1.Android

  • Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
  • Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
  • Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

 2.Firefox

  • Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
  • Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0

 3.Google Chrome

  • Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
  • Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19

 4.iOS

  • Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

 (六)探测陷阱,比如nofollow的tag,或者display:none的CSS;

 aws(业务流程管理开发平台):AWS BPM业务流程管理开发平台是一个易于部署和使用的业务流程管理基础平台软件,AWS平台提供了从业务流程梳理、建模到运行、监控、优化的全周期管理和面向角色的BPMTotal Solution。

 (七)如果使用了规则(pattern)来批量爬取,需要对规则进行组合;

 (八)如果可能,按照Robots.txt定义的行为去文明抓取。