GEO 指南

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

王朋友 · 星盒AI 创始人发布于 16 分钟读完
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
Google Googlebot 抓取网页并建立Google Search索引 决定Google搜索能否抓取相关内容
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爬虫 robots.txt 配置:允许搜索,拒绝训练

二、适合多数公开网站的基础模板

下面这份模板对应一种常见需求:允许传统搜索和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,即搜索引擎优化。直接覆盖旧文件,可能使网站原有的搜索抓取设置和路径限制失效。

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

三、已有 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地址范围或官方验证方法进行核对,不能只看请求中声明的名称。

官方资料