先看一个真实而普遍的场景。某企业官网做过一轮内容更新,最近在 AI 搜索里被引用过几次,老板很高兴,让技术查一下”我们的内容是不是被 AI 抓走了”。技术打开后台的访问统计,看了一圈——只有几个人访问,没有看到任何”AI 爬虫”的痕迹,于是回复:”好像没抓到。”

但真正的答案在服务器日志里,而且和统计后台显示的完全相反:AI 检索爬虫确实来过,而且次数不少,只是每一次请求都被 WAF 拦成了 403。原因是这台服务器的安全策略里,有一条”拦截陌生 User-Agent 的高频访问”的规则,把一个从没见过的英文标识当成了攻击者。

这个案例说明了三件事:一是后台统计看不到爬虫,因为它靠 JavaScript 上报,而爬虫基本不执行 JS;二是服务器日志是唯一诚实的记录;三是”有没有被 AI 抓”这个问题,很可能卡在技术配置上,而不是内容质量上。

这篇文章把日志分析拆成”是什么—怎么看—怎么判”三层,适合有一定技术基础、或者要和技术同事对话的市场与运营负责人。

一、为什么日志比后台统计更可信

后台统计工具(百度统计、各类访问分析)的工作方式是:在页面里嵌入一段脚本,访客打开页面时由浏览器执行脚本、把数据上报。这套机制有两个天生的盲区:

  • 爬虫不执行 JavaScript。搜索引擎爬虫和绝大多数 AI 抓取程序只取 HTML,不跑页面里的脚本,所以完全不会出现在统计里。
  • 统计有采样和过滤。为了数据好看和性能考虑,工具会做估算、过滤掉”疑似机器人”的流量——被过滤掉的恰恰是你要看的那部分。

而服务器的访问日志记录的是每一次 HTTP 请求,不管来的是人、是爬虫、是扫描器还是恶意探测。所以日志同时能回答三类问题:搜索引擎有没有来抓(收录诊断)、AI 有没有来抓(AI 可见性诊断)、以及有没有人在恶意探测(安全诊断)。

二、一行访问日志里都有什么

常见的日志格式长这样(字段顺序因服务器软件和配置而异):

203.0.113.45 - - [28/Sep/2026:10:12:33 +0800] "GET /website-migration-guide/ HTTP/1.1" 200 18432 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

拆开看,真正需要关注的是这几列:

  • IP 地址:谁发起的请求。后面验证真伪要用到它。
  • 时间戳:判断抓取频次、时段分布。深夜里密集抓取的多半是程序。
  • 请求方法与 URL:它抓了哪些页面。这是最有价值的一列——能看出它盯着你的内容页,还是在乱翻后台路径。
  • 状态码:它拿到了什么。200 是正常,403 是被拒绝,404 是页面不存在,301 是跳转,5xx 是服务器出错。如果重要爬虫拿到的是 403 或 404,那你的可见性问题就是技术问题,不是内容问题。
  • 响应字节数:字节数异常小,往往意味着返回的是错误页而不是真内容。
  • User-Agent(UA):对方自称是谁。注意:UA 只是一段文本,谁都可以写成别人的名字。所以它只是识别的起点,不是证据。

三、主流爬虫与 AI 爬虫的标识一览

下面按厂商整理常被误判、也最值得关注的 UA 标识。表中「用途」一列是读懂日志的关键,第五节会展开讲它的重要性。

厂商 UA 标识 用途 验证方式
百度 Baiduspider(含 Baiduspider-render) 搜索索引 双向 DNS 反查,主机名须为 *.baidu.com / *.baidu.jp
360 / 搜狗 / 神马 360Spider、Sogou web spider、YisouSpider 搜索索引 各厂商 DNS 反查
Microsoft bingbot 搜索索引(也为 Copilot 供源) 反向 DNS 指向 *.search.msn.com
OpenAI GPTBot 模型训练 官方公开 IP 段清单
OpenAI OAI-SearchBot AI 搜索索引 官方公开 IP 段清单
OpenAI ChatGPT-User 用户触发的实时抓取 官方公开 IP 段清单
Anthropic ClaudeBot / Claude-User 模型训练 / 实时抓取 官方公布的抓取说明与 IP 清单
Perplexity PerplexityBot / Perplexity-User AI 搜索检索 / 实时抓取 官方公开的爬虫说明页
字节 Bytespider 模型训练与内容聚合 无公开 IP 段,对 robots 的遵守存在争议
Meta meta-externalagent 模型训练 无公开 IP 段
Common Crawl CCBot 公开数据集采集 反向 DNS 指向 *.commoncrawl.org
Google Googlebot 搜索索引 反向 DNS 指向 *.googlebot.com / *.google.com
Google Google-Extended 训练授权开关(非爬虫) 仅 robots.txt 标识,不发起 HTTP 请求

