面向 AI 爬虫的 robots.txt:搜索、训练与用户触发抓取
用一张决策表讲清面向 AI 爬虫的 robots.txt:AI 搜索、模型训练和用户触发抓取各用哪个标识,屏蔽各有什么代价,并附 3 套现成策略。
AI 爬虫有 3 种不同的用途,robots.txt 通过各自独立的标识(token)分别控制:为 AI 搜索或问答功能抓取、为模型训练收集网页,以及因为有人提问而临时抓取网页。大多数网站希望保留第一种,对第二种做出明确的选择,而对第三种只能部分管控。一条笼统的“屏蔽 AI”规则会把三者混为一谈,最常见的牺牲品,就是网站所有者本想保留的 AI 搜索曝光。
下表依据各运营方自己的文档整理(2026 年 10 月核对),我们在 AI 爬虫参考中逐个跟踪了这些爬虫。
哪个 robots.txt 标识控制哪种 AI 用途?
| AI 搜索与问答 | OAI-SearchBot, Claude-SearchBot, PerplexityBot, meta-webindexer, Amzn-SearchBot | OpenAI 表示,选择退出的网站不会出现在 ChatGPT 搜索的回答中,导航类链接除外。Anthropic 表示,在 Claude 搜索结果中的曝光可能下降。Perplexity 将其搜索结果与其爬虫绑定。Meta 表示,允许其索引爬虫有助于 Meta AI 引用并链接您的内容。 | 是。各运营方都明确该标识即为控制手段。 |
| 模型训练 | GPTBot, ClaudeBot, meta-externalagent, Amazonbot | OpenAI 和 Anthropic 表示,该规则表明您的内容不应被用于训练,搜索则由另一个标识单独控制。Meta 和 Amazon 的爬虫还服务于产品用途,因此屏蔽它们也会一并阻止这些用途。 | 是。各运营方都明确该标识即为控制手段。 |
| 没有独立爬虫的训练标识 | Google-Extended, Applebot-Extended | Google:不影响 Google 搜索的收录或排名,但除了训练之外,Gemini 的 grounding(基于网页内容生成回答)也会被一并撤销。Apple:只要允许 Applebot,搜索功能不受影响。 | 在 Google 和 Apple 现有爬虫抓取您的网站时读取。 |
| 开放网络存档 | CCBot | 此后的抓取不会把您的网页收入 Common Crawl 向研究人员、企业和个人提供的存档。 | 是。Common Crawl 表示 CCBot 在抓取前会检查 robots.txt。 |
| 由用户触发的抓取 | ChatGPT-User, Claude-User, Perplexity-User, meta-externalfetcher, Amzn-User | Anthropic:Claude 无法获取您的网页来回答用户的问题。 | Anthropic:遵守。OpenAI 和 Amazon:可能不完全适用。Perplexity:通常会忽略。Meta:可能被绕过。 |
每个标识都相互独立。OpenAI 说明,其每项设置都单独生效,因此网站可以禁止 GPTBot,同时仍允许 ChatGPT 搜索背后的爬虫 OAI-SearchBot。如果网站同时允许两者,OpenAI 表示它可能用 1 次抓取同时满足两种用途。
有 3 行需要仔细解读。
有些训练爬虫的用途不止于训练。 Meta 表示,Meta-ExternalAgent 的抓取用途包括训练基础模型,或通过直接为内容建立索引来改进产品。Amazon 表示,Amazonbot 用于改进其产品和服务,也可能被用来训练其 AI 模型。它们的搜索代理 Meta-WebIndexer 和 Amzn-SearchBot 各有独立的标识,而且 Amazon 表示 Amzn-SearchBot 不会为生成式 AI 训练抓取内容。
有 2 个标识从不抓取。 Google 说明,Google-Extended 没有自己的用户代理:网页由 Google 现有的爬虫抓取,而该标识决定这些内容能否用于训练未来的 Gemini 模型,以及能否在 Gemini 应用和 Vertex AI 的 Grounding with Google Search 中为回答提供依据。您永远不会在服务器日志中看到 Google-Extended。Apple 对 Applebot-Extended 的说明也一样:抓取由 Applebot 完成,该标识只决定 Apple 可以如何使用所收集的内容。
由用户触发的代理部分不受 robots.txt 约束。 OpenAI 表示,robots.txt 规则可能不适用于 ChatGPT-User,因为请求是由用户发起的。Perplexity 表示,Perplexity-User 控制用户请求可以访问哪些网站,但同时也说明该抓取程序通常会忽略 robots.txt 规则。Meta 和 Amazon 对 Meta-ExternalFetcher 和 Amzn-User 也给出了类似的提醒。Anthropic 是例外:它关于旗下爬虫遵守 robots.txt 的声明涵盖了 Claude-User。
哪种策略适合您的网站?
按顺序回答以下问题;每条路径最终都会落到下文的某个模板上。
Diagram source
flowchart TD
A["您希望出现在 AI 搜索的回答中吗?"] -->|是| B["让 AI 搜索标识沿用您的常规规则"]
A -->|否| C["禁止 AI 搜索标识"]
B --> D["您接受用公开网页训练模型吗?"]
C --> D
D -->|是| E["无需设置训练相关分组"]
D -->|否| F["禁止 GPTBot、ClaudeBot、CCBot、meta-externalagent 和 Amazonbot"]
F --> G["也要退出 Google 和 Apple 的训练吗?"]
G -->|是| H["加入 Google-Extended 和 Applebot-Extended"]
G -->|否| I["不加这 2 个标识"]
E --> J["必须拒绝由用户触发的抓取吗?"]
H --> J
I --> J
J -->|是| K["仅靠 robots.txt 做不到:需在服务器或 CDN 层强制执行"]
J -->|否| L["发布文件,并在线上验证"]为什么一个具名分组会让通配符规则已关闭的路径重新开放
在复制任何模板之前,先了解这条匹配规则。Google 的 robots.txt 文档与 robots.txt 标准 RFC 9309 在这一点上一致:爬虫只遵守点名它的、最具体的那个分组,并忽略其他所有分组。具名分组不会继承 User-agent: * 中的规则。
User-agent: *Disallow: /cart/Disallow: /account/User-agent: OAI-SearchBotAllow: /
按这个文件,OAI-SearchBot 可以抓取 /cart/ 和 /account/,因为它只会读取自己的那个分组。这个出于好意的 Allow 分组,反而为它所点名的那个爬虫取消了私密路径规则。解决办法有两个:要么删除这个具名分组,让该爬虫回退到 *;要么在分组内重复写上这些私密路径。
其他会影响实际文件的匹配规则:
- 多行
User-agent可以共用同一组规则,这样即使 AI 标识列表很长,也依然清晰易读。 - 如果有 2 个分组点名了同一个爬虫,它们的规则会合并。具名分组永远不会与
*合并。 - 标识名称不区分大小写;路径则区分大小写,因此
Disallow: /Cart/不会覆盖/cart/。 - 匹配路径最长的规则优先。如果 Allow 和 Disallow 匹配长度相同,Google 采用限制最少的那条。
- 既没有具名分组、也没有
*分组的爬虫,不受任何规则限制。 - 每个主机各自提供自己的文件:
www.example.com和blog.example.com需要分别设置规则;Anthropic 也要求网站所有者在每个希望排除的子域名上都加上退出规则。 - Apple 表示,当 robots.txt 点名了 Googlebot 而没有点名 Applebot 时,Applebot 会遵守 Googlebot 分组。Apple 没有说明 Applebot-Extended 是否也以这种方式继承规则,因此请明确点名它。
3 种常见策略的 robots.txt,可直接复制
每个模板都保留了一个用于私密路径的普通 * 分组。请把 /cart/ 和 /account/ 换成您自己的路径,并把 sitemap 地址换成您的地址。
允许 AI 搜索,拒绝模型训练
User-agent: GPTBotUser-agent: ClaudeBotUser-agent: CCBotUser-agent: meta-externalagentUser-agent: AmazonbotUser-agent: Google-ExtendedUser-agent: Applebot-ExtendedDisallow: /User-agent: *Disallow: /cart/Disallow: /account/Sitemap: https://www.example.com/sitemap.xml
AI 搜索爬虫没有具名分组,因此会遵守 *,无需额外添加任何规则就能避开私密路径。这是允许它们抓取最安全的方式。CCBot 之所以在列表中,是因为 Common Crawl 会把其存档提供给研究人员、企业和个人用于研究和分析,其中就包括训练;如果您希望自己的网页进入该存档,可以把它删掉。如果您希望使用 Meta 或 Amazon 的产品用途,请移除 meta-externalagent 或 Amazonbot,原因见上表之后的说明。Meta 的标识均为小写,请照此拼写。
允许所有 AI 爬虫
User-agent: *Disallow: /cart/Disallow: /account/Sitemap: https://www.example.com/sitemap.xml
不需要任何 AI 专用规则:所有没有具名分组的爬虫都遵守 *。完全没有 robots.txt 的网站同样是开放的,因为缺少该文件就意味着没有任何规则,但这样既没有表明任何策略,也没有声明 sitemap。SEOReport 在 2026 年 5 月至 10 月间审计的 45 个外部网站中,有 3 个(7%)没有 robots.txt。
屏蔽 AI 爬虫,保留传统搜索
User-agent: GPTBotUser-agent: OAI-SearchBotUser-agent: ChatGPT-UserUser-agent: ClaudeBotUser-agent: Claude-SearchBotUser-agent: Claude-UserUser-agent: PerplexityBotUser-agent: Perplexity-UserUser-agent: CCBotUser-agent: meta-externalagentUser-agent: meta-webindexerUser-agent: meta-externalfetcherUser-agent: AmazonbotUser-agent: Amzn-SearchBotUser-agent: Amzn-UserUser-agent: Google-ExtendedUser-agent: Applebot-ExtendedDisallow: /User-agent: *Disallow: /cart/Disallow: /account/Sitemap: https://www.example.com/sitemap.xml
这一策略有 3 个局限。ChatGPT-User、Perplexity-User、meta-externalfetcher 和 Amzn-User 可能不会遵守针对它们的规则。任何您没有点名的代理,包括在您发布之后才出现的代理,都会遵守 *。此外,Google 的 AI 概览和 AI 模式由 Googlebot 和 Google 搜索的摘要控制项管理,不受此文件中任何一行的约束;下文常见问题对此有说明。
robots.txt 规则不够用的时候
RFC 9309 明确指出,robots.txt 规则不是一种访问授权机制。遵守该文件的爬虫会自觉不访问;其他任何程序仍然可以请求网页,而且任何客户端都可以冒用爬虫的名称。如果拒绝访问必须真正生效,就要在请求到达的地方强制执行:服务器、CDN 或防火墙。大多数运营方都会公布 IP 地址列表,供您进行这类核验。我们的参考页面列出了每个运营方的验证方法,并注明了哪些没有提供验证方法,例如 Meta-ExternalAgent。
同一层也会导致相反的问题。如果防火墙或机器人防护规则对 OAI-SearchBot 发起人机验证,就会抵消 robots.txt 中的 Allow;OpenAI 建议希望出现在 ChatGPT 搜索中的网站,放行来自其公布地址的请求。我们的指南检查机器人防护是否挡住了您想要的 AI 搜索流量逐步介绍了这种对比方法。
如何确认线上文件表达了您的本意
- 像爬虫一样抓取该文件。 运行
curl -s https://www.example.com/robots.txt,读取线上返回的内容,而不是代码仓库中的副本。托管 robots.txt 的托管平台或 CDN 可能返回不同的内容。也要检查状态码:除 429 外,Google 会把 4xx 响应视为 robots.txt 不存在。遇到 5xx 后,Google 会在最初 12 小时内停止抓取该网站,之后最多 30 天内使用其最后一份有效副本。 - 在每个提供网页的主机上重复检查:
www、根域名以及每个子域名。 - 逐个单独阅读每个具名分组。 针对您列出的每个标识,设想如果文件中只有这一个分组,该爬虫可以抓取什么。具名分组中漏写的私密路径,对该爬虫来说就是开放的。
- 给生效留出时间再下结论。 OpenAI 表示,更改大约需要 24 小时才能同步到其系统;Perplexity 和 Meta 表示最多需要 24 小时。Google 通常会将 robots.txt 缓存最多 24 小时。Amazon 给出的时间约为 24 小时,并表示其代理可能使用最近 30 天内的缓存副本。
- 先按标识、再按地址检查日志。 按标识(例如
GPTBot)而不是完整的用户代理字符串进行匹配,并对照运营方公布的列表确认来源地址。
robots.txt 是位于所有网页之外的网站级文件,因此逐页读取的检查看不到它;AI 代理做 SEO 检查时,实际看到了您网页上的什么一文讨论了这一盲区。完整的 SEOReport 诊断会像 AI 爬虫那样读取您的 robots.txt,并告诉您 AI 搜索爬虫能否访问您的网站,这与您选择的任何训练退出设置分开判断。它会按名称读取针对 GPTBot、ClaudeBot、CCBot、OAI-SearchBot、Claude-SearchBot、PerplexityBot 和 Claude-User 的规则,并报告会拦截自动访问者的机器人防护或人机验证。想了解被审计网站实际如何编写这些规则,请参阅我们的 AI 爬虫 robots.txt 审计数据;关于 AI 代理之外的 robots.txt,请参阅 robots.txt 与抓取权限指南。
常见问题
屏蔽 GPTBot 会让我的网站从 ChatGPT 搜索中消失吗?
不会。OpenAI 说明 GPTBot 和 OAI-SearchBot 是相互独立的设置。GPTBot 管训练;OAI-SearchBot 决定您的网页能否在 ChatGPT 搜索的回答中显示。只禁止 GPTBot,ChatGPT 搜索仍然拥有它所需的访问权限。
屏蔽 Google-Extended 能让我的网页不出现在 AI 概览中吗?
不能。Google 关于 AI 功能与您的网站的文档(2026 年 10 月核对)把针对 Googlebot 的 robots.txt 规则列为访问控制手段,并列出 nosnippet、data-nosnippet、max-snippet 和 noindex 作为限制展示内容的方法。网页必须已编入索引并符合显示摘要的条件,才能成为 AI 概览或 AI 模式中的辅助链接。Google-Extended 管的是 Gemini 的训练和 grounding,而不是 Google 搜索功能。
退出训练会删除已经收集的内容吗?
我们跟踪的各运营方页面,描述的都是规则从被读取之时起所表达的信号。例如,Anthropic 表示,限制 ClaudeBot 表明该网站今后的内容应被排除在训练之外。没有任何一家说明会通过 robots.txt 删除此前已收集的内容。另外,Common Crawl 单独维护着一份 Opt-Out Ledger,记录其收到的依法提出的退出请求。
我需要为每个 AI 爬虫都写一条规则吗?
不需要。只点名那些您希望区别于 * 对待的代理即可。所有未被点名的爬虫都遵守 * 分组。只有当每个具名分组都写全了所需的私密路径时,一长串具名分组才会更安全。