面向代理的 robots.txt
robots.txt 如何控制 AI 智能体
robots.txt(RFC 9309)是一个自愿遵守的协议: 你发布规则,运营规范的爬虫选择遵守。协议本身没有任何强制力 — 因此了解哪些 AI 机器人会遵守它,与写好规则同样重要。
每家主要 AI 厂商如今都运营着多个职责不同的机器人,而 robots.txt 把每个 User-agent 令牌当作独立的收件人: 爬虫遵守与自己令牌匹配的最具体的规则组,并忽略针对其他令牌的组。因此,屏蔽一个机器人对它的同门机器人毫无影响。这些令牌分为三个层级:
- 训练爬虫(GPTBot、ClaudeBot、meta-externalagent)为模型训练收集内容。屏蔽它会让你的内容退出未来的模型 — 不影响实时回答或搜索引用。
- 搜索索引爬虫(OAI-SearchBot、Claude-SearchBot、PerplexityBot)构建 AI 助手引用的索引。允许它们,你的页面才能在 ChatGPT、Claude 和 Perplexity 的回答中被检索和引用。
- 用户发起的抓取器(ChatGPT-User、Claude-User、Perplexity-User、Google-Agent)在有人刚向助手询问某页面时实时抓取。大多数厂商声明这一层级可能忽略 robots.txt — 理由是: 请求该页面的是人,不是爬虫。(也存在有文档记载的例外 — Anthropic 的 Claude-User 和 Mistral 的 MistralAI-User 都声明遵守 robots.txt。)
实际后果: User-agent: GPTBot + Disallow: / 让你退出 OpenAI 的训练,但不会把你从 ChatGPT 搜索中移除(那是 OAI-SearchBot),也不会阻止用户的实时访问(那是 ChatGPT-User)。每种行为都需要单独的规则组。
当前的 AI 爬虫令牌
| 令牌 | 运营方 | 层级 | 遵守 robots.txt? |
|---|---|---|---|
| GPTBot | OpenAI | 训练 | 是 |
| OAI-SearchBot | OpenAI | 搜索索引 | 是 — OpenAI 建议允许 |
| ChatGPT-User | OpenAI | 用户抓取 | "规则可能不适用"(OpenAI 的原话) |
| ClaudeBot | Anthropic | 训练 | 是 |
| Claude-SearchBot | Anthropic | 搜索索引 | 是 |
| Claude-User | Anthropic | 用户抓取 | 是 — 有文档记载的例外 |
| PerplexityBot | Perplexity | 搜索索引 | 是 |
| Perplexity-User | Perplexity | 用户抓取 | "通常忽略"(Perplexity 的原话) |
| Google-Extended | 训练策略令牌 | 仅为令牌 — 由 Googlebot 读取,没有自己的爬虫 | |
| Google-Agent | 用户抓取 | 通常忽略 | |
| meta-externalagent | Meta | 训练 | 是 |
旧列表中仍流传着 anthropic-ai 和 claude-web — Anthropic 已不再使用这些令牌爬取; 其当前爬虫是上面的三个。表中每个令牌都有完整页面 — 精确 UA 字符串、robots.txt 片段、IP 段验证 — 见 AI 智能体 User-Agent 参考。
明确欢迎智能体
明确的 Allow 规则组是一种信号,而非多余的写法: 默认已经是"允许",但点名智能体的令牌是在告诉爬虫运营方(以及像 AgentGrade 这样的扫描器): 访问权是一个决定,而不是疏忽。
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
Sitemap: https://example.com/sitemap.xml
Sitemap: 指令对智能体也很重要 — 它让爬虫无需遍历每个链接就能找到你的规范页面列表。
退出训练,保持可引用
最常见的中间立场: 让页面在 AI 搜索中保持可引用,同时退出模型训练。
# 屏蔽训练爬虫
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
User-agent: Google-Extended
Disallow: /
# 其余一切(搜索索引器、用户抓取器)默认保持允许
屏蔽一切 — 以及代价
禁止所有 AI 令牌会让你的网站在 AI 搜索索引中不可见,助手无法引用你。而且这仍然无法真正阻止用户发起的抓取器 — 该层级的大多数在设计上就忽略 robots.txt。真正的硬屏蔽需要服务器端控制: 按厂商公布的 IP 段过滤,或使用 WAF 规则。每个机器人的验证端点列于 /agents 页面。
常见问题
屏蔽 GPTBot 会把我的网站从 ChatGPT 中移除吗?
不会。GPTBot 只收集训练数据。ChatGPT 搜索引用来自 OAI-SearchBot 的索引,实时页面访问来自 ChatGPT-User — 除非你也屏蔽它们的令牌,否则两者都继续工作(而且 ChatGPT-User 可能忽略屏蔽)。
AI 智能体真的遵守 robots.txt 吗?
分层级看: OpenAI、Anthropic、Perplexity、Google 和 Meta 的训练与搜索爬虫都有文档声明遵守。用户发起的抓取器大多声明不遵守(Claude-User 和 MistralAI-User 是明确声明的例外)。robots.txt 是公开的偏好声明,不是访问控制。
Google-Extended 是会出现在日志里的爬虫吗?
不是。Google-Extended 是由普通 Googlebot 读取的 robots.txt 策略令牌。禁止它会让你的内容退出 Gemini 的训练和 grounding,而不影响 Google 搜索。永远不会有请求携带 Google-Extended 这个 user-agent。
我的网站应该允许还是屏蔽 AI 爬虫?
这是关于两件独立事情的商业决策: 训练(你的内容改进未来的模型)和可见性(助手引用并推荐你)。如今许多网站屏蔽训练令牌、允许搜索令牌 — 即上面的"退出训练,保持可引用"模式。
规范成熟度
成熟标准。 robots.txt 由 RFC 9309 规定。AI 专用令牌由各厂商定义和记录,且变化频繁,因此 User-Agent 参考按机器人逐一保持更新。
了解更多
- RFC 9309 — robots.txt 规范
- AI 智能体 User-Agent: 参考列表 — 每个机器人的 UA 字符串、robots.txt 行为和 IP 验证
相关
- llms.txt — 加法式的对应物: robots.txt 说明智能体可以抓取什么; llms.txt 告诉它们从哪里开始
- AI 智能体究竟如何浏览网页