爬虫 -- 反爬

反爬的三个方向

基于身份识别进行反爬

身份识别

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请求两次参数的不同点

第一次:

爬虫 -- 反爬_第1张图片

 第二次:

爬虫 -- 反爬_第2张图片

  这里可以发现,password是经过处理之后的密码。但是被加密处理,需要找到加密过程的js文件:

1 通过initiator定位到js文件

2 通过search搜索关键字定位到js 文件

3 通过元素绑定的事件监听函数找到js文件

找到文件后分析js代码,掌握加密步骤,模拟加密步骤,使用Python的方法重现

1 通过第三方js加载模块直接加载js运行

2 Python重现

js2py

一个js的翻译软件,也是通过纯Python实现的js解释器

你可能感兴趣的:(爬虫)