本文目录导读:

针对爬虫扫描行为的封禁,通常需要结合技术手段、策略配置和业务逻辑来构建多层次的防御体系,以下是分阶段的封禁方案,涵盖了从基础到高级的策略:
第一阶段:基础防御(面向简单/低劣爬虫)
这类爬虫通常不伪装头部、请求频率过高、或使用固定的User-Agent。
-
封禁恶意User-Agent
- 操作:在Web服务器(Nginx/Apache)或WAF(Web应用防火墙)中,直接拒绝包含
python-requests、Go-http-client、curl、wget等典型爬虫标识的请求。 - 注意:合法的搜索引擎爬虫(如Googlebot)需放行,且不能误伤真实用户。
- 操作:在Web服务器(Nginx/Apache)或WAF(Web应用防火墙)中,直接拒绝包含
-
限制单IP请求频率
- 操作:在Nginx(配合
limit_req模块)、负载均衡或WAF中设置速率限制。- 同一个IP每秒最多请求10次。
- 同一个IP每分钟最多请求200次。
- 弱点:爬虫易通过代理IP池绕过,对分布式扫描效果有限。
- 操作:在Nginx(配合
-
处理异常的HTTP请求头
- 操作:检查
Accept-Language、Referer、Accept-Encoding等字段,爬虫常漏填、乱填(如Accept字段缺失,或User-Agent与操作系统版本矛盾)。 - 工具:编写规则(如nginx map)或使用WAF自定义规则识别异常特征。
- 操作:检查
第二阶段:中级防御(面向中等伪装爬虫)
这类爬虫会模仿浏览器头部,但行为模式异常。
-
基于行为的实时限流与禁令
- 操作:统计单IP/单Session在短时间内的访问路径数量,如果10秒内请求了50个不同URL,极可能是扫描。
- 工具:编写计数器(如使用
Redis+ 滑动窗口),记录每个IP访问的不同URI数量。
-
强制JavaScript挑战(JS Challenge)
- 原理:服务器返回一段静默的JS代码,要求浏览器执行并计算出一个hash值并返回,真实浏览器可自动执行,而爬虫(尤其基于HTTP库的)无法执行。
- 工具:
- Nginx的
http_javascript_module(很少用)。 - Cloudflare的“5秒盾”或“Under Attack”模式。
- 自研中间件(返回包含验证码计算的小型JS)。
- Nginx的
-
Cookie验证与挑战
- 操作:首次访问时设置一个动态生成的、与IP、时间绑定的Cookie,后续请求必须携带该Cookie且验证通过,爬虫如果不处理Cookie(或处理不当)会立即被拒绝。
- 注意:需保持Cookie有效期,防止合法用户反复验证。
-
图形验证码(CAPTCHA)
- 触发条件:针对同一IP达到一定访问次数(如30次/分钟)后,弹出验证码。
- 形式:简单滑块、点选、或简短文字(避免OCR难破解的复杂图,影响用户体验)。
第三阶段:高级/智能化防御(面向专业爬虫)
这类爬虫使用无头浏览器(Puppeteer、Playwright)、真实IP池,甚至模拟用户行为。
-
设备指纹与行为分析
- 操作:收集客户端浏览器指纹(Canvas指纹、WebGL、字体列表、屏幕分辨率、CPU核心数、时区、插件列表)。
- 对比:同一个指纹在短时间内请求了大量不同页面,或指纹参数异常(如无头浏览器特征)则封禁。
- 工具:指纹库(如FingerprintJS)、自研特征采集脚本。
-
业务逻辑陷阱(蜜罐/Honeypot)
- 操作:在页面HTML中放入不可见链接或隐藏字段。
- 在
<a>标签里放一个style="display:none"的链接;或放入一个隐藏的<input>(type="hidden"且无实际作用)。 - 真实用户不会点击/提交,但爬虫会。
- 在
- 封禁:记录所有识别的IP并永久封禁IP或用户ID。
- 操作:在页面HTML中放入不可见链接或隐藏字段。
-
路径白名单与黑名单
- 操作:
- 允许搜索引擎爬虫访问某些路径(如
sitemap.xml)。 - 对敏感路径(如
/admin、/api/search?、/.env、/wp-admin)实施更高的封禁阈值(如2次即可触发封禁)。
- 允许搜索引擎爬虫访问某些路径(如
- 实施:在Nginx
location或WAF规则中单独设置限流。
- 操作:
-
机器学习/异常检测(可选)
- 输入:时间序列、浏览器特征、请求路径熵、提交速度。
- 输出:每个请求的“异常分数”,分数超过阈值则封禁或降权。
- 工具:ELK Stack(日志)+ ML模型(如LSTM);或SaaS方案(如Cloudflare、Akamai的AI防御)。
第四阶段:长效治理(封禁后的处理)
封禁不是为了惩罚,而是为了保护业务和减少成本。
-
封禁分级
- 临时封禁:例如IP连续30秒内触发10次限流,封禁10分钟(适用于误拦)。
- 永久封禁:访问了蜜罐链接、或识别为专业扫描器IP库。
- 降权/延迟:对于高风险但不确认的IP,人为延迟接口响应(如强制等待3秒),增加攻击成本而不直接拒绝。
-
IP黑名单管理
- 来源:
- 公开威胁情报(类似AbuseIPDB)。
- 自身日志中统计出的TOP攻击IP段。
- 操作:定期导入到防火墙或WAF的黑名单组。
- 来源:
-
日志与告警
- 记录:被封禁的IP、封禁原因、访问的目标URL、User-Agent。
- 通知:当连续发现大量IP(如同一C段、同一ASN下的IP)时,发送告警给运维/安全团队。
实施建议(技术栈落地)
| 技术水平 | 推荐方案 | 工具/平台 |
|---|---|---|
| 团队小、突发防护 | 使用CDN/WAF的一键开启“机器人管理”或“恶意IP封禁” | Cloudflare、阿里云WAF、腾讯云WAF、AWS WAF |
| 有一定开发能力 | Nginx + Lua (OpenResty) 实现定制化JS挑战、HMAC签名 | OpenResty、Nginx + lua-nginx-module |
| 大型业务、自建基础设施 | 基于数据流(如Kafka)的实时分析 + 规则引擎 + 模型 | Flink + Redis + ELK、自研指纹库、Splunk |
| 极端敏感(如金融) | 需要双向SSL/TLS指纹验证(部分金融接口会验证客户端证书) | 或有CDN的TLS指纹能力(如JA3指纹检查) |
封禁思路优先级
- 拦截“低质量流量”:限速、User-Agent黑名单。
- 消耗“中等流量”:JS验证、Cookie验证、蜜罐。
- 隔离“高质量模拟”:设备指纹 + 行为分析 + 限频。
- 长效治理:黑名单共享、IP段进入防火墙、升级密码学验证。
最后需要注意:封禁的核心不是“杀无赦”,而是“区分用户与爬虫”,误伤正常用户(如VPN用户、代理用户、CDN节点)会导致投诉和业务损失,因此建议先观察、后逐步收紧,并辅以用户申诉渠道(如解封URL)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播