本文是《如何证明你的网站被 AI 引用了》系列的第二篇,对应四层证据链中的 L2 抓取层。
服务器日志是四层证据里唯一可以做到密码学级别验证的一层。只要 AI 厂商的爬虫访问过你的页面,它就会在请求头里留下 User-Agent,而这个身份可以用正向确认反向 DNS(FCrDNS)或官方 IP 段反查证实。但要用好这份证据,你必须先接受一个前提:抓取不等于被引用,而且不同的爬虫,含义天差地别。
一、四类 AI 爬虫:只有两类和"被引用"有关
2026 年活跃在网站日志里的 AI 爬虫有二十多个。按用途可以分成四类,这个分类决定了你该怎么解读日志:
| 类型 | 做什么 | 代表 UA | 与被引用的关系 |
|---|---|---|---|
| 检索型 Retrieval | 构建 AI 回答所用的索引 | OAI-SearchBot、Claude-SearchBot、PerplexityBot | 强相关,进入索引才有资格被引用 |
| 代理型 Agent | 用户在对话中触发的实时取页 | ChatGPT-User、Perplexity-User、Claude-User、MistralAI-User | 最强相关,往往就是被引用当下的动作 |
| 搜索型 Search | 传统搜索索引,间接供给 AI | Bingbot、Googlebot | 间接相关(Copilot、AI Overviews 依赖) |
| 训练型 Training | 采集语料训练模型 | GPTBot、ClaudeBot、CCBot、Bytespider、meta-externalagent、Amazonbot | 基本无关 |
2026-08-18 补充: 本文把
ChatGPT-User定性为「有真人在 ChatGPT 里读了这一页」。这个定性没有错,但漏了一层:据 RESONEO 2026 年 8 月的检索栈研究,在思考模式下由模型主动打开的页面同样走这个 UA,而这批页面的引用率高达 74%(仅被检索未被打开的只有 7%),且它们展示给用户的引用不带 `utm_source` 参数。这意味着ChatGPT-User的日志不只是抓取证据——它是目前唯一能覆盖那批高引用率页面的观测口径,不应被当作点击层的补充数据。详见《这一周,AI 可见度的三个测量口径同时出了问题》。
这张表能澄清一个流传很广的误解:日志里 GPTBot 天天来,不代表 ChatGPT 会在回答里引用你。GPTBot 收集的是训练语料,训练抓取多少与你今天能不能被引用没有直接因果关系。要证明"我进了 ChatGPT 的检索池",看 OAI-SearchBot;要证明"有真人在 ChatGPT 里读了我这一页",看 ChatGPT-User。
二、UA 参考表(2026 年 8 月)
以下是生产环境中真实出现的主要 UA 标识片段。日志匹配时用"包含"匹配即可,不必匹配完整字符串。
OpenAI
| UA | 类型 | 受 robots.txt 约束 |
|---|---|---|
OAI-SearchBot | 检索 | 是 |
ChatGPT-User | 代理 | 否(视为真人触发) |
GPTBot | 训练 | 是 |
Anthropic
| UA | 类型 | 说明 |
|---|---|---|
Claude-SearchBot | 检索 | 2026 年 2 月官方明确三个爬虫分工 |
Claude-User | 代理 | 用户委托 Claude 完成的取页 |
ClaudeBot | 训练 | 可能用于模型训练 |
anthropic-ai / claude-web | 早期标识 | 仍会出现在历史日志中 |
Perplexity
| UA | 类型 | 受 robots.txt 约束 |
|---|---|---|
PerplexityBot | 检索 | 是 |
Perplexity-User | 代理 | 否 |
Google / Microsoft / 其他
Google-Extended(Gemini 训练策略令牌)、GoogleOther、Google-NotebookLM、Google-CloudVertexBot、bingbot(Copilot 底层)、Applebot / Applebot-Extended、Amazonbot、CCBot(Common Crawl,多数开源模型的上游语料)、Bytespider(字节,无官方文档、合规记录较差)、meta-externalagent、DuckAssistBot。
一个值得记录的事实:Bytespider 和 xAI 的爬虫至今没有官方文档页。做策略判断时,"厂商是否公开文档、是否公布 IP 段"本身就是一条有用的信息。
一行匹配用的正则
GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|anthropic-ai|claude-web|PerplexityBot|Perplexity-User|Google-Extended|GoogleOther|Google-NotebookLM|Google-CloudVertexBot|Amazonbot|Applebot|CCBot|Bytespider|meta-externalagent|DuckAssistBot|MistralAI-User|bingbot三、动手:从日志里把证据挖出来
3.1 基础统计:谁来了,来了多少次
Nginx / Apache combined 格式通用:
# 近 30 天各 AI 爬虫访问次数
grep -Ei "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User|Google-Extended|CCBot|Bytespider" access.log \
| grep -oEi "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User|Google-Extended|CCBot|Bytespider" \
| sort | uniq -c | sort -rn3.2 关键报表:哪些页面被"检索型 + 代理型"读过
这张表才是 GEO 报告里真正有价值的部分:
# 只看与引用强相关的爬虫,按 URL 聚合
grep -Ei "OAI-SearchBot|ChatGPT-User|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User" access.log \
| awk '{print $7}' | sort | uniq -c | sort -rn | head -50输出会直接告诉你:AI 在回答用户问题时,反复回来读的是你的哪几页。这几页就是你真正的 GEO 资产,值得优先加固、更新和内链导流。
3.3 状态码体检
# AI 爬虫拿到的 HTTP 状态码分布
grep -Ei "OAI-SearchBot|PerplexityBot|Claude-SearchBot" access.log \
| awk '{print $9}' | sort | uniq -c | sort -rn如果 4xx / 5xx 占比明显,说明你的页面根本没被成功读取——这是很多站点"内容做了却从不被引用"的真实原因。
3.4 时间序列:抓取节奏
用日期聚合,观察每个爬虫的回访周期。一份 2026 年 3–4 月、为期 30 天的日志研究给出的观察是:PerplexityBot 属于按需抓取,从用户提问到抓取可以是分钟级;GPTBot 对高流量页面的复访约 2.4 天一次;ClaudeBot 约 6.8 天;Google-Extended 约 14 天。
这对内容排期有直接含义:新内容进入 OpenAI 生态最快,进入 Anthropic 生态大约两周内,进入 Google 的 AI 训练层则接近季度节奏。
另一个宏观参照:Botify 对约 70 亿条 OpenAI 爬虫日志事件的分析(数据区间 2024 年 11 月至 2026 年 3 月)显示,GPT-5 发布之后 OAI-SearchBot 的活动量增长约 3.5 倍、GPTBot 约 2.9 倍;而 ChatGPT-User 事件在 2025 年 12 月至 2026 年 3 月中旬反而下降约 28%。注意该数据集来自企业级客户站点,偏零售、媒体、医疗等大站,中小站点不宜直接套用。 看自己站点数据时,先扣掉这类全网趋势,再谈自己的增减。
四、验证:UA 是可以伪造的
这一步决定了你的日志数据是"证据"还是"猜测"。
User-Agent 只是一个可以任意填写的字符串。LumenGEO 的一份公开日志抽样中,声称自己是 GPTBot 的请求约 10.8% 无法通过官方 IP 段校验——但要注意这只是 158 次请求中的 17 次,样本很小,只能当量级参考。安全厂商 HUMAN Security 基于更大样本给出的整体伪造率约 5.7%,其中 ChatGPT 系 UA 高达 16.7%。两个数字口径与样本都不同,不可直接比较,但指向同一个结论:越有名的身份,被冒用得越多。
4.1 正向确认反向 DNS(FCrDNS)
这是 Google 多年来推荐的验证 Googlebot 的方法,对 AI 爬虫同样适用:
- 取请求来源 IP;
- 做反向 DNS 查询,得到 PTR 主机名;
- 确认该主机名属于声称的厂商域名;
- 对该主机名做正向 DNS 查询,确认解析回同一个 IP。
第 4 步不能省。只做反向查询是可以被伪造的。
# 单 IP 快速验证
IP=203.0.113.10
HOST=$(dig +short -x $IP)
echo "PTR: $HOST"
dig +short $HOST4.2 IP 段与 ASN 核验
部分厂商公布了爬虫 IP 段文件,可定期拉取比对:OpenAI 的 GPTBot、OAI-SearchBot、ChatGPT-User,以及 PerplexityBot;Google 各爬虫的 IP 段见官方文档。但要注意:多数 AI 厂商的爬虫跑在 AWS、GCP、Azure 上,看到 AI 相关 UA 出现在 AS16509(AWS)是完全正常的;反过来,同样的 UA 出现在住宅宽带 ASN 上,就是很强的伪造信号。
4.3 边缘层验证与 Web Bot Auth
如果你用 Cloudflare、Fastly 或 Akamai,它们都提供了已验证机器人(Verified Bots)的托管规则,可以直接在边缘层完成识别,比在源站做 grep 可靠得多。Cloudflare 的判定标准包括:以确定性方式声明身份(Web Bot Auth 签名、公布 IP 列表配稳定 UA,或反向 DNS),以及行为不滥用(遵守 robots.txt、请求速率合理)。
值得关注的两个协议方向:Web Bot Auth 用密码学签名认证"这台机器是谁";Cloudflare 与 Chrome、Firefox、Edge、Shopify 在 2026 年 6 月 22 日提出的 PACT 则从反方向证明"背后有没有真人"。PACT 目前仍是提案,没有可部署实现,但方向值得跟踪——一旦落地,"证明被 AI 引用"这件事会从日志推断变成可验证凭证。
五、一个必须处理的技术前提:JS 渲染
除 Googlebot 外,GPTBot、ClaudeBot、PerplexityBot 以及各类用户触发型取页器基本只读原始 HTML,不执行 JavaScript。
结论很直接:如果你的核心内容要等 JS 跑完才出现,对 AI 检索而言它就不存在。
自查方法:
curl -A "OAI-SearchBot/1.0" -s https://你的域名/某页面 | grep -c "你的核心段落关键词"返回 0,说明这一页对 AI 是空白页。服务端渲染或预渲染是 GEO 里性价比最高的技术改造之一。
六、日志证据的边界:它能证明什么、不能证明什么
写进报告前请对照这张表:
| 能证明 | 不能证明 |
|---|---|
| 某 URL 在某时刻被某 AI 爬虫读取 | 该 URL 出现在了用户看到的回答里 |
| 你的哪些页面被反复回访 | AI 是否正面描述了你的品牌 |
| 爬虫拿到的是 200 还是 404 | 有多少用户看到了这条引用 |
| 是否有 robots.txt 拦错了检索型爬虫 | 竞品的引用情况 |
所以日志层永远要和第一篇讲的 L1 答案层配合使用。日志证明"你在候选池里",答案抽样证明"你进了终选"。
顺便一提,请务必检查 robots.txt 里有没有 2023 年前后加的历史封禁规则。当年出于版权顾虑封掉 GPTBot 的站点很多,而那条规则写下时,今天的 AI 搜索生态还不存在。常见的折中姿势是:封训练型(GPTBot、ClaudeBot、CCBot、Bytespider、Google-Extended),放行检索型和代理型(OAI-SearchBot、ChatGPT-User、Claude-SearchBot、Claude-User、PerplexityBot、Perplexity-User)——既控制语料被拿去训练,又保留被引用的资格。
常见问题 FAQ
Q1:我用的是虚拟主机,拿不到原始日志怎么办? 优先在 CDN 层解决。Cloudflare 免费版的机器人分析、或在边缘 Worker 里记录 UA 和路径,都可以替代源站日志。
Q2:ChatGPT-User 出现,是不是就说明我被引用了? 非常接近,但不是必然。它说明有用户在 ChatGPT 会话中触发了对你这一页的读取;这一页最终有没有出现在回答里、以什么措辞出现,日志无法回答。
Q3:为什么我封了 OAI-SearchBot,还是收到 ChatGPT-User 请求? 因为 ChatGPT-User 被视为真人触发的取页,不受 robots.txt 约束。要硬拦截只能在 WAF / CDN 层做。
Q4:训练型爬虫要不要放行? 取决于你的内容战略。放行不会直接提升今天的引用率,但会影响你的内容进入未来模型参数的可能性;封锁不会影响当前的 AI 搜索可见度。这是两件独立的事。
Q5:国内平台(豆包、DeepSeek、元宝、夸克)在日志里怎么识别? 目前这些平台公开的爬虫文档远少于海外厂商,UA 不稳定且缺少可核验的 IP 段。建议做法是:先按访问路径和频次找出可疑非浏览器 UA,建立自己的观察名单,再以答案层实测为主要证据。
延伸阅读
