AI 爬虫会执行 JavaScript 吗?
大多数不会。Vercel 在 2024-12 发表的研究《The rise of the AI crawler》里,分析了自己网络上的 AI 爬虫流量,结论是:当时主要的 AI 爬虫里,OpenAI、Anthropic 和 Perplexity 的都不渲染 JavaScript,只有 Apple 和 Google 的会。
| 哪家 | 爬虫 | 执行 JavaScript 吗(Vercel,2024-12) |
|---|---|---|
| OpenAI | GPTBot, OAI-SearchBot, ChatGPT-User | 不执行 |
| Anthropic | ClaudeBot | 不执行 |
| Perplexity | PerplexityBot | 不执行 |
| Common Crawl | CCBot | 不执行 |
| Apple | Applebot | 执行(用基于浏览器的爬虫渲染,和 Googlebot 类似) |
| Gemini(经 Googlebot 的基础设施) | 执行(完整渲染) |
Vercel 还发现一个细节:ChatGPT 和 Claude 的爬虫会下载 JavaScript 文件(分别占它们请求的 11.50% 和 23.84%),但不会执行。也就是说,它们看得到「有脚本」,看不到脚本画出来的内容。
这份研究的局限要说清:数据来自 Vercel 的网络和 nextjs.org,时间是 2024 年底,之后各家可能改过。所以别只信这张表,用下面的方法在你自己的网站上测一遍。
这对我的网站意味着什么?为什么 ChatGPT 看不到我的 React 网站?
用 React、Vue 这类前端框架做的单页应用,服务器发出去的 HTML 往往只是一个空壳,正文要等浏览器下载脚本、执行后才画出来。不执行 JavaScript 的爬虫只拿到那个空壳。你在浏览器里看到完整的页面,它读到的却几乎没有字。
用户在 ChatGPT 里让它打开你的链接,或 ChatGPT 搜索去读你的页面,读到的都是这个空壳。正文和价格不在里面,AI 就没有东西可以引用。如果你的页面是服务端渲染或构建时生成的,正文已经写在 HTML 里,这个问题就不存在。
真实网站的原始 HTML 和渲染后差多少?
kagentx 评测会取每个页面的原始 HTML(不执行脚本)和浏览器渲染后的版本,比较各有多少字。下面是两个真实评测的数据:GammaSlide 是 2026-10-26 评测的,MochiStamp 是 2026-10-22 评测的,是评测当天的样子,不是改完以后。
| 网站 | 页面 | 原始 HTML 字数 | 渲染后字数 | 倍数 |
|---|---|---|---|---|
| GammaSlide | gammaslide.com/ | 314 | 18,630 | 59.3× |
| GammaSlide | gammaslide.com/ja/ | 200 | 11,146 | 55.7× |
| GammaSlide | gammaslide.com/zh-hans/ | 155 | 7,381 | 47.6× |
| MochiStamp | mochistamp.com/ | 8,790 | 9,625 | 1.1× |
| MochiStamp | mochistamp.com/en/ | 16,912 | 18,487 | 1.1× |
| MochiStamp | mochistamp.com/zh-hant/ | 6,553 | 7,258 | 1.1× |
GammaSlide 首页的原始 HTML 只有 314 字,渲染后有 18,630 字,一个不执行 JavaScript 的爬虫能读到的不到 2%。MochiStamp 的原始 HTML 本身就有 8,790 字,渲染后 9,625 字,差得不多:正文已经在 HTML 里。
这只说明两个网站交给不执行脚本的爬虫的内容有多少,不说明哪个网站被 AI 推荐得多。想看完整的评测数据,见 GammaSlide 案例 和 MochiStamp 案例。
怎么确认我的网站有没有这个问题?
1. 用 curl 看原始 HTML
在终端跑下面这行,把引号里换成你首页上的一句正文。输出 0,就是这句话要等 JavaScript 才出现:
curl -s https://your-site.com/ | grep -c "a sentence from your homepage"
把首页、价格页、功能页、一篇文章页都测一遍。价格和功能最容易被做成前端渲染。
2. 估一下原始 HTML 有多少字
下面这行把标签去掉后数词。结果和浏览器里的页面差几十倍,就是有问题(这是粗略估计,脚本里的文字也会被数进去):
curl -s https://your-site.com/ | sed -e 's/<[^>]*>/ /g' | wc -w
3. 在浏览器里关掉 JavaScript
Chrome 开发者工具里按 Cmd+Shift+P(Windows 是 Ctrl+Shift+P),输入 Disable JavaScript,回车后刷新页面。页面变成空白或只剩加载提示,爬虫读到的就是这个样子。测完记得再打开。
4. 对比「查看网页源代码」和「检查元素」
在页面上点右键选「查看网页源代码」,看到的是原始 HTML;「检查元素」看到的是渲染后的页面。正文只在后者里,就是前端渲染。
5. 确认爬虫没有被拦
正文直出还不够,爬虫还得进得来。用 AI 爬虫检查 看 robots.txt 对各个 AI 爬虫是放行还是拦截,怎么改见 AI 爬虫的 robots.txt 怎么写。
怎么修?
目标只有一个:让爬虫拿到的第一份 HTML 里就有正文和价格。常见做法按改动从小到大排:
| 做法 | 是什么 | 适合 |
|---|---|---|
| 构建时生成(SSG) | 构建时就把每个页面渲染成 HTML 文件,部署的是现成的 HTML。 | 内容不常变的页面:首页、价格、功能、博客、文档。 |
| 服务端渲染(SSR) | 每次请求时服务器先渲染好 HTML 再发出去,浏览器拿到后再接管交互。 | 内容随用户或数据实时变化的页面。 |
| 预渲染现有单页应用 | 不换框架,在构建时用无头浏览器把关键路由渲染成静态 HTML。 | 已有大量前端代码、暂时换不起框架的项目。 |
Next.js、Nuxt、Astro、SvelteKit 这类框架都内置了前两种做法。哪怕不是全站,先把对外要被找到的几页(首页、价格、功能、每个产品页)改掉,就已经解决大部分问题。
改完要留意两点。第一,只在 HTML 里放骨架、正文仍靠接口在浏览器里填进去,爬虫看到的依然是空的。第二,别在 robots.txt 里拦 JavaScript 和 CSS 文件:Apple 的文档说,这两类文件被拦时,Applebot 可能无法正常渲染页面。改完回到第一步的 curl 再测一遍。
页面直出之后,下一步是让 AI 引用你。见 为什么 ChatGPT 不推荐我的产品,或者按 AI 可见度审计清单 逐项自查。有开发者文档的站也可以考虑 llms.txt 是什么。
常见问题
ChatGPT 看不到我的 React 网站,是真的吗?
Vercel 2024-12 的研究里,OpenAI 的 GPTBot、OAI-SearchBot、ChatGPT-User 都不渲染 JavaScript。如果你的正文要等脚本才出现,它们读到的就是空壳。是不是你的网站有这个问题,用 curl 看原始 HTML 一测就知道。
Google 能抓到我的页面,AI 爬虫就能吗?
不一定。Googlebot 会渲染 JavaScript,Gemini 用它的基础设施,所以 Google 那边看得到;但 OpenAI、Anthropic、Perplexity 的爬虫在 Vercel 的研究里不渲染。Google 收录了你,不代表 ChatGPT 也读得到。
加个「加载中」的骨架屏够不够?
不够。骨架屏是 HTML 里的占位,不是正文。爬虫要的是文字:产品是什么、给谁用、多少钱。这些要在第一份 HTML 里就有。
这项研究现在还准吗?
Vercel 的数据是 2024 年底的,来自它自己的网络。各家爬虫之后可能改过,我们没有更新的同类研究可引用。所以要用 curl 和关掉 JavaScript 在自己的网站上实测。
是不是整个网站都要改成服务端渲染?
不用。先改对外要被找到的页面:首页、价格、功能、产品页和文章。登录后的控制台之类不需要被爬虫读到,可以继续用前端渲染。
出处
- Vercel · The rise of the AI crawler (2024-12 发表,2026-11-04 核对原文)
- Apple · About Applebot (查看于 2026-11-04)
- OpenAI · Overview of OpenAI Crawlers (查看于 2026-11-04)
- kagentx 评测:案例页的数据,日期写在每个例子里。