最后一行值得单独说明:Google-Extended 不是一个会来抓取的程序,它只是 robots.txt 里的一个标识,用来控制是否允许 Google 把内容用于模型训练。你在日志里永远找不到它——把它当成真实爬虫去排查,会白费功夫。

四、光看 UA 不够:两步验证真伪

UA 可以随意伪造。有人冒充搜索引擎爬虫高频抓取内容,也有人借爬虫名义做漏洞扫描,所以”日志里出现了这个标识”只能作为线索,必须验证。

国内站点最实用的一步:百度官方给的双向验证法

百度搜索资源平台给出的识别方法很明确,分两步:

  • 第一步,反查 IP。Linux 下执行 host IP地址,Windows 下执行 nslookup IP地址,macOS 下执行 dig -x IP地址。Baiduspider 的主机名必须以 *.baidu.com 或 *.baidu.jp 结尾,不是这个格式就是冒充。
  • 第二步,正向确认。对第一步得到的主机名再做一次正向解析,看它是否解析回日志里那个原始 IP。一致才确认是自己的蜘蛛,不一致就是冒充。

这里有个非常重要的提醒:百度明确表示蜘蛛的 IP 池是不断变动的,无法提供 IP 全集。所以”把这些 IP 加进白名单”这种做法的思路本身就不成立——你今天加进去的名单,明天就不全了,而名单外的真蜘蛛会被你当成假的拦掉。验证要基于”反查 + 正向确认”这套方法,而不是一份固定 IP 表。

AI 厂商:多数提供公开的 IP 段清单

OpenAI、Anthropic、Perplexity 等厂商目前大多在固定地址提供爬虫 IP 段的公开清单,做法是”取回清单 → 判断请求 IP 是否在范围内”。这类清单建议定期刷新(例如每天或每周自动拉取一次),而不是写死在配置里。

另外要区分一个层级:像 ChatGPT-User、Perplexity-User 这类由用户实时触发的抓取,请求可能来自用户自己的网络环境而非厂商机房。这时候用”IP 必须属于厂商”的严格规则去卡,会把真实的用户访问误判成伪造——所以验证要做成分层的,而不是一刀切。

五、关键区别:训练爬虫和检索爬虫不是一回事

这是整篇文章最需要记住的一段,因为它直接决定”要不要屏蔽 AI 爬虫”这个问题的答案。

按用途划分,来抓你网站的程序至少分四类:

  • 传统搜索索引:Baiduspider、bingbot、Googlebot。决定你在传统搜索里的收录与排名。
  • 模型训练抓取:GPTBot、ClaudeBot、CCBot、meta-externalagent、Bytespider。收集语料用于训练,影响的是”未来的模型知识”,不直接影响你今天被不被引用。
  • AI 搜索索引:OAI-SearchBot、PerplexityBot 等。为 AI 搜索建立与更新索引。
  • 用户触发的实时抓取:ChatGPT-User、Claude-User、Perplexity-User。用户提问或让 AI 看某个链接时,AI 当场来取这一页。

结论很清晰:只有「AI 搜索索引」和「用户触发的实时抓取」这两类,与”你的内容会不会被 AI 答案引用”直接相关;训练抓取与引用没有直接关系。

