AI爬虫 robots.txt 配置:允许搜索,拒绝训练

先说结论
在做GEO,即生成式引擎优化时,网站常会遇到一个基础问题:哪些AI爬虫可以访问公开页面,哪些不可以。AI爬虫是平台自动访问网页的程序;
在做GEO,即生成式引擎优化时,网站常会遇到一个基础问题:哪些AI爬虫可以访问公开页面,哪些不可以。AI爬虫是平台自动访问网页的程序;robots.txt则是放在网站主机根目录的一份公开规则文件,用来告诉愿意遵守规则的爬虫,哪些路径允许抓取,哪些路径不允许抓取。
配置的难点不在于是否允许AI访问,而在于区分访问目的。目前常见的AI访问至少有三类:为了发现和记录网页而进行的搜索抓取、可能用于模型训练的抓取,以及用户提问后临时发起的页面访问。
这些用途通常对应不同的User-agent。User-agent是爬虫在访问网站时声明的身份名称。网站可以允许公开内容进入AI搜索,同时拒绝可能用于模型训练的抓取,不必把两类访问一并允许或一并拒绝。
如果没有区分用途,通常会出现三类问题:不希望开放的训练抓取被允许;原本需要保留的搜索抓取被误拦;robots.txt已经允许访问,请求却仍被CDN或WAF拦截。CDN是内容分发网络,负责在不同节点分发网站内容;WAF是网站应用防火墙,会在请求到达网页之前进行安全检查和拦截。
一、先分清三类AI访问
下面列出几个常见平台的相关标识及其官方用途。
| 平台 | User-agent | 当前官方用途 | 配置时需要注意 |
|---|---|---|---|
| OpenAI | OAI-SearchBot | 用于发现可能出现在ChatGPT搜索结果中的页面,并支持摘要和引用 | 与GPTBot相互独立 |
| OpenAI | GPTBot | 抓取可能用于基础模型训练的内容 | 可以单独拒绝,不影响OAI-SearchBot |
| OpenAI | ChatGPT-User | 用户或自定义GPT主动请求网页时使用 | OpenAI说明,robots.txt规则可能不适用 |
| Anthropic | Claude-SearchBot | 用于改善搜索结果质量 | 可以与训练爬虫分开配置 |
| Anthropic | ClaudeBot | 收集可能用于模型训练的网页内容 | 可以单独拒绝 |
| Anthropic | Claude-User | 用户提问时访问网页 | Anthropic称其机器人遵守robots.txt |
| Perplexity | PerplexityBot | 建立搜索索引,并在结果中展示网页链接 | 官方说明不用于基础模型训练抓取 |
| Perplexity | Perplexity-User | 用户提问后触发的页面访问 | 官方说明通常忽略robots.txt |
| Googlebot | 抓取网页并建立Google Search索引 | 决定Google搜索能否抓取相关内容 | |
| Google-Extended | 控制Gemini训练及部分为回答获取依据的用途 | 它是写在robots.txt中的控制名称,不是独立发起请求的User-agent;不会影响Google Search收录 |
这张表说明,搜索抓取和训练抓取需要分别配置。
例如,一家企业希望公开内容有机会进入ChatGPT搜索结果,但不希望这些内容被GPTBot用于潜在的模型训练,就可以允许OAI-SearchBot,同时拒绝GPTBot。OpenAI官方说明,这两项设置相互独立。
Google的两项设置也需要分开处理。允许Googlebot,不代表必须允许Google-Extended。Google官方说明,限制Google-Extended不会影响网站进入Google Search,也不会成为Google Search的排名信号。

