OpenAI 爬虫详解:GPTBot、OAI-SearchBot 和 ChatGPT-User

发布于

简短回答

OpenAI 用 GPTBot 收集可能用于训练其模型的内容,用 OAI-SearchBot 为 ChatGPT 搜索索引页面,用 ChatGPT-User 处理用户要求的访问。屏蔽 GPTBot 只会退出训练。屏蔽 OAI-SearchBot 会让你从 ChatGPT 搜索回答中消失。robots.txt 可能不适用于 ChatGPT-User。

同一家公司有三个不同的 user agent,每个都有自己的 robots.txt 标识,这造成了大量困惑。GPTBot 出现时许多网站将它屏蔽了,其中一些后来发现,自己同时也屏蔽了决定 ChatGPT 能否引用它们的爬虫,常常是因为一条范围过宽的防火墙规则。本文依据 OpenAI 自己的文档,逐一介绍每个代理。

本页内容
  1. GPTBot 是做什么的?
  2. OAI-SearchBot 是做什么的?
  3. ChatGPT-User 是做什么的?
  4. 分别屏蔽它们会怎样?
  5. 我应该为 OpenAI 的爬虫使用怎样的 robots.txt?
  6. 如何确认防火墙放行了它们?

GPTBot 是做什么的?

GPTBot 抓取可能用于训练 OpenAI 生成式 AI 基础模型的内容。OpenAI 的文档指出,禁止 GPTBot 表示该网站的内容不应被用于训练这些模型。

它的 user agent 包含标识 GPTBot,例如 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot。OpenAI 提到版本号可能变化,所以请匹配标识,而不要匹配完整字符串。OpenAI 在 openai.com/gptbot.json 发布其 IP 范围。

是否允许它是一个政策决定。有些发布者希望自己的内容进入训练数据,有些则不希望。屏蔽它不会影响 ChatGPT 搜索,因为那是另一个爬虫。如果以后改变主意,删除 Disallow 这一行就够了,无需注册或申请。

OAI-SearchBot 是做什么的?

OAI-SearchBot 是 OpenAI 的搜索爬虫,让网站出现在 ChatGPT 的搜索功能中。OpenAI 明确表示,退出 OAI-SearchBot 的网站不会出现在 ChatGPT 的搜索回答中。

如果希望 ChatGPT 引用你的页面,应该在 robots.txt 和防火墙两处都允许这个爬虫。它的 IP 范围发布在 openai.com/searchbot.json,防火墙可以据此验证请求确实来自 OpenAI。

ChatGPT-User 是做什么的?

ChatGPT-User 并不是通常意义上的爬虫。当 ChatGPT 用户或自定义 GPT 提出要求时,它才会获取页面,例如有人把你的网址粘贴到聊天中并请求摘要。OpenAI 表示,它不用于自动抓取网络。

OpenAI 文档中有两个细节在这里很重要。第一,由于这些操作由用户发起,robots.txt 规则可能不适用。第二,ChatGPT-User 不用于判断内容能否出现在搜索中。对于搜索,起作用的设置是 OAI-SearchBot。

分别屏蔽它们会怎样?

OpenAI 还提到,当 GPTBot 和 OAI-SearchBot 都被允许时,它可能把一次抓取的结果同时用于两个目的,以避免重复抓取。

我应该为 OpenAI 的爬虫使用怎样的 robots.txt?

对大多数希望出现在 ChatGPT 回答中的网站来说,应允许搜索爬虫,再单独决定是否允许训练。下面这个文件允许搜索并选择退出训练:

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: *
Allow: /
Disallow: /admin/

注意 RFC 9309 的一个细节:爬虫遵循指明它的规则组,并忽略 * 规则组。在上面的示例中,OAI-SearchBot 可以进入 /admin/,因为它自己的规则组里没有 Disallow: /admin/ 这一行。想保持私密的路径,需要在每个指名的规则组中重复写一遍。OpenAI 表示,搜索方面的更改可能需要约 24 小时才会生效。

如何确认防火墙放行了它们?

robots.txt 只是声明你的政策。每个请求实际得到什么,由防火墙或 CDN 决定。用每个爬虫的 user agent 请求页面,把状态码和响应体大小与浏览器请求的结果比较。如果爬虫得到 403、429 或验证页面,而浏览器得到正常页面,就说明防火墙覆盖了你的 robots.txt。

AISeeWhy 会一次性对 OpenAI 的三个代理运行这项比较,把 OAI-SearchBot 和 ChatGPT-User 被屏蔽标为 P1,因为这会损失引用;而把 GPTBot 被屏蔽列为 P3,视为政策选择而非错误。

常见问题

GPTBot 就是 ChatGPT 吗?

不是。GPTBot 是用于训练数据的爬虫。ChatGPT 搜索使用 OAI-SearchBot,用户请求的实时访问来自 ChatGPT-User。

能否允许 ChatGPT 搜索但屏蔽训练?

可以。在 robots.txt 中允许 OAI-SearchBot 并禁止 GPTBot。OpenAI 在文档中说明这两项设置是相互独立的。

我应该按 IP 地址屏蔽 OpenAI 吗?

按 IP 屏蔽会让爬虫无法读取你的 robots.txt,也使你的政策更难调整。通常更好的做法是在 robots.txt 中声明政策,并使用已公布的 IP 范围来验证 OpenAI 的爬虫,而不是屏蔽它们。

为什么要匹配标识,而不是完整的 user agent?

OpenAI 表示,其 user agent 中的版本号可能变化,而且它公布的示例字符串在不同爬虫之间也各不相同。匹配 GPTBot 或 OAI-SearchBot 的规则在更新后仍然有效;匹配完整字符串的规则则可能悄悄地不再匹配。

参考资料

更多文章