洞察
实测2026-08-04 · 14 分钟读

路径估算先于结论:一个新站 15 天的 AI 爬虫 UA 日志观察

对自有服务器 15 天 nginx 日志按 User-Agent 与路径做分类:携带 AI 爬虫 UA 且命中站点路径清单的请求为搜索引擎 UA 组的 1.7 至 2.1 倍,其中 62% 只请求 robots.txt 与 sitemap.xml。UA 身份未经核验。


「AI 爬虫的抓取量已经超过传统搜索引擎」是当前常见判断,但日志中的 User-Agent 只是客户端自报字符串。若没有官方 IP 段或反向 DNS 校验,服务器日志最多支持 UA 与路径层面的分类,不能确认请求方真实身份。

本文公开一份自有服务器日志的分类方法与结果:比较携带不同 UA 的请求,并观察它们命中的路径。文中所有“AI 爬虫”均指“携带相应 AI 爬虫 UA 的请求”,不等同于已核验的官方爬虫。

口径:单台服务器 nginx combined 日志,窗口 2026-07-21 至 08-04(15 天,约 15.7 万行)。该日志不含 Host,多站请求混在一起;本文以静态构建产物的 314 条路径清单估算官网请求。共享路径可能被误计,根路径又被整体剔除,因此误差方向未知,不能称为下限。所有统计只做聚合,不记录、不输出访问者 IP。

一、方法与口径

1.1 数据来源

数据来自一台阿里云服务器上的 nginx 原始访问日志,统计窗口为 2026 年 7 月 21 日至 8 月 4 日共 15 天,日志约 15.7 万行。该机器上同时运行十余个站点,本文考察的官网是其中之一。

1.2 多站共用日志的归属:白名单法

nginx 默认的 combined 日志格式不含 Host 字段,日志只记录被请求的路径,不记录请求的是哪个域名。十余个站点的流量混在同一文件中,无法按域名切分。

为避免改动生产环境配置(需要 reload,同机尚有其它业务在运行),本文改用路径白名单归属:官网是纯静态站点,其构建产物目录中的每一个文件即该站全部可被访问的 URL,共 314 条路径。命中该清单的请求计入官网,其余一律不计。

该方法同时存在漏计和误计:根路径 14,009 次因无法归属被整体剔除;若其它站点也有同名路径,则命中清单的请求仍可能被误归到官网。因此本文数字是路径归属估算,误差方向未知。

1.3 User-Agent 与路径筛选

User-Agent 可由客户端任意填写。本文没有完成官方 IP 段或反向 DNS 校验,因此不把 UA 当作身份凭证。

路径清单只用于缩小站点归属范围:命中清单的请求进入后续统计,未命中的请求单列。这个判据不能证明 UA 真实,也不能证明命中清单的请求一定属于官网。

二、抓取总量与构成

命中官网路径的请求按 User-Agent 分类后,15 天的统计结果如下:

来访者抓取次数占比
普通浏览器等 UA(身份未核验)6,03481.4%
AI 爬虫 UA 且命中路径清单87111.7%
搜索引擎与 SEO 工具 UA 且命中路径清单5006.7%
身份不明的脚本(python-requests 等)100.1%
按路径清单估算,已剔除无法归属的根路径;所有 UA 身份均未核验。

AI 爬虫 UA 且命中清单的请求为 871 次,搜索引擎与 SEO 工具 UA 组为 500 次,比值为 1.74。若按 UA 名称从后一栏中移除四个 SEO 分析工具,余下搜索引擎 UA 组为 415 次,比值为 2.10;身份均未核验。

在这一分类口径下,AI 爬虫 UA 组约为搜索引擎 UA 组的两倍。由于 UA 未核验、Host 缺失且共享路径可能误归,这只是本样本的分类结果,不能外推为真实爬虫身份或行业趋势。

三、非目标路径请求对 UA 分类的影响

本次统计的第一版把 2,473 次请求归入 AI 爬虫 UA 组。若不继续检查路径归属,这个数字很容易被误写成真实爬虫抓取量。

对这些请求的目标路径做频次排序后,排名前列的路径如下:

被请求的路径自称的身份次数
/.git/config多个 AI 爬虫 UA33
/.env多个 AI 爬虫 UA25
/secrets.json多个 AI 爬虫 UA25
/.env.local多个 AI 爬虫 UA23
/backend/.env多个 AI 爬虫 UA22
/api/.env多个 AI 爬虫 UA21
/.env.production多个 AI 爬虫 UA21
/actuator/env多个 AI 爬虫 UA20
/settings.json多个 AI 爬虫 UA20
/service-account.json多个 AI 爬虫 UA20
这些路径在我们官网上一个都不存在,全部返回 404。它们请求时携带的 User-Agent 包括 GPTBot、ClaudeBot、PerplexityBot、OAI-SearchBot、CCBot 等。

这些路径在本站均不存在并返回 404,行为上更接近通用扫描,但仅凭路径和 UA 仍不能确认请求方身份或动机。

按路径清单拆分后,携带 AI 爬虫 UA 且目标不在清单内的请求为 2,922 次,命中清单的为 871 次。若把两者都计入,UA 组总数为 3,793 次,比命中清单的数量高 335%;这反映分类口径差异,不代表已识别出 2,922 次“伪造”。

搜索引擎 UA 组同样存在 881 次未命中清单的请求和 500 次命中清单的请求。本文未做 DNS 或官方 IP 段核验,因此不比较两组身份真实性。

同一份日志只因是否纳入非清单路径,AI 爬虫 UA 组的数量就相差 3.35 倍。因此抓取量对路径归属和身份核验口径高度敏感,未声明口径的数字不宜横向比较。

四、命中清单请求的构成:62% 未触及正文

871 次携带 AI 爬虫 UA 且命中路径清单的请求中,543 次(62.3%)仅指向 /robots.txt 与 /sitemap.xml。

抓取对象次数占比
/robots.txt(爬虫规则声明)35440.6%
/sitemap.xml(页面清单)18921.7%
页面正文与静态资源32837.7%
携带 AI 爬虫 UA 且命中路径清单的 871 次请求构成;身份未核验。

两个文件的体量:robots.txt 为 93 字节的纯文本,声明路径抓取规则;sitemap.xml 为 3,088 字节的页面清单。合计 3.1KB,不含任何业务内容。它们被请求 543 次,而全站 18 个对外页面的正文加全部静态资源合计被请求 328 次。

即:这一 UA/path 分类样本中,规则文件与页面清单的请求数超过页面正文和静态资源请求数。

这提示站点运营者把 robots.txt 与 sitemap.xml 纳入检查清单。但日志分布不能证明它们是内容可见性的首要瓶颈,也不能仅凭请求次数确定投入优先级。

五、各 UA 组的请求分布差异

不同 AI 爬虫 UA 组在同一份日志中的路径分布并不相同:

爬虫总次数读门牌读内容活跃天数首次 → 末次
ClaudeBot419378411507-21 → 08-04
GPTBot2611260607-21 → 08-02
OAI-SearchBot15515321507-21 → 08-04
DeepSeekBot1037607-21 → 08-03
ChatGPT-User716307-21 → 08-02
CCBot725407-21 → 08-02
PerplexityBot615307-21 → 08-04
Amazonbot220208-01 → 08-04
Bytespider220107-25
meta-externalagent202107-24
15 天窗口内各 AI 爬虫 UA 的请求分布。「读门牌」= 请求 robots.txt 或 sitemap.xml;「读内容」= 请求页面正文或静态资源。身份未核验。

5.1 三种请求分布

表中十个 UA 组可按「读规则」与「读内容」的比例描述为三种分布;这不是对请求方真实策略的确认。

规则文件占比较高的 UA 组,以 ClaudeBot 为例:419 次请求覆盖全部 15 天,其中 378 次指向 robots.txt 与 sitemap.xml,41 次指向内容。日志只能描述这一分布,不能确认背后的调度策略。

批量取料型,以 GPTBot 为代表:261 次抓取中 260 次取内容,仅 1 次读 robots.txt,且活跃期集中在窗口前段的 6 天,8 月 2 日之后未再出现。停止的原因无法从日志侧判定——服务器日志只能观测到访问的中止,观测不到中止的原因。可能的解释包括单轮抓取完成、调度周期,或与同期站点结构变更相关,本文不做归因。

OAI-SearchBot UA 组的分布与 GPTBot UA 组相反:155 次中 153 次指向规则与清单,仅 2 次指向内容。名称与官方说明可用于提出用途假设,但本地日志本身不能证明请求由谁发起或最终用于什么。

robots.txt 可按不同 UA 分别配置。是否放行应结合各服务的官方文档、内容授权策略和现场验证决定,不能只根据本样本的 UA 名称下结论。

OAI-SearchBot 的这 153 次规则请求中有 87 次返回 404,第六节单独分析这一现象。