二、适合多数公开网站的基础模板
下面这份模板对应一种常见需求:允许传统搜索和AI搜索发现公开页面,同时拒绝已经明确用于模型训练的抓取。
模板中的Allow表示没有在robots.txt这一层拒绝抓取;Disallow表示要求愿意遵守规则的爬虫不要抓取相应路径。
这份模板不能直接覆盖线上文件。部署前必须先修改域名,再与网站现有的后台、账户、参数页、测试目录和隐私路径规则合并。
# 先保留并合并网站现有规则,不要直接覆盖旧文件
# 传统搜索
User-agent: Googlebot
Allow: /
User-agent: bingbot
Allow: /
# OpenAI:允许搜索,拒绝潜在训练
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
# ChatGPT-User属于用户触发访问,robots.txt可能不适用
User-agent: ChatGPT-User
Allow: /
# Anthropic:允许搜索和用户访问,拒绝潜在训练
User-agent: Claude-SearchBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: ClaudeBot
Disallow: /
# Perplexity:允许搜索索引
User-agent: PerplexityBot
Allow: /
# Perplexity-User通常忽略robots.txt,此处只表达站点意图
User-agent: Perplexity-User
Allow: /
# Google-Extended与Google Search分开控制
User-agent: Google-Extended
Disallow: /
# 只有使用ChatGPT广告时,才根据业务需要加入广告落地页规则
# User-agent: OAI-AdsBot
# Allow: /
Sitemap: https://www.example.com/sitemap.xml
在没有冲突规则的情况下,Allow: /通常不是必写项。模板将它明确列出,是为了让内容、技术、法务和安全团队直接看出每类爬虫采用了什么规则。
模板只展示了公开路径的基础设置。网站原有的/admin/、/account/、站内搜索参数页、测试目录和隐私路径限制仍需保留。
这里还涉及SEO,即搜索引擎优化。直接覆盖旧文件,可能使网站原有的搜索抓取设置和路径限制失效。

