返回技术文章
服务器日志AI 爬虫User-AgentFCrDNS

服务器日志取证:用 AI 爬虫 UA 证明你的页面被抓取和检索(2026 完整版)

服务器日志是四层证据里唯一可做到密码学级验证的一层。本文给出 AI 爬虫 UA 参考表、FCrDNS 与 IP 段核验方法,以及日志证据能证明和不能证明什么。

妙蛙 GEO 研究团队更新于 15 分钟

本文是《如何证明你的网站被 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传统搜索索引,间接供给 AIBingbot、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 训练策略令牌)、GoogleOtherGoogle-NotebookLMGoogle-CloudVertexBotbingbot(Copilot 底层)、Applebot / Applebot-ExtendedAmazonbotCCBot(Common Crawl,多数开源模型的上游语料)、Bytespider(字节,无官方文档、合规记录较差)、meta-externalagentDuckAssistBot

一个值得记录的事实: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 -rn

3.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 爬虫同样适用:

  1. 取请求来源 IP;
  2. 做反向 DNS 查询,得到 PTR 主机名;
  3. 确认该主机名属于声称的厂商域名;
  4. 对该主机名做正向 DNS 查询,确认解析回同一个 IP。

第 4 步不能省。只做反向查询是可以被伪造的。

# 单 IP 快速验证
IP=203.0.113.10
HOST=$(dig +short -x $IP)
echo "PTR: $HOST"
dig +short $HOST

4.2 IP 段与 ASN 核验

部分厂商公布了爬虫 IP 段文件,可定期拉取比对:OpenAI 的 GPTBotOAI-SearchBotChatGPT-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,建立自己的观察名单,再以答案层实测为主要证据。


延伸阅读

继续阅读

相关技术文章

JavaScript 渲染AI 爬虫不执行 JavaScript:静态 HTML 可读性的技术验收清单

Vercel 与 MERJ 的日志研究显示 GPTBot、ClaudeBot、PerplexityBot 都不渲染 JavaScript,而我们的检测数据里 16% 的网站关掉脚本后没有正文。本文给出四种渲染模式的验收矩阵、一套差分自检命令和修复优先级。

AI 爬虫AI 爬虫治理实战:Cloudflare 9 月 15 日新默认规则生效前,出海企业必须做的 7 件事

Cloudflare 自 2026 年 9 月 15 日起把 AI 爬虫拆成 Search / Agent / Training 三类并启用新默认策略,混用爬虫按最严规则处理。含 7 步自查清单、可直接复制的 robots.txt 模板与验证命令。

GEO 方法论如何让 ChatGPT 在回答中主动提到你的品牌

ChatGPT 的品牌提及率仅 0.59%,是所有主流 AI 中最难攻的平台。本文说明它的信源结构、为什么品牌词策略在这里行不通,以及中小企业唯一现实的切入路径。