ChatGPT 能看到我的网站吗?检查方法

发布于

简短回答

只有当 OpenAI 的搜索爬虫 OAI-SearchBot 可以抓取你的页面,并且拿到的 HTML 与浏览器相同,ChatGPT 才可能引用该页面。请检查三件事:你的 robots.txt 没有禁止 OAI-SearchBot;防火墙或 CDN 没有对它返回 403 或验证页面;正文包含在最初返回的 HTML 中。

许多网站所有者向 ChatGPT 询问自己的产品,却看到引用的是竞争对手,于是想知道 ChatGPT 究竟能不能访问自己的网站。这个问题有具体且可以验证的答案。OpenAI 公布了其爬虫的名称和各自的作用,所以你可以逐一检查整条链路中的每个环节:robots.txt 规则、服务器返回的响应,以及响应中的内容。

本页内容
  1. 哪些 OpenAI 爬虫与 ChatGPT 的回答有关?
  2. 如何为 ChatGPT 检查我的 robots.txt?
  3. 即使 robots.txt 允许,防火墙也会屏蔽 ChatGPT 吗?
  4. 如何测试 OAI-SearchBot 拿到的内容?
  5. 如果页面能打开,ChatGPT 却仍然给不出有用的回答怎么办?
  6. AISeeWhy 如何检查这些?

哪些 OpenAI 爬虫与 ChatGPT 的回答有关?

OpenAI 的文档列出了网站所有者通常会遇到的三个代理。它们各自承担不同的任务,屏蔽其中一个不会屏蔽其他的。OpenAI 表示,robots.txt 中的每项设置都是相互独立的。

简单来说:OAI-SearchBot 决定引用,GPTBot 决定训练,ChatGPT-User 负责用户请求时的实时访问。

如何为 ChatGPT 检查我的 robots.txt?

在浏览器中打开 https://yourdomain.com/robots.txt。查找是否有指明 OAI-SearchBot 的规则组。如果没有,爬虫会遵循 User-agent: * 规则组。无论适用哪个规则组,其中的 Disallow: / 都会屏蔽整个网站。

还要检查这个文件本身能否正常响应。根据 RFC 9309,如果 robots.txt 返回服务器错误(5xx)或无法访问,爬虫必须假定整个网站都被禁止。404 没有问题,它表示没有任何规则。robots.txt 地址以状态码 200 返回一个 HTML 页面是常见的错误,因为爬虫在其中找不到有效的规则。

保留 ChatGPT 搜索、同时选择退出训练的设置如下:

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: *
Allow: /

OpenAI 表示,更新 robots.txt 后,针对搜索的更改可能需要约 24 小时才会生效。

即使 robots.txt 允许,防火墙也会屏蔽 ChatGPT 吗?

会,而且这是常见的原因。robots.txt 是对守规矩的爬虫提出的请求,并不是访问控制。实际返回什么内容,由你的防火墙、CDN 或机器人防护决定。如果它把 AI 爬虫当成不受欢迎的机器人,爬虫就会收到 403、429,或者类似 Cloudflare“Just a moment...”界面的验证页面,而用浏览器访问的人看到的页面完全正常。

从外部看,这个网站像是对所有人开放。只有自称是该爬虫的请求才会暴露出差别。这时 robots.txt 说可以,服务器说不行,而服务器说了算。

如何测试 OAI-SearchBot 拿到的内容?

向同一个 URL 发送两个请求,一个使用浏览器的 user agent,另一个使用爬虫的 user agent,然后比较状态码和大小。OpenAI 为每个爬虫公布了示例 user agent,其中的版本号可能会变化。

# As a browser
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
  -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" \
  https://example.com/page

# As OAI-SearchBot
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
  -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" \
  https://example.com/page

如果浏览器得到 200 和较大的响应体,而爬虫得到 403、429、503 或小得多的响应体,说明防火墙对爬虫区别对待。有一点要注意:你的测试来自你自己的 IP 地址,而不是 OpenAI 的。对照已公布的 IP 范围(OpenAI 在 openai.com/searchbot.json 中列出)验证爬虫的防火墙,可能会放行真正的爬虫,却拦住你的测试。即便如此,这个测试中的拦截仍能说明防火墙如何处理该 user agent,值得修复。

如果页面能打开,ChatGPT 却仍然给不出有用的回答怎么办?

能访问只是第一步。如果收到的 HTML 只是一个稍后由 JavaScript 填充的空壳,爬虫拿到的文本可能几乎为零。用 curl 或浏览器的查看源代码功能看一看原始 HTML:如果正文不在其中,爬虫很可能也看不到。

接下来是内容信号:页面顶部清晰的简短回答、与人们提问方式一致的标题、明确的发布者和作者,以及可见的日期。这些并不能保证被引用,但能让页面更容易被准确引用。

AISeeWhy 如何检查这些?

AISeeWhy 会与普通浏览器并列,分别以 OAI-SearchBot、GPTBot、ChatGPT-User 和另外 11 个爬虫的身份抓取你的页面,按 RFC 9309 规则读取你的 robots.txt,并在有防火墙返回拦截或验证页面时指出是哪个防火墙。每条发现都附有可直接粘贴的修复方法,免费检查会显示你的评分和第一条发现。

常见问题

屏蔽 GPTBot 会让我的网站从 ChatGPT 搜索中消失吗?

不会。OpenAI 将每个爬虫的设置视为相互独立。GPTBot 与训练有关,而 OAI-SearchBot 决定页面能否出现在 ChatGPT 的搜索回答中。你可以禁止其中一个,同时允许另一个。

ChatGPT-User 会遵循 robots.txt 吗?

OpenAI 表示,由于这些访问由用户发起,robots.txt 规则可能不适用。如果你想阻止这类访问,robots.txt 规则并不是可靠的控制手段。

robots.txt 的更改多久能对 ChatGPT 生效?

OpenAI 表示,更新 robots.txt 后,其系统针对搜索进行调整可能需要约 24 小时。

能被访问就足以被引用吗?

不够。能访问使引用成为可能,但并不保证一定被引用。页面说了什么,以及说得有多清楚,仍然决定它是否会被用在回答中。

参考资料

更多文章