AI 爬虫 · OpenAI ChatGPT-User:替 ChatGPT 用户打开网页
ChatGPT-User 不是满网抓取的爬虫,而是有人在 ChatGPT 里要求打开某个页面时才来。下面是 OpenAI 公开的信息,每条附出处,以及你能控制和不能控制的部分。
- 用户请求时抓取
- robots.txt:部分遵守
- 有官方 IP 列表
ChatGPT-User 一览
OpenAI官方公开的 ChatGPT-User 信息,每条都链到出处。需要哪条 robots.txt 规则直接复制;日志里的 IP 是不是真的 ChatGPT-User,也能在这里核对。
运营方对 ChatGPT-User 的说明
每一行都链到出处。「未公开」表示在运营方自己的文档里找不到。
| 项目 | 内容 | 出处 |
|---|---|---|
| 运营方 | OpenAI | 出处 |
| 官方说明 | developers.openai.com | 出处 |
| robots.txt 标记 | ChatGPT-User | 出处 |
| 用途 | 用户请求时抓取OpenAI 说 ChatGPT-User 在用户于 ChatGPT 和自定义 GPT(含 GPT Actions)中操作时访问网页,不用于自动抓取。 | 出处 |
| 遵守 robots.txt | 部分OpenAI 说这些访问由用户发起,robots.txt 规则可能不适用。 | 出处 |
| 官方 IP 列表 | openai.com/chatgpt-user.json | 出处 |
| 验证方法 | IP 列表OpenAI 在 chatgpt-user.json 公布 ChatGPT-User 的 IP 段,没有公布反查域名,用来源 IP 对照列表即可。 | 出处 |
| 核对日期 | — |
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot运营方公布的原文。 OpenAI 标注这是完整的 UA 字符串。
robots.txt 规则
把其中一组加到 robots.txt 末尾。标记不区分大小写。
User-agent: ChatGPT-User
Disallow: /User-agent: ChatGPT-User
Allow: /点名 ChatGPT-User 的组会替代 User-agent: * 对它的规则。只想拦一个目录,把 / 换成目录,如 Disallow: /private/。
核对请求是不是真的 ChatGPT-User
用官方列表核对 IP
打开 openai.com/chatgpt-user.json,全选复制,连同日志里的 IP 一起粘贴到下面。核对在浏览器里完成。
JSON 或每行一个网段,IPv4 和 IPv6 都能识别。
粘贴一个 IP 地址开始核对。
官方文档里的其他说明
- ChatGPT-User 不决定内容能否出现在 ChatGPT 搜索里;OpenAI 说搜索退出要用 OAI-SearchBot。 出处
版本 v1.0更新于 更新记录
决定怎么处理,看这四项
每个爬虫单页都是同一张表,这四行回答了大部分问题。
用途
训练、搜索,还是替用户访问。屏蔽训练爬虫,你的页面不进后续模型;屏蔽搜索爬虫,连带失去会链回你的 AI 回答。
遵守 robots.txt
「是」是运营方自己的说法。「部分」通常指用户发起的访问可能不看 robots.txt——ChatGPT-User、Perplexity-User、meta-externalfetcher 的运营方都这么说。
官方 IP 列表 / 反查 DNS
分辨真爬虫和冒充者的唯一办法。两者都没公布,UA 就只是自称。
未公开
在运营方自己的文档里找不到。我们不拿第三方列表补空——那些列表互相矛盾,也经常过时。
事实按各单页标注的日期与运营方页面核对过。运营方会改文档,以出处链接为准。
从日志里的名字到一条规则
四步,都在浏览器里完成。
-
1
找到爬虫
输入日志里看到的名字,或你想查的公司。按用途筛选,比如只看 AI 训练类。
-
2
打开单页
看运营方说它拿来做什么、是否遵守 robots.txt;复制官方 UA,和宝塔、Nginx 日志里的对照。
-
3
生成规则
在表格里勾选,选屏蔽或放行,复制或下载 robots.txt 规则组。
-
4
检查效果
用 robots.txt 测试工具测一遍;在单页上用官方 IP 列表核对请求真假。
爬虫怎么分组,robots.txt 怎么生效
目录按 TapCub 机器人规则分组。robots.txt 按 RFC 9309 匹配:爬虫只执行 User-agent 与自己标记匹配的那一组,没有这一组才退回 *。
- 有自己一组的爬虫,完全不看
User-agent: *里的规则 - 标记不区分大小写;拼错就什么也匹配不上
- 有些名字只是标记——Google-Extended、Applebot-Extended 从不来访
- 没有公开标记的代理,robots.txt 根本管不到
| 分组 | 做什么 | 屏蔽后 |
|---|---|---|
| AI 训练 | 为模型训练或数据集收集网页 | 只要它遵守 robots.txt,你今后的页面就不进这家的训练 |
| AI 答案引擎 | 为带链接的 AI 回答建索引 | 不再作为来源被引用 |
| AI Agent | 替用户打开页面 | 助手打不开你的页面——前提是它看 robots.txt |
| 搜索引擎 | 传统搜索索引 | 从这个搜索引擎消失;必应等也为 AI 回答供数 |
四份 robots.txt 对 ChatGPT-User 的效果
ChatGPT-User 只看 User-agent 与 ChatGPT-User 匹配的那一组(不区分大小写);没有这一组,才退回 User-agent: *。
| robots.txt | ChatGPT-User 的结果 | 原因 |
|---|---|---|
User-agent: ChatGPT-User Disallow: / | 禁止 | 它自己的组禁止了整站。 |
User-agent: * Disallow: / | 禁止 | 没有自己的组,继承通配组。 |
User-agent: * Disallow: / User-agent: ChatGPT-User Allow: / | 允许 | 点名的组完全取代通配组,* 里的规则对它不再生效。 |
User-agent: ChatGPT-User Disallow: /private/ | 除 /private/ 外都允许 | 只有以 /private/ 开头的路径被禁止。 |
OpenAI说用户发起的请求可能不受 robots.txt 约束,这些结果只代表你的请求,不是保证。
AI 爬虫策略常在哪里出错
多数问题出在标记写法,或者没弄清这个爬虫到底是什么。
把公司名当标记
「OpenAI」「字节跳动」「ChatGPT」都不是标记。用目录里的准确写法——GPTBot、Bytespider、OAI-SearchBot。
连搜索爬虫一起拦
屏蔽 OAI-SearchBot、PerplexityBot 会失去能链回你的 AI 回答。按爬虫决定,不要按公司一刀切。
轻信 UA
谁都能在请求头里写「GPTBot」。没有核对 IP 或反查 DNS,请求就不算验证过。
封 IP 反而丢了退出声明
Anthropic 和 Cohere 都提醒:封它们的 IP 会让爬虫读不到 robots.txt,退出可能不稳定。
看哪些爬虫真的来过
目录告诉你爬虫自称做什么。TapCub 用五层识别、197+ 条规则把机器人和真人分开,AI 爬虫单独统计。
ChatGPT-User 是什么?
ChatGPT-User 由OpenAI运营。OpenAI 说 ChatGPT-User 在用户于 ChatGPT 和自定义 GPT(含 GPT Actions)中操作时访问网页,不用于自动抓取。
ChatGPT-User 遵守 robots.txt 吗?
OpenAI 说这些访问由用户发起,robots.txt 规则可能不适用。
怎么屏蔽 ChatGPT-User?
在 robots.txt 里写 User-agent: ChatGPT-User 和 Disallow: /。但OpenAI说它的部分请求可能不看 robots.txt,确实要拦就在服务器层再加一道,例如 Nginx / 宝塔站点配置里加 if ($http_user_agent ~* "ChatGPT-User") { return 403; }。
怎么确认请求真的来自 ChatGPT-User?
OpenAI 在 chatgpt-user.json 公布 ChatGPT-User 的 IP 段,没有公布反查域名,用来源 IP 对照列表即可。
robots.txt 已经禁止了,为什么 ChatGPT-User 还来?
OpenAI 说用户发起的访问可能不受 robots.txt 约束。确实要拦,就在服务器或防火墙上拦 chatgpt-user.json 里的 IP——之后有人在 ChatGPT 里问到你的页面时,它将打不开。
ChatGPT-User 的访问算真人浏览吗?
不应该算。触发的是人,但请求来自 OpenAI 的服务器,不是这个人的浏览器。TapCub 的机器人规则把它记为 AI Agent,和真人访客分开。