AI 爬虫模拟:GPTBot、ClaudeBot 能读到你的页面吗
输入一个网址,工具用普通浏览器、Googlebot 和 5 个 AI 爬虫的 User-Agent 各请求一次,按「能不能进来、能不能读到、能不能用、日期是否一致」四层给出结论和修复代码。
要点
- 工具用普通浏览器、Googlebot 和 5 个 AI 爬虫的 User-Agent 各请求一次页面,按能不能进来、能不能读到、能不能用、日期是否一致四层给出结论。
- 请求从 Vercel 数据中心发出,只模拟 User-Agent,所以拦截结论只能写「疑似」,需要用服务器或 CDN 日志确认。
- 工具解析原始 HTML,不执行 JavaScript。主流 AI 爬虫也不执行 JavaScript,所以正文靠 JavaScript 生成的页面可能读不到。
- 硬性条件只判通过或不通过,其余结论是建议并标注证据等级,工具不出综合分。
这个工具检查什么
很多网站在 robots.txt 里放行了 AI 爬虫,ChatGPT、Claude、Perplexity 却始终不引用它们。常见原因有三个:CDN 或防火墙按 User-Agent 拦掉了爬虫;正文靠 JavaScript 生成,爬虫拿到的 HTML 是空的;页面带有 noindex、nosnippet 这类指令。robots.txt 检测工具只能发现第一层里的一小部分,本工具直接请求页面,把这几层一起查。
工具检查的 7 个 User-Agent:
| User-Agent | 运营方 | 用途 |
|---|---|---|
| Chrome(基准) | — | 对照组,判断拦截是否和 User-Agent 有关 |
| Googlebot | Google 搜索、AI Overviews 和 AI 模式 | |
| OAI-SearchBot | OpenAI | ChatGPT 搜索结果 |
| Claude-SearchBot | Anthropic | Claude 搜索结果 |
| PerplexityBot | Perplexity | Perplexity 搜索索引 |
| GPTBot | OpenAI | 模型训练 |
| ClaudeBot | Anthropic | 模型训练 |
每个 User-Agent 的完整字符串和出处在结果的「本工具发送的 User-Agent 与出处」里可以展开查看。
使用步骤
- 输入要检查的网址。建议检查一篇正文较长的文章或产品页,首页通常导航多、正文少。
- 保持勾选「同时读取 robots.txt」,工具会用 RFC 9309 的规则判断每个爬虫能否抓取这个路径,规则和本站的 AI 爬虫 robots.txt 检测一致。
- 点「检查」。7 次请求由本站服务器发出,通常需要 3–15 秒。
- 先看顶部的硬性条件:有「不通过」就先处理。每条结论下面有「怎么改」,展开后可以复制修复代码。
- 如果怀疑页面靠 JavaScript 渲染,在浏览器里打开页面,全选复制正文,粘贴到「对比浏览器渲染后的文本」,工具会估算原始 HTML 里有多大比例的内容。
结果可以复制为 Markdown 报告发给开发同事,也可以复制原始 JSON。工具不出综合分:硬性条件只判通过或不通过,其余结论是建议,并标注证据等级。
第一层:能不能进来
工具比较浏览器和各爬虫拿到的状态码、响应大小和响应内容的哈希值。如果浏览器拿到 200,GPTBot 拿到 403,或者拿到的是 Cloudflare 的「Just a moment」挑战页,说明拦截规则和 User-Agent 有关,工具会标为「疑似拦截」。
结论只能写「疑似」,因为本工具从 Vercel 数据中心发出请求,只模拟了 User-Agent,IP 不在 OpenAI、Anthropic、Perplexity、Google 公布的爬虫 IP 段里。很多防火墙同时核对 User-Agent 和 IP,所以可能出现两种偏差:
- 冒充的请求被拦,但来自官方 IP 段的真爬虫被放行。
- 冒充的请求被放行,但真爬虫因为 IP 或地区规则被拦。
要确认,请在服务器或 CDN 日志里按官方 IP 段筛选真实爬虫的请求,看它们的状态码。工具识别的拦截信号包括:Cloudflare 的 cf-mitigated: challenge 响应头(Cloudflare 文档写明挑战页都会带这个头)、__cf_bm 等机器人管理 Cookie 的名称,以及 DataDome、PerimeterX、Imperva、AWS WAF、Akamai 等拦截页的特征文字。
Cloudflare 自 2025 年 7 月起对新接入的域名默认拦截 AI 爬虫。如果网站是这之后接入 Cloudflare 的,又没有改过设置,GPTBot、ClaudeBot 等很可能被拦。
给老手:为什么要同时看训练爬虫和搜索爬虫
OpenAI 和 Anthropic 都把训练和搜索拆成了不同的爬虫。GPTBot、ClaudeBot 被拦只影响模型训练;OAI-SearchBot、Claude-SearchBot、PerplexityBot 被拦会直接影响 AI 搜索里的引用。所以工具把搜索爬虫被拦判为「不通过」,训练爬虫被拦只给「建议」,因为很多网站是有意退出训练的。
Google 的情况不同:AI Overviews 和 AI 模式由 Googlebot 控制,Google-Extended 只控制 Gemini 等其他系统的训练与 grounding,禁止它不影响 AI Overviews。
第二层:能不能读到
工具在服务器上解析原始 HTML,不执行 JavaScript,统计可见正文字数、标题层级、JSON-LD 类型,并显示正文开头最多 300 字。它还会识别客户端渲染的典型特征:空的 <div id="root"></div>、__next、__NUXT__ 等挂载点,以及「You need to enable JavaScript」一类的 <noscript> 提示。
主流 AI 爬虫不执行 JavaScript,所以这一层很重要。Vercel 与 MERJ 2024 年分析了数亿次爬虫请求,发现 GPTBot、ClaudeBot、PerplexityBot 等会下载 JS 文件,但没有执行(Vercel 原文,证据等级 B)。Googlebot 会渲染 JavaScript(Google 文档,等级 A),所以同一个页面在 Google 搜索里正常,在 ChatGPT 里却可能读不到正文。有个别来源称 OAI-SearchBot 已开始渲染 JavaScript,目前没有官方确认,工具按「不执行」处理。
修复方法是让关键内容出现在服务器返回的 HTML 里:Next.js 用 Server Components 或 getStaticProps / getServerSideProps,Nuxt 保持 SSR 或预生成静态页,纯 React / Vue 单页应用改用 SSR / SSG 框架或对爬虫做预渲染。
第三层:能不能用
爬虫读到页面以后,页面上的指令还会决定内容能否出现在 AI 回答里。Google 的 AI 功能文档写明,页面要出现在 AI Overviews 和 AI 模式里,必须已被编入索引,并且可以在搜索结果中显示摘要。所以工具按以下规则判断(等级 A):
noindex(meta robots、meta googlebot 或X-Robots-Tag响应头):不通过。nosnippet或max-snippet:0:不通过,Google 不会在 AI 功能中使用页面内容。max-snippet:50这类较短的限制:建议放宽,因为 Google 把它也用于 AI 功能。data-nosnippet:只列出数量,确认被排除的不是正文主体。noai、noimageai:非标准指令,Google 的 robots meta 文档里没有,OpenAI、Anthropic 也没有说明支持,写了没有效果。
Bing 在 2023 年说明过:带 noarchive 的页面不会出现在 Bing Chat(现 Copilot)的回答里,带 nocache 的只显示网址、标题和摘要。工具也会提示这两种情况。
第四层:新鲜度与一致性
工具读取 JSON-LD 的 datePublished / dateModified、article:modified_time 等 meta、<time datetime>、页面上可见的日期文字和 HTTP Last-Modified,检查它们是否一致。常见问题有:模板里两个日期字段写反,结构化数据的更新日期和页面显示的不同,以及日期在未来。Google 的署名日期文档建议页面显示的日期和结构化数据保持一致。
「AI 搜索偏好新内容」目前主要来自行业观察,没有官方说明,工具把它标为 D 级。日期一致的作用是避免系统误判页面的写作时间。
常见问题
工具判断被拦截,但我在日志里看到 GPTBot 访问成功,哪个准?
以日志为准。工具的请求来自数据中心 IP,防火墙可能按 IP 判断它是冒充者。如果日志里来自 OpenAI 官方 IP 段的请求返回 200,说明真爬虫没有被拦,工具的结果是假阳性。反过来,工具显示正常而日志里真爬虫是 403,说明规则是按 IP 或机器人评分拦的。
浏览器那一行也显示 403,是什么意思?
说明拦截不只看 User-Agent,可能是按数据中心 IP、地区或机器人评分拦的,也可能是网站本身出错。这时各爬虫的对比参考价值有限,建议查服务器日志。
为什么不直接显示 AI 爬虫看到的整页内容?
为了不让本站成为通用的代理爬虫,接口只返回状态码、精选响应头和统计数字,正文最多返回开头 300 字。每个 IP 每小时最多检查 10 次,同一个目标网站每小时也有请求上限,同一网址 10 分钟内重复检查会使用缓存。
原始 HTML 里正文很少,但 Google 收录正常,需要改吗?
如果你希望页面被 ChatGPT、Claude、Perplexity 引用,需要改。Googlebot 会渲染 JavaScript,AI 爬虫通常不会,所以 Google 收录正常不能说明 AI 爬虫读得到。
我只想退出 AI 训练,不想退出 AI 搜索,应该怎么设置?
在 robots.txt 里分开写:放行 OAI-SearchBot、Claude-SearchBot、PerplexityBot,禁止 GPTBot、ClaudeBot、Google-Extended。CDN 的「屏蔽 AI 爬虫」开关通常不区分训练和搜索,要在设置里单独放行搜索爬虫。工具里「怎么改」给出了 robots.txt 和 Cloudflare 规则的示例。
粘贴渲染后文本的比例是怎么算的?
用原始 HTML 的非空白字符数除以粘贴文本的非空白字符数,上限 100%。导航、折叠内容、Cookie 提示都会影响这个数字,所以它是估算值。比例低于 50% 时,说明大部分正文要靠 JavaScript 才能看到。
检查结果会保存吗?
服务器不保存网页内容。同一网址的统计结果会在缓存里保留 10 分钟,用于限流和避免重复请求目标网站。粘贴的渲染文本只在浏览器里计算,不会上传。
相关工具
- AI 爬虫 robots.txt 检测:逐条查看 20 多个爬虫命中的 robots.txt 规则。
- Schema 结构化数据可视化:检查 JSON-LD 的语法错误和实体关系。
- SERP 预览:按像素检查标题和描述是否会被截断。
- 全部免费 SEO 与 GEO 工具