反爬的三个方向
基于身份识别进行反爬
身份识别
headrs中的User-Agent,referer,cookie进行反爬
cookie:进行模拟登录,成功获取cookies之后再进行数据爬取
请求参数
1,从HTML文件中提取
2,发送请求获取数据
3,通过js生成(分析js,观察加密的实现过程,通过js2py获取就是的执行结果,或者用selenium)
4,通过验证码(第三方平台。或者机器学习(不推荐))
基于爬虫行为进行反爬
请求或总请求数量
(通过购买高质量的ip和账号来解决,同时设置随机休眠)
1 基于请求ip、账号单位时间内的总请求数量进行反爬
2通过同一账号/ip请求之间的间隔进行反爬
3通过对账号/ip每天请求的次数设置阈值进行反爬
根据爬取行为进行反爬,通常在爬取步骤上做分析
1通过js实现跳转来反爬(多次抓包获取条状URL,分析规律)
2通过陷阱获取爬虫ip反爬(前端通过style=‘display:none’设置陷阱,正常用户不会访问到,写完爬虫后用ip测试)
3通过假数据反爬(长期运行,核对数据情况)
4阻塞任务队列(通过观察分析源码获取垃圾url生成规则,对URL进行过滤)
5阻塞网络(审查链接,多线程对请求线程计时)
基于数据加密进行反爬
1 通过自定义字体加密(切换到手机版/使用字体翻译软件)
2 css数据偏移(数据解析时偏移回来)
3 js动态生成数据进行反爬(解析关键js,获得数据生成流程,模拟生成数据)
4 通过数据图片化反爬(通过使用图片解析引擎从图片中解析数据)
5 通过编码格式反爬(根据源码进行多格式解码)
验证码处理
图像识别引擎
from PIL import Image
import pytesseract as pyt
im = Image.open('test.png')
result = pyt.image_to_string(im)
print(result)
打码平台
js解析
通过两次登录找到登录接口,分析post请求两次参数的不同点
第一次:
第二次:
这里可以发现,password是经过处理之后的密码。但是被加密处理,需要找到加密过程的js文件:
1 通过initiator定位到js文件
2 通过search搜索关键字定位到js 文件
3 通过元素绑定的事件监听函数找到js文件
找到文件后分析js代码,掌握加密步骤,模拟加密步骤,使用Python的方法重现
1 通过第三方js加载模块直接加载js运行
2 Python重现
js2py
一个js的翻译软件,也是通过纯Python实现的js解释器