在生成式 AI 迅猛发展的时代,大型语言模型(LLM)的训练依赖海量网络数据,这导致了大量自动化爬虫的涌现。这些爬虫针对网站内容进行无差别抓取,不仅消耗服务器带宽和计算资源,还可能侵犯内容所有权和隐私。传统客户端 JavaScript 检测方法依赖浏览器执行,容易被高级爬虫绕过,而服务器端启发式技术则提供更可靠的、非依赖 JS 的防护方案。本文聚焦 IP 速率限制、HTTP Referer 检查以及自定义 robots.txt 解析三种核心方法,旨在帮助网站管理员部署高效阻塞策略,保护数字资产。
首先,理解 LLM 爬虫的特征是部署防护的基础。这些爬虫通常伪装成普通浏览器用户代理(User-Agent),但行为模式异常:高频访问、顺序抓取 URL 列表、忽略标准协议。不同于搜索引擎爬虫,它们不关心页面渲染,仅提取纯文本用于模型训练。根据行业观察,OpenAI 的 GPTBot、Anthropic 的 ClaudeBot 和 Google 的 Google-Extended 等是常见标识。通过服务器日志分析,可识别这些模式,例如单个 IP 短时内访问数百页面,或全球分布式 IP 协作抓取。
核心方法之一是自定义 robots.txt 配置。这是一种协议层面的“君子协定”,位于网站根目录,用于指导爬虫访问权限。尽管非强制,但主流 AI 公司通常遵守,以维护声誉。标准 robots.txt 语法包括 User-agent 指令指定目标爬虫,Disallow 禁止路径。针对 LLM 爬虫,可精准阻塞而不影响 Googlebot 等有益爬虫。
例如,创建一个 robots.txt 文件,内容如下:
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: *
Disallow:
此配置禁止特定 AI 爬虫访问整个站点(Disallow: /),而允许其他爬虫(Disallow: 为空)。上传至根目录后,通过 Google Search Console 的 robots.txt 测试工具验证语法。证据显示,此方法可减少 70% 以上已知 AI 爬虫流量,因为 OpenAI 等公司公开承诺遵守 robots.txt。局限在于恶意或未知爬虫可能忽略,但作为第一道防线,它无需额外计算开销。
接下来,IP 速率限制(Rate Limiting)是行为层面的服务器端防护。通过限制每个 IP 的请求频率,阻挡高强度抓取。Nginx 等 Web 服务器内置 limit_req 模块,支持基于 IP 的令牌桶算法。典型参数:每分钟 10-20 请求,突发上限 5 次,超出返回 429 Too Many Requests。
在 Nginx 配置中,添加以下至 http 块:
limit_req_zone $binary_remote_addr zone=llm_limit:10m rate=10r/m;
server {
location / {
limit_req zone=llm_limit burst=5 nodelay;
# 其他配置
}
}
此设置将远程 IP 地址哈希存储在 10MB 共享内存区,速率 10 请求/分钟,允许 5 次突发。针对 LLM 爬虫,可进一步结合 User-Agent 检查:若匹配 GPTBot 等,返回 403 Forbidden。证据来自服务器日志:实施后,异常 IP 流量下降 80%,正常用户不受影响。可落地清单包括:1) 监控日志识别阈值(初始 20r/m,根据负载调整);2) 分布式 IP 攻击时,使用 GeoIP 模块阻塞高风险国家段;3) 回滚策略:若误伤,临时禁用并白名单 IP。
HTTP Referer 检查是另一启发式技巧,利用请求头验证来源合法性。LLM 爬虫常直接访问 URL,无有效 Referer 或伪造低质量来源。服务器端可在应用层或 Web 服务器解析 Referer 头,若为空或非本站域名,返回 403。
在 Nginx 示例:
if ($http_referer !~ "^https?://(www.)?yourdomain.com(/.*)?$") {
return 403;
}
此正则匹配 Referer 必须来自 yourdomain.com 子域。针对爬虫,可扩展检查:若 Referer 为空且 User-Agent 非浏览器,返回阻塞。参数建议:允许空 Referer 的直接访问比例 <5%,结合日志分析调整。证据表明,此方法有效过滤 60% 伪装爬虫,因为真实用户多通过链接导航。风险:API 调用或书签访问可能触发误判,故提供 Referer 豁免路径如 /api/。
集成这些方法需考虑整体架构。推荐使用 Nginx 作为反向代理,结合 Lua 模块(如 OpenResty)实现动态规则:解析 robots.txt 时,若 User-Agent 匹配 AI 列表,直接限速或阻塞。监控要点包括:1) 部署 Prometheus + Grafana 追踪 4xx 错误率;2) 每日审视访问日志,更新黑名单(e.g., 新兴 Bytespider);3) 测试负载:模拟 1000 IP 并发,确保 <1s 响应。
实施注意:优先测试小流量站点,避免过度阻塞影响 SEO。结合 Cloudflare 等 CDN 的 WAF 规则,可增强分布式防护,但保持服务器端核心。最终,这些启发式不需 JS 执行,适用于静态站点或 API 服务,平衡防护与可用性。
资料来源:基于 CSDN 博客《捍卫你的数据:使用 robots.txt 精准屏蔽 GPT 及其他 AI 爬虫》和 Weblynx.pro《Bots You Should Block To Protect Your Content And Bandwidth》的分析与实践总结。