User-Agent 是初筛,不是身份证。外贸站日志里出现
GPTBot、Googlebot、PerplexityBot或ClaudeBot,只能说明请求头自称如此;在验证 IP、DNS 或官方 IP 段之前,不要把它当成真实平台访问,更不要把抓取当成引用、排名或收录成功。
很多外贸站开始看 AI 爬虫日志后,会犯一个很典型的错误:在访问日志里搜到某个 User-Agent,就截图说“某某 AI 已经来抓我们网站了”。
这句话最多只能说一半。
更准确的表达应该是:日志里出现了声称为某某爬虫的 User-Agent。至于它是不是真的来自 Google、Bing、OpenAI、Perplexity 或 Anthropic,还需要继续验证。
这就是识别 AI 爬虫时最容易踩的边界:User-Agent 可以帮你筛线索,但不能单独证明身份。
User-Agent为什么不够
User-Agent 本质上是 HTTP 请求头里的一个字符串。浏览器、爬虫、脚本、监控工具都可以发送它。你在服务器日志里看到的通常是这样的字段:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot
问题在于,这个字符串可以被伪造。
一个普通脚本也可以把 User-Agent 写成 Googlebot。一个采集器也可以把自己伪装成 bingbot。如果你只看 UA,就把所有自称大平台的访问都放行,可能会放进大量假爬虫;如果你只看 UA 就拉黑,也可能误伤真实搜索引擎或 AI 平台访问。
外贸站更现实的风险是:你以为 AI 平台在抓核心产品页,实际只是垃圾请求伪装;你以为 Googlebot 被防火墙放行,实际真实 Googlebot 被 CDN 挑战拦住;你以为 ChatGPT 抓取了询盘页面,实际只是用户触发的一次网页读取,跟搜索索引无关。
日志字段分别能证明什么
| 信号 | 能说明什么 | 不能说明什么 | 建议用途 |
|---|---|---|---|
| User-Agent | 请求头自称是谁 | 不能证明真实身份 | 初筛线索 |
| IP range | 来源 IP 是否落在官方公布范围 | 不能说明该页面会被引用或排名 | 身份验证、WAF 放行 |
| Reverse DNS | IP 反查域名是否属于官方域 | 不能替代业务效果判断 | 验证 Googlebot、Bingbot 常用 |
| Official JSON | 平台公布的 IP 段来源 | 不能证明每次抓取都有商业价值 | 自动更新白名单 |
| WAF/CDN 日志 | 是否被拦截、挑战、限速 | 不能说明内容被理解 | 排查抓取障碍 |
| 访问路径 | 哪些 URL 被访问 | 不能说明被收录、引用或成交 | 判断核心页面覆盖情况 |
所以,日志分析不是“看到 UA 就结束”,而是一条证据链:UA 是第一层,IP/DNS 是第二层,URL、状态码和页面类型是第三层。
主流平台的验证边界
| 平台 | 常见识别线索 | 官方验证方式或来源 | 判断边界 |
|---|---|---|---|
| Googlebot | UA 中出现 Googlebot 等 Google crawler 标识 |
Google 官方建议反向 DNS、正向 DNS,并提供 crawler IP ranges JSON | 验证通过只能说明请求来自 Google crawler,不等于页面已排名 |
| Bingbot | UA 中出现 bingbot |
Bing 提供 Verify Bingbot 工具、反向/正向 DNS 方法和 Bingbot JSON | 验证通过只能说明请求来自 Bingbot,不等于 Bing 或 Copilot 已展示 |
| OpenAI | OAI-SearchBot、GPTBot、ChatGPT-User 等 |
OpenAI 官方 crawler 文档和对应 IP JSON | 不同 UA 用途不同,ChatGPT-User 通常是用户触发,不等于自动索引 |
| Perplexity | PerplexityBot、Perplexity-User |
Perplexity 官方 crawler 文档和 IP JSON | Perplexity-User 是用户动作相关访问,不能等同训练或索引 |
| Claude / Anthropic | ClaudeBot、Claude-User、Claude-SearchBot |
Anthropic/Claude 官方爬虫说明和 IP 列表 | 需要区分训练、用户触发访问、搜索相关访问 |
这个表对外贸团队很重要。因为“OpenAI 来了”“Claude 来了”这种话太粗了。你至少要分清:是训练相关爬虫、搜索相关爬虫,还是用户触发的临时访问。
可复制的基础排查命令
下面假设你的 Nginx 访问日志路径是 /var/log/nginx/access.log。实际路径以服务器配置为准。
先筛出常见 AI 和搜索爬虫 UA:
grep -Ei 'Googlebot|bingbot|GPTBot|OAI-SearchBot|ChatGPT-User|PerplexityBot|Perplexity-User|ClaudeBot|Claude-User|Claude-SearchBot' /var/log/nginx/access.log
只看某个 UA 的访问 URL、状态码和 IP,需要根据你的日志格式调整。常见 combined log 可以先粗略查看:
grep -Ei 'GPTBot|OAI-SearchBot|ChatGPT-User' /var/log/nginx/access.log | awk '{print $1, $7, $9, $12}'
这里的 $12 不一定是完整 User-Agent。不同 Nginx / Apache 日志格式字段位置不同;如果要精确提取完整 UA,先确认 access log 的格式,或者在日志平台里直接按 user_agent 字段过滤。
对某个 IP 做反向 DNS 查询:
host 66.249.66.1
拿反查出来的主机名再做正向 DNS,确认是否回到原 IP:
host crawl-66-249-66-1.googlebot.com
用 dig 查 PTR 也可以:
dig -x 66.249.66.1 +short
拉取 Google crawler IP ranges JSON 示例:
curl -L https://developers.google.com/crawling/ipranges/common-crawlers.json
拉取 Bingbot JSON 示例:
curl -L https://www.bing.com/toolbox/bingbot.json
拉取 OpenAI 相关 JSON 示例:
curl -L https://openai.com/searchbot.json
curl -L https://openai.com/gptbot.json
curl -L https://openai.com/chatgpt-user.json
拉取 Perplexity 相关 JSON 示例:
curl -L https://www.perplexity.com/perplexitybot.json
curl -L https://www.perplexity.com/perplexity-user.json
拉取 Claude/Anthropic 爬虫 IP 列表示例:
curl -L https://claude.com/crawling/bots.json
这些命令的作用是建立判断材料,不是让你手动长期维护。外贸站如果接入了 WAF、CDN 或日志平台,最好把官方 JSON 拉取和 IP 匹配做成自动更新规则。
外贸站日志判断流程
建议按五步走。
第一步,筛 UA。先从日志里找 Googlebot、bingbot、OAI-SearchBot、GPTBot、ChatGPT-User、PerplexityBot、Perplexity-User、ClaudeBot、Claude-User、Claude-SearchBot 等标识。此时只能记录为“声称为某平台的请求”。
第二步,看状态码。重点看核心页面是不是返回 200,有没有大量 403、404、429、5xx。如果真实爬虫总是被防火墙挑战、限速或拦截,后面谈 AI SEO 没意义。
第三步,看 URL。外贸站要关心的不是爬虫有没有访问首页,而是有没有访问这些页面:
- 核心产品分类页
- 高毛利产品详情页
- 解决方案页
- FAQ 页面
- 案例页面
- About / Factory / Quality control 页面
- Contact 页面
如果日志里只有 /、/robots.txt、/favicon.ico,说明信息还很有限。一次访问 robots.txt 不能说明核心内容被抓。
第四步,验 IP 或 DNS。Google 按官方建议做反向 DNS 和正向 DNS 确认,也可以结合官方 IP ranges JSON。Bing 可以用 Verify Bingbot 工具、DNS 验证和 Bingbot JSON。OpenAI、Perplexity、Anthropic 则优先参考各自官方 crawler 文档和 IP JSON/列表。
第五步,分开写判断。建议在内部报表里用这种措辞:
- “日志中出现声称为 GPTBot 的 User-Agent”
- “该 IP 命中 OpenAI 官方 GPTBot JSON 范围”
- “该请求访问了英文产品分类页,状态码为 200”
- “这说明页面具备被该爬虫访问的记录,但不代表被引用、排名或收录”
这种写法看起来保守,但对老板、技术和推广团队都更准确。
一个判断样例
假设你看到一条访问记录:
203.0.113.10 - - [13/Aug/2026:07:30:00 +0800] "GET /products/cnc-machining/ HTTP/1.1" 200 "-" "GPTBot/1.4; +https://openai.com/gptbot"
不要直接写“OpenAI 已经抓取并会引用我们的 CNC 页面”。更稳的判断顺序是:
| 判断项 | 记录 |
|---|---|
| UA 初筛 | 声称为 GPTBot |
| 页面类型 | 英文产品分类页 /products/cnc-machining/ |
| 状态码 | 200,说明服务器正常返回 |
| 身份验证 | 还需要核对来源 IP 是否命中 OpenAI 官方 JSON |
| 可写结论 | “日志出现声称为 GPTBot 的请求,访问了 CNC 产品分类页并返回 200;身份仍需用官方 IP JSON 复核,不能据此判断已被引用或用于训练。” |
这个写法比“AI 来了”啰嗦一点,但更接近事实。
不要把抓取当成效果
外贸企业做 AI SEO,最容易把“爬了”误读成“成了”。
抓取只是访问。它不等于:
- 搜索引擎已收录
- AI Answer 已引用
- 关键词排名提升
- 采购商看到了你的页面
- 询盘会增加
验证通过的爬虫访问,最多说明“真实平台的某类爬虫或用户触发请求到达过你的网站,并拿到了某个响应”。接下来还要看页面内容质量、可索引状态、结构化表达、品牌可信度、外部提及、用户需求匹配,以及平台自己的生成和展示逻辑。
这就是日志判断的边界。
外贸站真正应该建立的是一套朴素但可靠的监控:核心页面是否能被真实爬虫访问,访问是否成功,是否被安全规则误伤,哪些页面长期没有被抓,哪些高价值页面返回错误。先把这件事做扎实,比盯着一个 User-Agent 字符串兴奋更有价值。
参考资料
- OpenAI: Overview of OpenAI Crawlers
- Google: Verify requests from Google crawlers and fetchers
- Google: Common crawlers IP ranges JSON
- Perplexity: Perplexity Crawlers
- Claude Help Center: Anthropic crawlers and how site owners can block them
- Claude crawler IP list
- Bing: How to Verify Bingbot
- Bing: Verify Bingbot Tool
- Bingbot JSON