三、已有 robots.txt,怎样合并新规则
第一步:备份每个主机的现有文件
先访问:
https://你的域名/robots.txt
保存当前版本,再开始修改。
robots.txt按照主机分别生效。主域名、www域名、博客子域和帮助中心子域都需要单独检查。主域名已经配置,不代表其他子域会自动使用相同规则。
第二步:列出原本就需要限制的路径
至少核对以下内容:
- 后台和账户页面
- 购物车和结算页面
- 站内搜索结果
- 测试环境和测试目录
- 带有大量参数的重复页面
- 不应公开的文件和路径
需要特别区分“限制抓取”和“保护数据”。Disallow只能向愿意遵守robots.txt的爬虫表达抓取要求,不能真正保护敏感信息。
会员内容、客户数据、报价后台、未发布资料和个人信息,必须通过登录权限、服务器身份验证、访问控制和必要的WAF规则进行保护,不能只写进robots.txt。
第三步:按User-agent分别添加规则
将OAI-SearchBot、GPTBot、Claude的三类机器人、PerplexityBot和Google-Extended分别配置,不要把所有规则都写进User-agent: *。
只有分别设置,网站才能清楚表达“允许进入搜索,但拒绝用于潜在训练”这一选择。
Google-Extended需要单独说明:它是robots.txt中的控制名称,不是会以这个名称访问网站的独立程序。将它写成单独一组,是为了设置相应规则,不代表服务器日志中会出现名为Google-Extended的访问记录。
第四步:保留并检查Sitemap
Sitemap就是站点地图,用于列出网站希望搜索系统发现的规范网址。它不是爬虫放行指令,但有助于搜索系统发现网站中的有效页面。
Sitemap地址应使用完整网址,并确认访问时返回HTTP 200状态。HTTP状态码是网站服务器返回的处理结果,其中200表示请求成功。
四、如果公司允许训练抓取
如果公司已经明确同意公开内容可以用于模型训练,可以调整以下三个控制项:
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Google-Extended
Allow: /
这不只是一次技术配置变更,还可能涉及内容授权、合同承诺、付费内容和隐私政策,不应由技术部门单独决定。内容、法务、安全和业务负责人需要共同确认允许范围。
即使公司同意开放训练抓取,也不代表所有内容都应公开。会员内容、客户信息、内部报价、未发布资料和个人信息,仍然需要通过登录、身份验证、服务器权限和访问控制进行保护。
robots.txt不是安全防护工具。它只能约束愿意遵守规则的爬虫,而且访问请求中的User-agent名称可以被伪造。
五、为什么不建议照抄“30个AI爬虫全部放行”
名单长不等于配置准确。把用途不同、来源不同的爬虫全部允许,会使网站无法针对不同访问目的设置规则。
1. 爬虫名称和用途会变化
平台可能增加新的爬虫、调整现有爬虫的用途,或者更新官方IP地址范围。IP地址是设备或服务器在网络中的地址。网上流传的旧清单还可能包含已经停用、来源不明,甚至根本不遵守robots.txt的名称。
配置时应以平台当前的官方说明为准,不应长期照搬未经更新的转载名单。
2. 搜索抓取和训练抓取用途不同
搜索抓取用于发现、记录和展示页面;训练抓取则可能把网页内容用于模型训练。把两类爬虫放在同一条规则下,网站就无法分别表达是否允许这些用途。
3. robots.txt不能代替访问控制
即使robots.txt允许访问,CDN、WAF、验证码、地区限制、登录要求和访问频率限制,仍可能让请求返回403或429。403通常表示服务器拒绝访问;429通常表示短时间内请求过多。
反过来,即使robots.txt拒绝访问,也无法阻止不遵守规则的访问者。
4. 只看User-agent不能确认真实身份
OpenAI和Perplexity都公布了官方IP地址范围。配置WAF允许规则或分析服务器日志时,应同时核对User-agent和官方IP来源,不能只凭请求中声明的名称判断访问者身份。
六、上线后必须完成的8项实测
robots.txt成功保存,只能证明文件已经写入,不能证明整套配置已经生效。上线后至少要完成以下检查:
| 检查项 | 通过标准 |
|---|---|
| 文件位置 | 每个主机的根目录都能访问/robots.txt |
| HTTP状态 | 返回200,不是登录页、反复跳转或验证码页面 |
| 内容类型 | 返回纯文本,中文注释和规则没有乱码 |
| 规则合并 | 原有后台、参数页和站内搜索限制仍然存在 |
| 搜索与训练 | OAI-SearchBot与GPTBot、Claude-SearchBot与ClaudeBot已经分开配置 |
| WAF/CDN | 合法爬虫没有被403、429或要求运行JavaScript的验证页面拦截。JavaScript是网页中常用的脚本语言,普通爬虫未必能完成这类验证 |
| 身份核验 | User-agent与官方IP地址范围或官方验证方法同时匹配 |
| 日志观察 | 发布后持续检查抓取路径、状态码和访问频率 |
如果修改robots.txt后仍然看不到抓取,应先检查服务器日志。常见原因包括WAF误拦、网站服务器超时、DNS错误、重定向过多、页面要求登录,或者主要内容必须等网页脚本运行后才能显示。DNS负责把域名转换为网络访问所需的地址。
OpenAI和Perplexity都提示,robots.txt的调整可能需要一段时间才能反映到系统中。文件刚保存时,不能只根据一次搜索结果判断配置是否成功。
七、最容易误判的三个问题
1. 已经写了Allow,为什么仍然没有被引用?
Allow只表示robots.txt没有拒绝抓取,不代表平台一定会访问、记录、展示或引用这个页面。
页面还需要能够正常打开,内容也要与用户提出的问题相关。因此,允许抓取和获得引用是两件事。
2. 已经写了Disallow,为什么日志里还有访问?
先核对访问者是否为官方爬虫,再判断这次访问是否由用户主动请求触发。
OpenAI说明,ChatGPT-User的robots.txt规则可能不适用;Perplexity说明,Perplexity-User通常会忽略robots.txt。
如果网站必须强制阻止某类访问,应使用登录验证、服务器访问控制或WAF规则,不能把robots.txt当作安全防护措施。
3. 屏蔽Google-Extended会影响Google搜索排名吗?
按照Google官方说明,不会影响网站进入Google Search,也不会成为Google Search的排名信号。
Google-Extended和Googlebot是两个不同的控制项,而且Google-Extended不是独立发起网站请求的User-agent。
八、配置时最终要确认什么
一份可用的robots.txt,需要清楚回答三件事:
- 哪些公开内容允许进入传统搜索和AI搜索;
- 哪些内容不希望被用于潜在的模型训练;
- 哪些路径原本就不应公开。
具体执行时,应先确认每个User-agent的官方用途,再编写对应规则;先备份并合并旧文件,再部署上线;上线后查看真实日志,再判断配置是否生效。
平台更新User-agent、用途说明或官方IP地址范围后,还需要重新核对官方文档。robots.txt不是配置一次就可以长期不管的文件,也不应一直沿用未经复核的旧清单。
常见问题
robots.txt应该放在哪里?
放在每个主机的根目录,例如:
https://www.example.com/robots.txt
不同子域需要分别配置。
可以只允许搜索、不允许训练吗?
可以。按照平台官方说明,将搜索使用的User-agent和训练使用的User-agent分别设置。
ChatGPT-User和Perplexity-User能通过robots.txt完全控制吗?
不能这样保证。两家官方都说明,用户触发的访问可能或通常不适用robots.txt。
robots.txt能保护隐私数据吗?
不能。隐私和敏感数据必须依靠登录、身份验证、服务器权限、访问控制和WAF保护。
怎样确认来访者没有伪造User-agent?
结合平台公布的IP地址范围或官方验证方法进行核对,不能只看请求中声明的名称。
GEO 指南
想被腾讯元宝引用,要做公众号吗?
GEO 指南
想被AI答案引用,先做这6步
GEO 指南
想被AI引用,内容该发哪里