指南 · JavaScript 渲染

AI 爬虫会执行 JavaScript 吗?

更新于 2026-11-04 · kagentx

短答案

大多数不会。Vercel 2024-12 的研究发现,OpenAI、Anthropic、Perplexity 的爬虫不执行 JavaScript,只有 Apple 和 Google(Gemini)的会。正文靠脚本画出来的网站,这些爬虫读到的几乎是空页面:kagentx 评测的 GammaSlide 首页原始 HTML 只有 314 字,渲染后 18,630 字。用 curl 看原始 HTML,没有正文就改成服务端渲染、构建时生成或预渲染。

AI 爬虫会执行 JavaScript 吗?

大多数不会。Vercel 在 2024-12 发表的研究《The rise of the AI crawler》里,分析了自己网络上的 AI 爬虫流量,结论是:当时主要的 AI 爬虫里,OpenAI、Anthropic 和 Perplexity 的都不渲染 JavaScript,只有 Apple 和 Google 的会。

哪家爬虫执行 JavaScript 吗(Vercel,2024-12)
OpenAIGPTBot, OAI-SearchBot, ChatGPT-User不执行
AnthropicClaudeBot不执行
PerplexityPerplexityBot不执行
Common CrawlCCBot不执行
AppleApplebot执行(用基于浏览器的爬虫渲染,和 Googlebot 类似)
GoogleGemini(经 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 字数渲染后字数倍数
GammaSlidegammaslide.com/31418,63059.3×
GammaSlidegammaslide.com/ja/20011,14655.7×
GammaSlidegammaslide.com/zh-hans/1557,38147.6×
MochiStampmochistamp.com/8,7909,6251.1×
MochiStampmochistamp.com/en/16,91218,4871.1×
MochiStampmochistamp.com/zh-hant/6,5537,2581.1×

GammaSlide 首页的原始 HTML 只有 314 字,渲染后有 18,630 字,一个不执行 JavaScript 的爬虫能读到的不到 2%。MochiStamp 的原始 HTML 本身就有 8,790 字,渲染后 9,625 字,差得不多:正文已经在 HTML 里。

这只说明两个网站交给不执行脚本的爬虫的内容有多少,不说明哪个网站被 AI 推荐得多。想看完整的评测数据,见 GammaSlide 案例 和 MochiStamp 案例。

怎么确认我的网站有没有这个问题?

  1. 1. 用 curl 看原始 HTML

    在终端跑下面这行,把引号里换成你首页上的一句正文。输出 0,就是这句话要等 JavaScript 才出现:

    curl -s https://your-site.com/ | grep -c "a sentence from your homepage"

    把首页、价格页、功能页、一篇文章页都测一遍。价格和功能最容易被做成前端渲染。

  2. 2. 估一下原始 HTML 有多少字

    下面这行把标签去掉后数词。结果和浏览器里的页面差几十倍,就是有问题(这是粗略估计,脚本里的文字也会被数进去):

    curl -s https://your-site.com/ | sed -e 's/<[^>]*>/ /g' | wc -w
  3. 3. 在浏览器里关掉 JavaScript

    Chrome 开发者工具里按 Cmd+Shift+P(Windows 是 Ctrl+Shift+P),输入 Disable JavaScript,回车后刷新页面。页面变成空白或只剩加载提示,爬虫读到的就是这个样子。测完记得再打开。

  4. 4. 对比「查看网页源代码」和「检查元素」

    在页面上点右键选「查看网页源代码」,看到的是原始 HTML;「检查元素」看到的是渲染后的页面。正文只在后者里,就是前端渲染。

  5. 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 在自己的网站上实测。

是不是整个网站都要改成服务端渲染?

不用。先改对外要被找到的页面:首页、价格、功能、产品页和文章。登录后的控制台之类不需要被爬虫读到,可以继续用前端渲染。

出处

kagentx

爬虫读到的,
和你想的一样吗?

评测会取你页面的原始 HTML 和渲染后的版本做对比,再把买家的问题拿去问 ChatGPT、Perplexity、Claude(开联网搜索),记下推荐了谁、引用了哪些网页。基础版 $1,一般 2–3 分钟出结果。