AI爬虫怎么识别和分析 2026:日志里九成结论是错的
不做 IP 验真,你日志里关于 AI 爬虫的结论九成是错的。在自有站点 2026 年 8 月 18–25 日 nginx 日志中,声称 GPTBot 的请求 91% 是伪造,单日 261 次里有 260 次来自自身检测脚本。读完后你会拿到一套可复用的验真与分类流程:用 OpenAI、Perplexity 官方 IP 段或双向 PTR 反解验证 UA,排除自有 IP 后按资源类型拆分统计。实测显示 Bytespider 1341 次请求中只有 12% 是 HTML,Applebot 抓了 192 次 JS,ChatGPT-User 99% 只取 HTML;ChatGPT-User 违反 robots.txt 6 次而 Bytespid
本文要点
- 不做 IP 验真,你日志里关于 AI 爬虫的结论九成是错的。
- 在自有站点 2026 年 8 月 18–25 日 nginx 日志中,声称 GPTBot 的请求 91% 是伪造,单日 261 次里有 260 次来自自身检测脚本。
- 读完后你会拿到一套可复用的验真与分类流程:用 OpenAI、Perplexity 官方 IP 段或双向 PTR 反解验证 UA,排除自有 IP 后按资源类型拆分统计。
先说结论:不做 IP 验真,你日志里关于 AI 爬虫的结论九成是错的。 我们站上历史数据里,声称自己是 GPTBot 的请求 91% 是伪造的;而今天单日 261 次「GPTBot」里,有 260 次来自我们自己的服务器——是自家检测脚本在污染统计。
这篇讲怎么把 AI 爬虫从日志里正确地分离出来、各家的行为差异实测是什么样、以及哪些流行判断经不起验证。全部数据来自我们自己站点 2026 年 8 月 18–25 日的 nginx 日志。
一、第一步永远是验真,UA 一个字都不能信
任何以 User-Agent 为准的 AI 爬虫统计都是不可用的。 伪造成本为零,而收益很直接——冒充 GPTBot 能绕过大量按 UA 放行的反爬规则。
三类验真方式
|
爬虫 |
验真方式 |
可靠性 |
|---|---|---|
|
GPTBot / OAI-SearchBot / ChatGPT-User |
OpenAI 官方 IP 段 JSON |
高,可判真也可判假 |
|
PerplexityBot |
Perplexity 官方 JSON |
高 |
|
Googlebot / bingbot / Baiduspider / PetalBot / Amazonbot / Sogou |
PTR 反解,校验域名后缀 |
高 |
|
ClaudeBot / Bytespider |
只能靠 PTR 后缀 |
中——无 PTR 时无法证真也无法证伪 |
官方 IP 列表的地址是公开的:openai.com/gptbot.json、openai.com/searchbot.json、openai.com/chatgpt-user.json、perplexity.ai/perplexitybot.json。前两个各有二三十条网段,chatgpt-user.json 有两百多条。
PTR 验真要做双向:先反解 IP 拿域名,再正解域名看是否回到同一个 IP。只做反解会被伪造 PTR 骗过。
实测结果
2026-08-25 单日,按上述方式逐条验:
|
声称的 Bot |
请求 |
验真结果 |
|---|---|---|
|
GPTBot |
261 |
真 1,自有流量 260 |
|
bingbot |
73 |
真 73 |
|
PetalBot |
49 |
真 49 |
|
Bytespider |
46 |
真 33,无 PTR 存疑 13 |
|
Baiduspider |
43 |
真 43 |
|
Googlebot |
22 |
真 22 |
|
ClaudeBot |
10 |
全部无 PTR,存疑 |
|
ChatGPT-User |
6 |
真 6 |
|
facebookexternalhit |
4 |
真 1,伪造 3 |
那 3 个伪造的 facebookexternalhit,反解出来一个是河北电信的家用宽带 60.10.219.146。
自有流量是最容易被忽略的污染源。 我们的检测脚本用 GPTBot 的 UA 请求自己的站点,如果不按 IP 排除服务器自身和内网段,会得出「GPTBot 抓取量暴涨」的荒谬结论。
二、各家 AI 爬虫的行为差异极大,不能用同一套假设
「AI 爬虫」不是一个统一的东西。 8 天累计 2306 次验真通过的请求,按抓取内容拆开:
|
爬虫 |
总请求 |
HTML |
图片 |
JS |
HTML占比 |
|---|---|---|---|---|---|
|
ChatGPT-User |
305 |
301 |
4 |
0 |
99% |
|
OAI-SearchBot |
266 |
199 |
9 |
5 |
75% |
|
GPTBot |
64 |
40 |
9 |
1 |
62% |
|
PerplexityBot |
14 |
7 |
1 |
0 |
50% |
|
Applebot |
316 |
93 |
0 |
192 |
29% |
|
Bytespider |
1341 |
156 |
815 |
273 |
12% |
三种行为模式对应三种技术原理:
ChatGPT-User 99% 只取 HTML,因为它根本不是爬虫——它是用户在对话里让 AI 打开某个链接时的实时取页,取回正文就够了,不需要样式和图片。
Applebot 抓了 192 次 JS,这是正常的。Apple 官方文档说明 Applebot 会执行 JavaScript 渲染页面,不拉 JS 反而说明它没在正确渲染。如果你的站是前端渲染的,Applebot 的 JS 抓取量是它能否读懂你页面的直接指标。
Bytespider 只有 12% 是 HTML,815 次图片抓取集中在 26 个文件、平均每个 31 次,其中 600 次是 206 Range 分块请求——对几 KB 的 SVG 做分块下载没有意义,是下载器实现粗糙。字节做多模态,采集图片有业务动机,但实现方式很浪费。
但不要因此去封它
八天累计 12.92 MB,日均 1.61 MB。这个量级不构成任何负担。
而且「抓取预算」是 Google SEO 的概念,指爬虫对单站的配额。没有证据表明 AI 爬虫的图片抓取会挤占 HTML 抓取——把这个概念平移过来是想当然。真按直觉禁掉图片,对多模态引擎可能反而有害。
三、社区结论不能照搬,必须用自己的日志验
Bytespider 在社区里被广泛批评为最激进的 AI 爬虫,核心指控三条:高频、多 IP 分散、不遵守 robots.txt。有站点报告单日 140 万次请求。
第三条在我们站上不成立。
|
爬虫 |
请求 |
IP数 |
读 robots.txt |
违反 robots.txt |
|---|---|---|---|---|
|
Bytespider |
1341 |
284 |
83 次 |
0 |
|
Applebot |
316 |
108 |
22 次 |
0 |
|
OAI-SearchBot |
266 |
49 |
52 次 |
0 |
|
ChatGPT-User |
305 |
190 |
0 次 |
6 次 |
我们的 robots.txt 禁了 /dashboard/、/login、/trial、/api/。Bytespider 读了 83 次、一次都没越界;反倒是 ChatGPT-User 抓了 6 次被禁路径。
多 IP 分散这一条倒是印证了:284 个 IP 分摊 1341 次请求,人均 4.7 次。
为什么会和社区结论不同:社区样本多是大流量新闻站,那里的抓取压力和我们这个体量完全不同。任何关于爬虫行为的判断,都必须在自己的日志里重新验一遍。
四、日志分析本身的四个陷阱
这几条不是理论,是我们实际踩过并纠正的。
① 请求数不等于访问量。 一次页面加载会产生十几个静态资源请求,SPA 还会每隔几分钟轮询版本文件。我们统计微信流量时,原始请求 379 次,拆开只有 36 次真页面——静态资源 273 次、版本轮询 65 次,放大了 9.8 倍。
② 客户端路由在日志里几乎不可见。 前端框架的客户端跳转不产生完整的页面请求。Next.js App Router 会发带 _rsc= 参数的请求(还能识别),而纯 SPA 的路由切换一条日志都没有——你会以为用户只看了一页。
③ 脚本会伪装成浏览器 UA。 判断真人最可靠的单一信号是:有没有拉取过 JS 和 CSS。脚本几乎不会去取样式和前端 chunk,真浏览器必然会取。我们用这一条把 496 个会话筛到 161 个真人会话,跳出率从 83.7% 修正到 47.8%。被剔掉的里面有 Dalvik/2.1.0(Android 原生 HTTP 客户端)、空 UA,还有 LumiAI-BrandRelevance/1.0——另一家 AI 品牌监测服务的爬虫。
④ 日志会轮转,历史会永久丢失。 nginx 默认保留两三周。我们要回溯 7 月某次流量异动时,日志已经没了。凡是要看长期趋势的指标,必须每天跑一次并把结果追加进自己的文件。
五、抓取量会随发布节奏衰减,这条可以量化
验真后的每日真实 AI 爬虫请求,对照当日发文量:8/18 为 177 次、发文 4 篇;8/19 为 459 次、发文 28 篇;8/20 为 216 次、发文 4 篇;8/21 为 688 次(峰值,前几日余波)、发文 1 篇;8/22 为 239 次、发文 0;8/23 为 283 次、发文 0;8/24 为 207 次、发文 0;8/25 为 50 次(截至 14:52)、新发 4 篇。
连续四天零更新之后,抓取量单调下滑。 这与我们采集到的内容被引持续时间吻合——餐饮类平均 5.3 天、工业类 3.9 天(判定标准是连续 2 天未被引用即视为结束)。
更值得注意的是负循环:8/25 发了 4 篇新文章,全部进了 sitemap,爬虫当天读了 25 次 sitemap,但这 4 篇的抓取次数是 0。 停更让爬虫降低了重访优先级,新内容的发现速度也跟着变慢。
六、和搜索引擎最根本的差异
这一条决定了前面所有技术手段的边界。
|
|
搜索引擎 |
AI 引擎 |
|---|---|---|
|
站长后台 |
有 |
完全没有 |
|
主动提交 |
IndexNow、百度主动推送 |
无任何接口 |
|
收录查询 |
可查 |
不可查 |
|
申诉渠道 |
有 |
无 |
|
曝光点击数据 |
官方口径 |
无 |
|
referer 归因 |
基本可用 |
大部分不传 |
|
抓到 = 可被检索 |
基本成立 |
抓到 ≠ 会被引用 |
最后一行是核心。SEO 里收录基本等于可被检索到;AI 引擎抓走了你的内容,不代表它在回答里会引用你。 日志能告诉你「它来过」,永远告诉不了你「它用了没有」。
所以日志分析只能解决一半问题,另一半只能靠主动去问 AI。 这不是工具选择,是这套体系的物理边界。
七、一套可复用的最小流程
如果你要从零开始搭 AI 爬虫的日志分析,这是顺序:
- 拉官方 IP 列表,缓存到本地,每周更新一次
- 按 IP 段或双向 PTR 验真,把伪造的单独归一类——它本身是个安全信号
- 排除自有流量:服务器自身 IP、内网段、自己的检测脚本
- 按资源类型分类:HTML / 客户端跳转 / 静态资源 / 机器噪音,只有前两类算页面
- 分爬虫统计,不要合并——各家行为差异大到合并后没有意义
- 每天固化一次快照,对抗日志轮转
- 抓取量与发布量并排看,这两条曲线的关系比任何单一数字都有信息量
第 5 步最容易被跳过。把所有 AI 爬虫合并统计,会得出「七成抓取浪费在静态资源上」这种结论——实际上那是 Bytespider 一家的行为,OpenAI 系的爬虫 99% 在抓 HTML。
常见问题
问:ClaudeBot 没有官方 IP 列表,怎么判断真假?
只能靠 PTR 后缀(.anthropic.com / .claude.ai),而且无 PTR 时既不能证真也不能证伪。我们的做法是单独标为「存疑」,不并入真实统计也不并入伪造统计。在数据里保留一个诚实的不确定类别,比强行归类要好。
问:应该封禁 Bytespider 吗?
按我们的实测数据没有必要——日均 1.61 MB,且它遵守 robots.txt。如果你的站点体量大得多、实测确认它造成了负担,那是另一回事。决定应该来自你自己的日志,不是社区帖子。
问:怎么区分「被抓取」和「被引用」?
日志区分不了。被抓取是服务器能看到的,被引用发生在 AI 的回答里,服务器完全看不见。唯一的办法是用固定的问题集去问各个引擎,记录回答里出现了谁、引用了哪些来源,并留存原始回答以便复核。
问:自有检测流量怎么排除最稳妥?
按 IP 排除,不要按 UA。我们的脚本会用各种 UA(包括 GPTBot)请求自己的站点,只有 IP 是稳定的标识。同时要排除内网段和跳板机 IP。
基于中立监测底座的 GEO 研究与实践,持续提供可核验、可执行的行业内容。