5.2 长尾部分

DeepSeek 10 次、ChatGPT-User 7 次、Common Crawl 7 次、Perplexity 6 次、Amazon 2 次、字节 2 次、Meta 2 次,合计 36 次,占 AI 抓取总量的 4%。

ChatGPT-User UA 组只有 7 次请求。仅凭 UA 无法确认它们是否由真实用户触发,也无法据此比较商业价值。

六、一次配置缺失的可观测性分析

统计过程中出现一处异常:白名单内路径的请求中有 98 次返回 404。白名单由当前构建产物生成,对应页面均存在,正常情况下不应出现该状态码。

拆分后,其中 97 次的目标为同一个文件:/robots.txt。

爬虫白名单内路径返回 404 的次数
OAI-SearchBot87
ClaudeBot7
Amazonbot2
Bytespider2
7 月 21 日至 8 月 4 日,合计 98 次,其中 97 次的目标为 /robots.txt。同期 /robots.txt 首次成功返回为 8 月 1 日。

原因是该站在 8 月 1 日之前不存在 robots.txt 文件。站点由 Next.js 静态导出,早期版本未配置 robots 与 sitemap 的生成。

这一缺失具备一个值得单独讨论的性质:它在人可观测的所有维度上都不可见。浏览器渲染页面不请求这两个文件,因此前端无异常;站点可用性监控的指标是首页状态码、证书有效期与响应时间,这些指标全部正常;只有爬虫会请求它,而爬虫收到 404 后的行为不会反映在任何前端指标上。从 7 月 21 日至 7 月 31 日的 11 天里,OAI-SearchBot 累计发出 87 次请求,全部返回 404。

关于实际损失,需要区分协议层与行为层。协议层面,robots.txt 返回 404 应被爬虫理解为「无限制,允许全部抓取」,因此不构成显式拦截。但行为数据显示,OAI-SearchBot 在这 11 天内仅取过 2 次内容,其余请求全部消耗在反复索要一个不存在的文件上。本文无法从日志侧证明二者的因果关系——观测到的只是相关性。

补齐配置后,8 月 1 日起 /robots.txt 恢复正常返回,该路径的 404 由每日十余次降至零星(8 月 1 日之后仍有 8 次,尚未确定属于部署替换的间隙还是爬虫侧缓存)。同期 ClaudeBot 对 sitemap.xml 的抓取频次上升,但该窗口内存在其它同期改动,本文不将其作为因果证据。

这一案例说明 robots.txt、sitemap 与状态码值得作为独立检查项;它不能证明这些配置是可见性的第一道关卡。除原始日志外,专门探测这些路径也能发现此类失效。

七、内容侧的抓取分布

将抓取按具体页面拆分,可以看到内容被读取的实际分布:

文章被 AI 抓取次数抓取方
从 Demo 到生产:AI 应用真正难在哪10ClaudeBot 5、GPTBot 2、CCBot 2、Meta 1
为什么多数企业,仍未真正用上 AI9ClaudeBot 6、GPTBot 3
别为了用 AI 而用 AI6GPTBot 3、Perplexity 2、ClaudeBot 1
把 AI 变成生产力:鹊牛的落地方法论5GPTBot 3、ClaudeBot 2
当客户不再打开搜索框(本文的上一版)1ClaudeBot 1
产能不再是瓶颈之后1ClaudeBot 1
客户到底在谁手里1ClaudeBot 1
15 天内携带 AI 爬虫 UA 且命中文章路径的请求次数,合计 33 次;身份未核验。表中除本文外的文章已于 2026 年 8 月 5 日下架,观测窗口内它们是在线的,数字未作调整。

七篇文章在 15 天内合计命中 33 次相关 UA 请求,平均每篇每天 0.3 次。其中主题为「AI 搜索时代的可见性」的那一篇,窗口内命中 1 次。

这只能说明本窗口内各路径的请求分布不同。日志无法解释调度原因,也不能从这些数字反推出爬虫预算、站点权重或 sitemap 排序的影响。

该前提对一个常见困惑有直接解释力:持续产出内容却未在 AI 回答中被提及,其原因可能位于抓取环节而非内容质量环节。二者是可分离的问题,需要分别诊断。

八、可推出的判断

判断一:配置项应与内容一起检查

