说明
OpenAI 的文档区分了以下 User-Agent 的用途:
OAI-SearchBot用于抓取内容,以便页面可能出现在 ChatGPT 搜索功能中。GPTBot抓取的内容可能用于训练模型。此设置与OAI-SearchBot相互独立。ChatGPT-User表示由 ChatGPT/自定义 GPT 中的用户操作发起的请求;它不是自动爬虫,也不是控制页面是否出现在搜索结果中的信号。robots.txt 规则可能不适用于它。
User-Agent 字符串可以伪造,不能证明请求来自 OpenAI 爬虫。要检查请求,请查看访问日志中的来源 IP,并将其与当前官方 searchbot.json IP 段或 CDN/WAF 提供的已验证机器人信号进行比较。记录响应状态、URL、时间以及防护系统的处理结果。不要仅因 User-Agent 匹配就修改 WAF 规则。允许访问只是让系统有可能访问页面,并不保证页面会被选中或引用。
虚构示例
训练页面 /robots 的虚构访问日志中有一些带 OAI-SearchBot User-Agent 的请求,但对应 IP 与已公布的网段不匹配。这是一个未经验证的爬虫:记录“声明使用 OAI-SearchBot User-Agent;来源未验证”,不要据此放行访问。之后,某个来自当前官方网段的 IP 发出请求,却收到了 WAF 返回的 403。这证明当时某个已验证的网络来源被拦截;网站所有者可以单独评估该规则。
虚构的 .test 域名不能用于真实的 ChatGPT Search 检查。只有在你有自己的公开测试域名且系统能够抓取时,才运行查询。如果无法进行此类检查、产品不可用或没有运行查询,请记录“未检查”,而不是“没有来源”。只有完成查询并保存响应后,才能确认某个 URL 是否出现在该次结果的引用来源中。
使用真实访问日志时,只在任务所需的期限内保留来源 IP,并遵循适用的隐私和保留政策。
练习
- 阅读平台官方文档,确认哪个爬虫对应其搜索功能。
- 在虚构日志中,将 User-Agent 与来源 IP 及当前官方 IP 网段或 CDN/WAF 的已验证机器人信号进行比较。记录 HTTP 状态和防护决策。不要发送伪装 User-Agent 的请求,再把它当作爬虫证据。
- 进行实时检查时,只使用你自己可公开访问的测试域名。如果没有此类域名或 AI Search 不可用,请记录“未检查”。如果可以检查,就针对指定语言和地区提出三个中立问题;保存查询、日期、模式、完整响应和来源 URL。
- 不要根据一次响应推断持续可见性。
检查清单
- 没有混淆
OAI-SearchBot、GPTBot和ChatGPT-User。 - 没有将 User-Agent 用作身份验证。
- 已将来源 IP 与当前官方列表或 CDN 已验证机器人信号进行核对。
- 网站访问权限与答案中是否出现引用分开记录。
- 搜索功能不可用时记录为“未检查”。
常见错误
得出“我们允许了 GPTBot,所以网站被 ChatGPT 引用”的结论,或把日志中的每个 OAI-SearchBot 字符串都当作真爬虫。OpenAI 将用于搜索抓取的机器人称为 OAI-SearchBot;网络请求需要通过 IP/平台进行验证,引用则必须从实际响应中检查。