一、反爬体系要做什么
完整的反爬体系有三大部分工作要做:感知识别、策略分析、监控封禁。
(一)感知识别:
- 数据支撑:爬虫指纹、设备指纹、风险UA、IP库等,不同端指纹的mapping等。
- 数据感知,什么人,通过什么方式,用什么爬虫,在什么时间,爬取了我们什么内容。
(二)策略分析:
- 事前策略:通过技术手段,在源头使攻击者无法爬取。
- 事后策略:指感知到有爬虫事件后,采取的封禁、验证码等组合策略。
(三)识别封禁:
- 离线识别:通过数据埋点监控,可离线分析爬虫情况,实时性差,但对业务无任何影响。
- 在线识别:在线检测服务,在业务关键节点,调用在线检测服务,实时感知爬虫情况。
- 离线阻断:离线分析后,根据策略筛选出要封禁的IP、UA、Session、userid等,调用封禁服务统一封禁。
- 在线阻断:在线检测到爬虫行为后,直接调用封禁服务阻断爬虫。
二、反爬策略有哪些
(一)事前策略:
- js计算:js添加简单的数学计算,要求浏览器计算结果之后,返回给后端校验计算结果,来识别是否是爬虫行为。
-
js生成动态url:
- 生成动态参数:访问页面,先返回js脚本,js生成一个新参数,加入原请求中,再访问,才可得到数据。
- 生成动态地址:访问页面,先返回js脚本,js生成新接口地址,再访问新接口,才可得到数据。
- js生成动态页面:动态生成js标签
- 因为js对用户是可见的,所以要尽量提升攻击成本,要写难懂的js,比如大量使用eval和goto,比如做js混淆、js压缩等。
(二)事后策略:
-
阈值封锁
- IP维度:常见,但有两个缺陷:容易误伤普通用户,容易被绕过。
- Session或uid等维度:需要考虑不同业务的Session或uid逻辑,是否唯一稳定?是否非空?
- UA维度:误杀非常严重,除非能准确识别爬虫UA。
- 设备指纹:PC、APP、小程序。
- 投毒:命中相应策略后,后端给前端反回一定比例的假数据。
- 验证码:图形、划动、短信、人脸、声纹。
- 加密:app参数加密,PC小程序前后端加密。前端加密需要做js混淆等处理。
三、反爬架构什么样
- 数据支撑平台:通过埋点、采集等方式接入各类维度的基础数据和第三方指纹sdk,封装成统一的数据输出形式。数据输出可以接口、db、log等不同形式。
- 数据分析平台;输入支撑数据,输出爬虫画像。
- 策略分析平台:输入爬虫画像,采取不同策略,输出策略分析结果。
- 上报阻断平台:输入策略分析结果,上报给运维,做阻断。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。