本样本中 62% 的相关 UA 请求指向 robots.txt 与 sitemap.xml。可检查项包括:robots.txt 是否误拦目标 UA,sitemap.xml 是否收录全部页面、lastmod 是否随更新变化,以及新页面进入 sitemap 的时延。该比例本身不能证明配置项优先级高于内容。

判断二:抓取量是过程指标,不是结果指标

服务器收到一次页面请求,只能证明该请求到达服务器;它不证明内容被保存、进入索引或训练库,更不证明会在回答中被引用。

将抓取量直接换算为「AI 曝光」的做法跳过了中间环节。引用的验证只能通过另一条路径:以目标用户的真实提问向各家 AI 提问并记录回答。该指标无法从服务器日志侧获得。

判断三:按爬虫类型分别决策,而非统一放行或统一屏蔽

不同 UA 可在 robots.txt 中分别配置,但日志不能证明请求身份、用途或是否由用户触发。决策前应核对各服务官方说明、内容授权边界,并用官方 IP 段或反向 DNS 等方法验证可验证的爬虫。

判断四:未声明口径的抓取量数字不具备可比性

本文第一版 UA 组总数相对“命中路径清单”的结果高出 335%,差异来自是否纳入非清单路径请求,而不是已经完成了 UA 真伪鉴定。

因此,评估「AI 爬虫抓取量增长 X 倍」时,应至少询问:日志能否按 Host 归属、UA 身份是否核验、如何处理非目标路径,以及 robots.txt 一类非内容请求是否计入。口径不同,数字不宜直接比较。

九、局限

本文统计存在以下已知短板,列出以限定结论的适用范围:

  • 样本为单站点、15 天。新建站点与有多年积累的站点,爬虫行为不具可比性。本文描述的是一个新站在当前时点的起点状态,不构成行业普遍规律。
  • 多站共用日志不含 Host,路径清单可能漏掉根路径,也可能误计其它站点的同名路径,因此误差方向未知。
  • 本文没有完成 UA 身份验证。更严谨的做法是按各家官方方法核对 IP 段或反向 DNS;不能把路径命中当作身份认证。
  • 服务器请求不等于保存、索引或引用。本文只能观察请求,后续环节需要各自独立验证。

第四条是本文与实际目标之间最大的一段距离。抓取量是过程指标,结果指标是「目标用户以自己的措辞提问时,AI 是否提及」。二者之间的转化率目前没有公开的可信数据。

十、结论

按本文的 UA 与路径分类口径,AI 爬虫 UA 组为搜索引擎 UA 组的 1.7 至 2.1 倍;这不等同于已核验官方爬虫的真实抓取量。是否纳入非清单路径会让 UA 组数字相差 3.35 倍,说明同类比较必须先对齐 Host、路径和身份核验口径。

在 871 次命中清单的相关 UA 请求中,62% 指向规则文件与页面清单。它提示工程配置值得单独监测,但不能据此认定配置是可见性的第一约束或内容产量不是约束。

本文数据的代表性有限:单台多站服务器、15 天、871 次命中路径清单的相关 UA 请求。其价值是公开分类方法和局限,而不是确认请求方身份或给出行业结论。

附:复现步骤

该统计不依赖任何商业工具,前提条件是服务器保留了访问日志。步骤如下:

  1. 确认日志留存。nginx 默认路径为 /var/log/nginx/access.log,通常保留 14 天,压缩归档在同目录。日志一经轮转删除不可恢复,需先确认保留策略。
  2. 生成站点合法路径清单。静态站直接取构建产物目录;动态站从路由表导出。该清单是后续全部判断的基准。
  3. 解析日志,按 User-Agent 将请求分为 AI 爬虫、搜索引擎、其他三类。各家 AI 爬虫的 UA 标识在其官方文档中公开,主流十余个可覆盖九成以上。
  4. 将目标路径不在清单内的请求单列,不论其 UA 声称身份。两组差异是路径分类结果,不是 UA 真伪结论。
  5. 将 robots.txt 与 sitemap.xml 单独拆出。剩余部分是命中页面正文或静态资源路径的请求,身份仍未核验。
  6. 按爬虫分组统计抓取节奏、活跃天数与目标页面。行为差异比总量更具信息量。
两点提示:其一,访问日志含访问者 IP,属个人信息,分析应只做聚合统计,避免复制原始日志或上传至第三方工具。其二,多站点共用日志时优先补充 Host 维度;无法归属时应明确说明可能漏计也可能误计,不能把估算值称为下限。

想把这些落到你的业务里?

少谈概念,先聊清你的场景。

继续阅读 / More