1. 基础检测
-
User-Agent 检测
- 策略:拦截无合法浏览器标识的请求。
- 应对:伪造常见浏览器的 User-Agent,并随机切换。
-
IP 频率限制
- 策略:封禁短时间内高频访问的 IP。
- 应对:使用代理 IP 池(如付费代理或 Tor 网络),并控制请求间隔。
2. 验证码系统
- 图片/滑动验证码
- 策略:在可疑流量时弹出验证码。
- 应对:
- OCR 识别简单验证码(如 Tesseract)。
- 第三方打码平台(如 2Captcha)。
- 模拟人工操作(如 Selenium)。
3. 动态内容加载
-
JavaScript 渲染
- 策略:数据通过 JS 动态加载,源码中不可见。
- 应对:使用无头浏览器(如 Puppeteer、Playwright)或解析 JS 请求。
-
接口参数加密
- 策略:API 请求含加密 Token 或时间戳。
- 应对:逆向分析 JS 代码,复现加密逻辑(如 Python 调用 PyExecJS)。
4. 行为分析与陷阱
-
操作轨迹监测
- 策略:检测鼠标移动、点击频率等人类特征。
- 应对:模拟随机延迟、页面滚动等行为。
-
Honeypot 陷阱
- 策略:隐藏不可见链接(如 CSS 设为
display: none
)。 - 应对:过滤
visibility: hidden
或opacity: 0
的元素。
- 策略:隐藏不可见链接(如 CSS 设为
5. 高级反爬手段
-
字体反爬
- 策略:自定义字体混淆文字显示(如数字“5”显示为“三”)。
- 应对:解析字体文件(如
fonttools
库)建立字符映射。
-
WebSocket 指纹检测
- 策略:通过 Canvas/WebGL 指纹识别浏览器唯一性。
- 应对:修改浏览器指纹(如使用 stealth 插件)。
6. 账号与登录限制
-
登录态验证
- 策略:需登录后才能访问数据。
- 应对:模拟登录流程(处理 Cookie、JWT 等)。
-
API 签名验证
- 策略:请求需携带动态签名(如 MD5 加密参数)。
- 应对:逆向 APP 或网页 JS 生成签名。
反爬注意事项
- 法律合规:遵守
robots.txt
协议及数据隐私法规(如 GDPR)。 - 道德考量:避免对目标服务器造成过大负载。
- 成本权衡:复杂反爬需评估时间与经济成本(如验证码识别费用)。
通过结合技术手段(如动态代理、浏览器模拟)与策略调整(如降速、随机化),可有效应对多数反爬机制,但需持续适配网站更新