3.4 KiB
3.4 KiB
name, version, description
| name | version | description |
|---|---|---|
| anti-scraping | 4.0.0 | 为 PHP Hyperf + Vue 3 应用设计反爬虫防护。当需要防御 Bot、限流或保护 API 时使用。覆盖五个威胁层级。 |
🛡️ Anti-Scraping Protection — 全栈防爬体系
威胁分级与对应策略
| 等级 | 爬虫类型 | 典型工具 | 主要特征 | 防护策略 |
|---|---|---|---|---|
| T1 | 简单脚本 | curl, wget, Python requests | 无 JS 执行,缺失必要 Header | UA 过滤 + Header 检查 |
| T2 | 爬虫框架 | Scrapy, Playwright (无配置), httpx | 自动处理 Cookie 但行为机械 | Header 指纹 + 速率限制 |
| T3 | 无头浏览器 | Puppeteer, Playwright (配置过) | 执行 JS 但 Canvas/WebGL 异常 | 浏览器指纹 + 行为分析 |
| T4 | 分布式集群 | 自建集群 + 代理池 + UA 轮换 | 跨 IP 协同,单 IP 请求少 | 关联分析 + 蜜罐 + PoW |
| T5 | AI 代理 | LLM 控制的浏览器 / GPT 插件 | 接近真实用户但行为规律性高 | 多维指纹 + CV 分析 + 挑战 |
触发条件
用户询问防爬虫、限流、Bot 防护、爬虫识别、AI 爬虫、Scrapy 等关键词。
执行流程
Phase 0:威胁评估
在实施前回答以下问题,确定防护等级:
| 问题 | 回答影响 |
|---|---|
| 保护目标?(API / 页面内容 / 数据资产) | 决定防护位置(Nginx / Middleware / Frontend) |
| 可接受的误伤率?(0.1% / 0.5% / 1%) | 决定阈值设定的松紧 |
| 是否有 CDN/WAF? | 可借用 WAF 能力,减少自研成本 |
| 业务是否允许验证码? | 影响 CAPTCHA 降级策略 |
| 需要保护登录后内容还是公开内容? | 决定是否使用前端指纹 Token |
Phase 1–4:前置与基础防护
- Phase 1 Nginx — UA 黑名单 map、limit_req/limit_conn,直接拒绝已知 Bot
- Phase 2 指纹 — RequestFingerprintMiddleware 检查 UA/Header/Accept/Referer,输出 risk_score
- Phase 3 限速 — RateLimitService 分层限速 + 请求间隔变异系数分析(CV)+ 子网关联分析
- Phase 4 IP — IpIntelligenceService 黑/白名单、TOR、数据中心、爬取广度(HyperLogLog)
Phase 5–6:高级识别
- Phase 5 浏览器指纹 — 前端采集 Canvas/WebGL/音频/字体/鼠标,后端校验无头特征
- Phase 6 AI 代理 — 请求间隔 CV、只读模式、速度、UA 与语言不匹配
Phase 7–9:对抗与响应
- Phase 7 PoW — 工作量证明挑战,真实用户 JS 自动计算
- Phase 8 蜜罐 — 前端隐藏字段 + 后端蜜罐路由
- Phase 9 综合 — AntiScrapingMiddleware 加权评分,差异化响应(封禁 / PoW / 延迟 / 假数据)
验证清单
curl请求 3 次内触发 403 或 429- Python
requests默认 UA 被 Nginx 直接拒绝 - Scrapy 爬取 100+ 页面被封 IP
- Puppeteer(无反指纹)指纹得分 ≥ 60,触发挑战
- 均匀间隔请求(CV < 0.2)被 AI 行为分析识别
- 蜜罐路由访问后 IP 被封
- PoW 挑战前端正确求解(difficulty=4,约 2 秒内完成)
- 同 /24 子网 500+ 请求触发代理池标记
- 正常用户误触率 < 0.2%
Tier 3 深度参考
| 文件 | 内容 |
|---|---|
references/implementation-phases.md |
Phase 1–9 完整实现代码与 Redis 监控 |
references/anti-scraping-patterns.md |
反爬模式与策略速查 |