面向 AI 爬虫的 robots.txt:允许与拒绝配方
用一个小小的文本文件,通过三份配方和逐个爬虫的对照表,控制 GPTBot、ClaudeBot、PerplexityBot 及其余爬虫。
要控制 AI 爬虫,请在域名根目录的 robots.txt 文件中加入 User-agent 和 Disallow 规则。你可以拦截每一个 AI 爬虫,可以拦截训练但保留 AI 搜索,也可以全部放行。该文件只是建议:守规矩的爬虫会遵守,但它不是访问控制。
robots.txt 如何控制 AI 爬虫
每家 AI 公司都运行一个或多个具名代理。你在 robots.txt 中通过它们的 user-agent 令牌来定位,再决定它们可以抓取什么。有三种做法值得掌握:完全拦截某个爬虫;只拦截训练爬虫而放行 AI 搜索爬虫;或者全部开放。下面的配方涵盖了这三种。每一份都放进 https://example.com/robots.txt 这一个文件里。
配方 1:拦截所有 AI 爬虫
它拒绝每一个有文档记录的 AI 代理,并加入两个用于管控训练用途的退出令牌。可以原样粘贴,也可以删掉你不在意的爬虫:
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-User
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Perplexity-User
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
有一点需要说清楚:拦截 GPTBot 只会停止 OpenAI 的训练爬虫,而不是 ChatGPT 搜索(那是 OAI-SearchBot),也不是用户触发的浏览(那是 ChatGPT-User)。上面的配方三者都涵盖,所以每个都单独成块。
配方 2:允许 AI 搜索但拦截 AI 训练
一个常见目标是既保持在 AI 回答引擎中的可见性,又让自己的内容远离模型训练。放行搜索爬虫,拒绝训练爬虫和训练令牌:
# Allow AI search engines
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# Block AI training
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
Google-Extended 和 Applebot-Extended 是这种区分的关键。它们是 robots.txt 令牌,而不是独立的爬虫。拒绝它们会把你的内容排除在 Gemini 和 Apple 的 AI 训练之外,同时 Googlebot 和 Applebot 仍照常为普通搜索索引你的站点。
配方 3:全部允许(默认)
如果你什么都不做,这就是实际状态。空的 Disallow 会让每个爬虫抓取任意路径:
User-agent: *
Disallow:
没有 robots.txt 文件也是同样的意思。只有当你想限制某些东西时,才需要显式规则。
11 个 AI 爬虫对照
| 爬虫 | 公司 | 用途 | 拦截以阻止…… |
|---|---|---|---|
| GPTBot | OpenAI | 抓取以训练模型 | 用你的内容进行训练 |
| OAI-SearchBot | OpenAI | 为 ChatGPT 搜索结果提供支持 | 出现在 ChatGPT 搜索中 |
| ChatGPT-User | OpenAI | 用户触发的浏览与操作 | 来自 ChatGPT 的用户触发抓取 |
| ClaudeBot | Anthropic | 抓取以训练模型 | 用你的内容进行训练 |
| Claude-User | Anthropic | 用户触发的抓取 | 来自 Claude 的用户触发抓取 |
| PerplexityBot | Perplexity | 为其回答引擎建立索引 | 在 Perplexity 中被索引 |
| Perplexity-User | Perplexity | 用户触发的抓取 | 来自 Perplexity 的用户触发抓取 |
| Google-Extended | 管控 Gemini/Vertex AI 训练用途的令牌 | 内容被用于 Gemini/Vertex AI 训练 | |
| Applebot-Extended | Apple | 管控 Apple AI 训练用途的令牌 | 内容被用于 Apple AI 训练 |
| CCBot | Common Crawl | 构建被广泛用于 AI 训练的公开数据集 | 被收录进 Common Crawl 数据集 |
| Bytespider | ByteDance (TikTok) | AI 爬虫 | ByteDance 的 AI 抓取 |
robots.txt 能做什么、不能做什么
几条规则决定你的文件是否能生效:
- 它必须位于域名根目录。 爬虫只读取
https://example.com/robots.txt,别处一概不读。放在子目录里的文件会被忽略,而且每个子域名都需要自己的一份。 - 令牌不区分大小写。
GPTBot和gptbot匹配同一个爬虫。为了可读性请保留文档中的写法,但不必纠结于完全一致。 - 有些条目是令牌,不是爬虫。
Google-Extended和Applebot-Extended从不抓取任何东西。它们只是表明 Google 和 Apple 是否可以把已抓取的内容用于 AI 训练。 - 它是建议,不是围墙。 robots.txt 是自愿遵守的。正经的爬虫会尊重它;它不是访问控制,也拦不住一个执意忽略它的爬虫。若要硬性拦截,请使用防火墙规则、身份验证,或在边缘按 user-agent 和 IP 拦截。
搭配一个 llms.txt 文件
robots.txt 决定谁可以抓取。llms.txt 文件做的是相反的工作:它把 AI 系统指向你希望它们阅读和理解的内容。两者配合使用,你可以用 llms.txt 生成器来创建一个。想看看整个站点在 AI 爬虫眼中是什么样子,请运行 AI 就绪检查。