python 爬虫常见的反爬策略与反爬攻克
爬虫基本对所有人来说,都是又爱又恨,爱恨交织的。由于网络的开放性,只要是连上了网线,那么就没有绝对的封闭,而爬虫基本可以说是无物不爬,总会有误爬的情况,或者爬取了相对来说不希望公开或者不希望他人知道的比较私密的信息,但另一方面,网络的参与者又希望有爬虫能爬取它,进而推广它自身,好像,蚂蚁与蜂蜜的关系,甜蜜而又危险?
比如说,音视频类网站并不希望爬虫能够爬取它的核心音视频,销售类网站并不希望太多人知道它的经营规则,但它希望更多的人知道它的商品。根据自身的对数据方面的需求,网络参与者对其自身的数据的敏感度是不一样的,因此,有的网站可能不止一条反爬策略,而有的网站可能会很少的反爬策略或者完全不限制爬虫。
- 常见的反爬策略大概有六种,下面简单介绍各个反爬策略以及大体的反爬攻克:
- 1.UA的限制和其他头信息的限制
- ===============================================================
-
以上是一个头信息,可以看到有很多项目,常见限制是User—Agent,当然,别的选项也是可以限制的,Request URL: https://www.hao123.com/favicon.ico Request Method: GET Status Code: 200 OK Remote Address: [2409:8c1e:8f51:2:0:ff:b027:45ce]:443 Referrer Policy: unsafe-url Accept: image/webp,image/apng,image/*,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cache-Control: no-cache Connection: keep-alive Cookie: BAIDUID=B7049FABC5FF6B6555AFCBC82D94C869:FG=1; s_ht_pageid=16; v_pg=normal; hz=0; Hm_lvt_0703cfc0023d60b244e06b5cacfef877=1586449446,1586657441,1586772093,1586799709; ft=1; hword=15; org=1; Hm_lpvt_0703cfc0023d60b244e06b5cacfef877=1586963371; tnwhiteft=XzFYUBclcMPGIANCmytknWnBQaFYTzclnHR3PWbvn1R1nLY; __bsi=10426945379818777506_00_25_R_R_13_0303_c02f_Y Host: www.hao123.com Pragma: no-cache Referer: https://www.hao123.com/ User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400
- 因此解决方案为构建用户代理池,以及其他相对应的头信息
- 2.。对访问者的IP进行限制,比如,频繁爬取某些网站,可能具有IP黑名单,将爬虫关入小黑屋,或者暂时的但频繁的封禁爬虫IP
- 因此,解决方案为构建IP代理池
- 3。验证码限制,比如,验证码难度提高,类似12306?
- 解决方案为找专业打码公司购买服务,使用其提供的验证码接口,提高识别成功率,比较少量的爬虫任务,手工打码,或者使用机器学习,自动识别验证码
- 4。数据的异步加载限制,通过各种异步加载技术,延迟数据的读取,或者重定向到虚构的URL,从而隐藏真实的数据。
- 解决方案:使用网络抓包工具,分析数据流量。
- 5,。cookie的限制
- 解决方案:爬取时处理cookie
- 6.js限制,通过js脚本改变每次请求的参数,也就是每一次爬取数据都是在变,或者数据有js加密。
- 解决方案:js反向解析
- 这些反爬策略,可以看出 依次难度递增,在实际爬取中,相对来说,最难的是3和6,其次是5.