这意味着两件事:

  • 如果你希望被 AI 搜索引用(这也是 SEO 之外的新增入口),那么你真正要保证的是检索类爬虫能顺利抓到你的页面(返回 200,不被 WAF 拦,不被 robots 挡)。
  • 如果你介意内容被用于模型训练,可以只针对训练类爬虫做限制——但这属于策略选择,而且需要知道:robots.txt 对部分爬虫只是”君子协定”,字节的 Bytespider 长期被报告存在不遵守 robots.txt 的情况。如果确实要拦,robots.txt 之外还需要在服务器或 CDN 层面做规则,同时务必不要把检索类爬虫一起误伤。

还有一个现实提醒:日志里的 AI 抓取并不都可信。有第三方对 90 天的生产环境日志做过统计,在上万次声明为 AI 爬虫的请求中,约七成多能通过 IP 段或反向 DNS 验证真实身份,另有约两成属于伪造;其中 GPTBot 与 PerplexityBot 的伪造比例尤其高(分别约四成与五成失败),而 Amazonbot、ChatGPT-User、ClaudeBot 的验证通过率较高。所以看到 AI UA 先别急着高兴或紧张,验证过再说。

六、用日志回答四个实际问题

问题一:我的新文章被收录了吗

在日志里筛搜索引擎的 UA,看它有没有抓过新文章的 URL、抓了几次、返回的是什么状态码。如果压根没来抓,说明链接结构或提交渠道有问题;如果来了但返回 403/404,说明是服务器在拒绝它。这比在后台反复”提交链接”有用得多。

问题二:AI 搜索在抓我的站吗

筛选检索类与实时抓取类的 UA(如 OAI-SearchBot、PerplexityBot、ChatGPT-User),重点看两件事:有没有来,以及拿到的状态码是不是 200。如果发现大量 403,需要立刻检查安全插件、WAF、CDN 的规则——这正是开头那个案例的真实成因。

问题三:爬虫有没有给服务器造成压力

按小时统计抓取量,看是否集中在特定时段、是否抓取了大量无意义的组合参数页面(如筛选、排序、分页的无限组合)。如果压力来自真爬虫,可以通过抓取频次设置在后台做调节;如果来自伪装的抓取,那属于安全范畴,要用规则而不是 robots 处理。

问题四:是不是有人在恶意抓取

几个典型特征:请求频率远高于正常爬虫、访问路径集中在后台地址或敏感文件、UA 声称是浏览器但行为完全是脚本、反向解析指向普通主机商、或者同一个 IP 轮流切换多个不同厂商的爬虫标识。最后一个特征特别值得警惕——一台机器同时自称好几家的爬虫,基本可以确定是采集工具。

七、最容易踩的四个坑

  • 用 IP 白名单来”封冒充蜘蛛”。这是最常见的错误。搜索引擎蜘蛛的 IP 池是变动的,白名单必然不全,结果是真蜘蛛被误封、假蜘蛛照样进来。正确做法是反查 + 正向确认,或者干脆交给专业的爬虫验证服务。
  • 一条 Disallow 挡掉全站。为了”防止内容被偷”,在 robots.txt 里写了禁止所有爬虫——连带把索引类爬虫一起挡了。等你发现收录没了,往往已经过去几周。
  • 安全策略按 UA 一刀切。把陌生的英文 UA 一律视为攻击,会精准地拦掉 AI 检索爬虫。拦截规则上线前,应该先观察它拦掉的是谁,而不是只统计拦了多少条。
  • 日志只留 7 天、或者干脆关掉。日志诊断的价值在于趋势对比——只留一周,就看不出”这次改版之后爬虫还来不来”。建议至少保留 30 天,重要站点保留 90 天。

最后回到开头那个案例。那家网站的内容其实不错,问题只出在一条安全规则上。这也是日志分析最实际的价值:它把”内容好不好”这种无法验证的争论,变成”爬虫来没来、拿到了什么状态码”这种可以核对的事实。

相关的延伸阅读:如果日志显示爬虫根本不来,可以先看网站不被百度收录怎么办;想系统提升被 AI 引用的概率,看GEO 优化怎么落地;让 AI 更准确理解页面内容,可以配合企业官网结构化数据怎么配;而日志分析要和访问数据放在一起看才完整,参考企业官网数据怎么看。需要我们对你的站点做一次抓取可访问性与 AI 可见性的联合诊断,可以通过首页的联系方式找到我们。