技术

为什么 AI 爬虫无法识别 JavaScript:导致 AI 可见度丧失的渲染鸿沟

Leo Wang July 9, 2026
为什么 AI 爬虫无法识别 JavaScript:导致 AI 可见度丧失的渲染鸿沟

为什么 AI 爬虫无法识别 JavaScript:导致 AI 可见度丧失的渲染鸿沟

简短回答: 大多数 AI 爬虫不执行 JavaScript。GPTBot、ClaudeBot、PerplexityBot、CCBot 和 OAI-SearchBot 等机器人仅发出单个 HTTP 请求,读取服务器在首次响应中返回的 HTML,然后就结束任务。如果您的网站使用 React、Vue 或 Angular 在客户端渲染主要内容,这些爬虫看到的只是一个空壳,您的内容永远不会进入 AI 回答引擎引用的语料库。服务端渲染 (SSR) 或静态生成 (SSG) 是解决方案,对于品牌在 AI 中的可见度而言,这不仅是性能优化,更是“被引用”与“被无视”之间的本质区别。

这一点至关重要,因为 AI 辅助研究现在介于您的买家与其购买决策之间。当生成这些答案的系统无法读取某个页面时,无论该页面在传统搜索中的排名有多高,它都无法被引用、推荐或总结。本文将解释 AI 爬虫实际抓取页面的方式、为什么客户端渲染会破坏这一过程、如何测试您自己的网站以及优先修复哪些问题。

---

AI 爬虫实际如何抓取页面

要理解这个问题,有助于区分两种截然不同的抓取行为:现代搜索爬虫和 AI 爬虫。

像 Googlebot 这样的传统搜索爬虫使用两阶段过程。它首先抓取原始 HTML,然后将页面放入队列进行第二次处理,届时一个无头 Chromium 实例会执行 JavaScript 并构建完整渲染的 DOM。这第二波处理可能会在几分钟或几天后到达(取决于抓取预算),但它最终会运行您的脚本。

大多数 AI 爬虫则完全不这样做。正如一位工程师所言,它们的行为就像还停留在 2010 年:发起一个简单的 HTTP GET 请求,读取返回的字节,任务完成。没有脚本执行,没有等待组件挂载,没有第二次渲染过程。就爬虫而言,您的服务器在首次响应中发送的内容就是整个页面。

这种区别是几乎所有“我们排名很好但从未被引用”问题的根源。这两个系统正在读取您网站的两个不同版本。

AI 抓取的三步走(通俗版)

  1. 请求:机器人向您的 URL 发送单个 HTTP GET 请求。
  2. 读取:它解析服务器返回的原始 HTML 字符串。
  3. 提取并离开:它从该 HTML 中提取文本、链接和结构化数据,然后停止。不运行任何 JavaScript。

如果页面的核心内容仅在 JavaScript 执行后才出现,那么第 2 步和第 3 步操作的就是一个空容器。爬虫提取到的只是导航栏、页脚和加载动画。

---

为什么客户端渲染会破坏 AI 可见度

客户端渲染 (CSR) 是许多单页面应用框架的默认模式。服务器发送一个极简的 HTML 文件(通常只是一个

)以及一包 JavaScript 代码。浏览器下载该包,执行它,调用您的 API,并将内容绘制到空的 div 中。人类访客看到的是完整页面,浏览器看到的也是完整页面,但不运行 JavaScript 的 AI 爬虫看到的只是空的 div。

以下是三个不同客户端在 CSR 页面上的体验对比:

客户端是否运行 JavaScript?在 CSR 页面上看到的内容
浏览器中的人类完整的渲染内容
Googlebot (第二波)是,有延迟完整内容(最终)
GPTBot / ChatGPT空壳、导航、页脚
ClaudeBot空壳、导航、页脚
PerplexityBot空壳、导航、页脚
CCBot (Common Crawl)空壳、导航、页脚

后果是显而易见的。如果您的产品描述、价格、常见问题解答 (FAQ)、文档或博客正文是通过 JavaScript 注入的,那么它们就不在 AI 爬虫读取的 HTML 中。它们无法被提取,因此无法被引用。该页面在 AI 回答层中实际上并不存在,即使它在 Google 中排名正常(因为 Googlebot 的第二波渲染填补了空白)。

这就是为什么渲染鸿沟如此容易被忽视的原因。传统的分析工具和排名跟踪看起来都很健康。失败是无声的,只有当您检查 AI 系统是否真的能读取页面时,它才会显现出来。

---

并非所有 AI 系统的行为都一致

“AI 爬虫不运行 JavaScript”这一说法在方向上是正确的,也是最安全的默认假设,但实际情况存在值得了解的细微差别。

  • Google AI 概览 (AI Overviews) 和 Bing Copilot 依赖于已经能够渲染 JavaScript 的基础设施,因此客户端渲染后的内容在这些界面中更有可能被看到。
  • GPTBot、ClaudeBot 和 PerplexityBot 的 JavaScript 执行能力有限、不一致或完全缺失。请将它们视为仅限 HTML 的阅读器。
  • CCBot(支持 Common Crawl 并为许多训练和检索管道提供数据)不渲染 JavaScript。

实际的规则应遵循“木桶原理”,即取决于最弱的阅读器,而非最强的。如果您只针对渲染 JavaScript 的爬虫进行优化,就会失去在那些不渲染 JavaScript 系统中的可见度。由于各引擎之间的引用来源重叠度已经很低,放弃任何一个主流回答引擎都是重大的触达损失。

AI 爬虫行为一览表

爬虫主要系统JavaScript 执行实际假设
GPTBotChatGPT无至极少仅限 HTML
OAI-SearchBotChatGPT 搜索无至极少仅限 HTML
ClaudeBotClaude仅限 HTML
PerplexityBotPerplexity仅限 HTML
CCBotCommon Crawl仅限 HTML
GooglebotGoogle + AI 概览是,延迟的第二波可渲染,但较慢

安全的工程立场是:确保您的关键内容存在于初始 HTML 响应中,以便表中的每个爬虫都能在不运行任何脚本的情况下读取它。

---

我们在讨论多大规模的 AI 爬虫流量?

这并非边缘案例。AI 爬虫现在占据了自动化流量中很大且不断增长的份额,这意味着它们能够读取和不能读取的内容正在被不断采样。

  • 截至 2026 年初的十二个月窗口内,Cloudflare Radar 数据显示,全球机器人流量中约 12% 来自 GPTBot9.2% 来自 ClaudeBot,这使得 ClaudeBot 与 Bingbot 持平,两者仅次于约占 48% 的 Googlebot。
  • 一项为期 30 天的服务器日志研究显示,GPTBot 在每个站点的日均访问量约为 4,200 次,ClaudeBot 接近 1,800 次,PerplexityBot 接近 980 次。
  • 同一项研究发现,主要的 AI 机器人 100% 遵守 robots.txt,这意味着您的抓取指令会得到尊重,您的错误配置也同样会被“尊重”。

结论是:这些机器人访问频繁,并且只读取您的服务器提供的内容。如果首次响应是空的,它们就会反复采样一个空页面,并基于虚无来构建对您品牌的理解。

---

真实的渲染失败案例

具体分析一下失败案例会有所帮助,因为症状很少会直接宣告自己是渲染问题。

想象一家 SaaS 公司,其优化良好的定价页面是使用 React 单页面应用构建的。该页面在 Google 的“品牌+定价”查询中排名第一页,因为 Googlebot 的第二波渲染执行了 JavaScript 并索引了全部内容。营销团队看到排名健康,认为一切正常。

然后,一名潜在客户询问 ChatGPT:“那个产品多少钱?”得到的答案含糊不清,或者更糟,引用了过时的第三方数据,甚至完全忽略了该品牌。团队感到困惑,因为价格明明就在页面上。

原因就是渲染鸿沟。当 GPTBot 抓取定价页面时,服务器返回了一个带有空 root div 和 JavaScript 包的 HTML 壳。实际价格是随后通过客户端 API 调用加载的,而 GPTBot 从未执行该调用。从爬虫的角度看,定价页面不包含任何价格。模型没有可引用的内容,因此它要么从较弱的来源进行猜测,要么保持沉默。

这种模式在各种内容类型中重复出现:通过客户端路由加载文章的文档门户;在挂载后通过 API 获取博文正文的博客;从 JavaScript 数据层填充规格的产品目录。在每种情况下,人类体验都是完美的,而 AI 爬虫的体验却是空洞的。这两个现实之间的差距正是 AI 可见度丢失的地方。

如何测试您的网站是否存在渲染鸿沟

您不需要特殊的工具来诊断此问题。您只需要像 AI 爬虫一样查看您的页面,即在任何 JavaScript 运行之前查看原始 HTML。

方法 1:使用 curl 获取原始 HTML

从命令行请求页面并读取响应体:

curl -A "GPTBot" https://yourdomain.com/your-page

在输出中搜索您已知出现在可见内容中的句子。如果文本存在,爬虫就能读取它。如果您看到的大多是空标签、root div 和脚本引用,那么您的内容就是客户端渲染的,对非渲染机器人不可见。

方法 2:在浏览器中禁用 JavaScript

在 Chrome 中打开页面,打开开发者工具 (DevTools),使用命令菜单禁用 JavaScript,然后重新加载。屏幕上留下的内容大致就是仅限 HTML 的爬虫接收到的内容。如果页面变白,爬虫的视角也同样如此。

方法 3:查看源代码,而非检查元素

“查看网页源代码”显示的是服务器交付的原始 HTML。“检查”显示的是 JavaScript 运行后的实时 DOM。对于此测试,请始终使用“查看源代码”,因为那是爬虫面对的现实。

健康的结果是什么样的

对于 AI 爬虫安全的页面,其标题、正文文本、关键事实和结构化数据将直接显示在原始 HTML 中。存在渲染鸿沟的页面则会显示骨架屏、加载状态或内容应出现处的空容器。

---

优先修复什么:渲染策略对比

解决方案是将渲染从客户端移至服务器或构建阶段。主要有三种策略,选择哪种取决于您的内容更新频率。

策略工作原理最适用于AI 爬虫可见度
SSG (静态网站生成)页面在构建时预渲染为 HTML博客、文档、营销页面等稳定内容极佳,内容在 HTML 中
SSR (服务端渲染)服务器在每次请求时渲染 HTML个性化或频繁更改的页面极佳,内容在 HTML 中
CSR (客户端渲染)浏览器在加载 JS 后渲染内容登录后的应用仪表盘极差,对非渲染机器人不可见

经验法则很简单:任何您希望被 AI 引用的页面,都应在到达爬虫之前渲染为 HTML。 静态生成非常适合不随用户变化的内容,如博文、文档和产品页。服务端渲染适用于必须动态化的内容。客户端渲染则适用于 AI 爬虫本来就不该且无法触达的受限应用界面。

框架层面的修复

大多数现代框架都原生支持服务器渲染。工作通常在于配置,而非重写。

  • React 团队可以采用 Next.js,并根据路由使用静态生成或服务器渲染。
  • Vue 团队可以使用 Nuxt 达到同样的效果。
  • Angular 团队可以启用 Angular Universal 进行服务端渲染。
  • 现有的 SPA 如果无法快速迁移,可以添加预渲染或动态渲染,向机器人提供静态 HTML 快照,而人类则获取实时应用。

优先修复顺序

  1. 首先进行审计。使用上述测试识别哪些高价值页面是客户端渲染的。
  2. 将内容页面转换为 SSG 或 SSR。博客文章、产品和分类页、FAQ 以及文档应排在首位,因为这些是 AI 系统最可能引用的页面。
  3. 将关键事实保留在初始 HTML 中。价格、规格、定义和答案绝不应依赖客户端 API 调用才出现。
  4. 在服务端添加结构化数据。Organization、Article、FAQ 和 Product schema 应存在于原始 HTML 中,而非由 JavaScript 注入。
  5. 每次更改后重新测试。使用带有机器人 User-Agent 的 curl 确认内容现在出现在首次响应中。

---

关于动态渲染作为过渡方案的说明

无法快速迁移大型 SPA 的团队通常会采用动态渲染,即服务器检测机器人 User-Agent 并提供预渲染的 HTML 快照,同时向人类访客发送正常的 JavaScript 应用。这可以作为一种过渡措施,让内容现在就能呈现在非渲染爬虫面前。

但有两点需要注意。首先,快照必须与面向人类的内容真实等效。向机器人提供不同或更简略的页面版本会引发信任问题并背离初衷。其次,动态渲染增加了维护成本,因此应将其视为通往正规 SSR 或 SSG 的桥梁,而非永久架构。长期目标应该是单一的 HTML 响应,为人类和爬虫提供相同的完整内容。

超越渲染:让服务器 HTML 真正易于提取

将内容放入初始 HTML 是必要条件,但还不够。一旦爬虫能读取页面,该 HTML 的结构就决定了它被提取和引用的难易程度。

  • 使用描述性标题。清晰的 H2 和 H3 标题有助于检索系统定位回答特定查询的段落。
  • 编写自成一体的段落。检索增强系统通常提取单个段落而非整个页面。每个段落应承载一个观点,明确命名其主体,并能独立成义。
  • 用平实的语言陈述事实。像“该方案起售价为每月 49 美元”这样的句子是可提取的。而在交互式小组件中渲染的价格则不是。
  • 保持术语稳定。在每个页面上为您的公司、产品和类别使用一致的名称,以便系统能将提及的内容连接成单个实体。

渲染让您进入房间,而结构决定了您进去后是否会被引用。

---

常见问题解答:AI 爬虫与 JavaScript

AI 爬虫会执行 JavaScript 吗?

大多数不会。GPTBot、ClaudeBot、PerplexityBot、CCBot 和 OAI-SearchBot 通常只读取服务器首次响应中返回的原始 HTML,不运行 JavaScript。Google 的渲染能力基础设施和 Bing 的 Copilot 是主要例外,但仅依赖它们仍会让您在其他系统中处于不可见状态。

我的客户端渲染网站会出现在 ChatGPT 或 Perplexity 中吗?

如果您的主要内容仅在 JavaScript 运行后出现,那么它很可能对这些系统不可见。它们读取初始 HTML,而对于客户端渲染页面,初始 HTML 几乎是空的。转向服务端渲染或静态生成可以解决此问题。

服务端渲染只是为了 AI 可见度吗?

不是。SSR 和 SSG 还能提高首屏渲染性能和传统 SEO。但专门针对 AI 可见度而言,渲染是门槛:不在初始 HTML 中的内容无法被非渲染爬虫提取或引用。

我如何知道我的页面是否存在渲染鸿沟?

使用 curl -A "GPTBot" https://yourdomain.com/page 获取页面,检查您的可见文本是否出现在响应中。或者,在浏览器中禁用 JavaScript 并重新加载,或使用“查看网页源代码”。如果内容消失了,非渲染爬虫就看不见它。

屏蔽 JavaScript 会伤害人类访客吗?

不会。目标不是移除 JavaScript,而是确保有意义的内容存在于服务器的初始 HTML 中。人类仍然获得完整的交互体验,而爬虫在首次响应中获得可读内容。

llms.txt 呢,它不能解决可发现性问题吗?

那是另一个问题。无论是否有辅助文件,如果爬虫抓取您的页面并在 HTML 中找不到内容,就没有任何东西可以索引。请先修复渲染问题,因为它决定了您的实际内容是否可读。

---

核心要点

  • 大多数 AI 爬虫不运行 JavaScript。它们只读取服务器首次响应中的原始 HTML。
  • 客户端渲染会向 GPTBot、ClaudeBot、PerplexityBot 和 CCBot 隐藏您的内容,即使您的页面在 Google 中排名正常。
  • AI 爬虫流量巨大且频繁,因此空的首次响应会被反复采样。
  • 使用 curl、禁用 JavaScript 的浏览器或查看源代码进行测试,以像爬虫一样查看页面。
  • 通过 SSG 或 SSR 修复任何您希望被引用的内容,并将关键事实和结构化数据保留在初始 HTML 中。
  • 渲染让您被读取,结构让您被引用。两者缺一不可。

渲染鸿沟是品牌从 AI 生成的答案中消失的最常见且最可修复的原因之一。这是一个带有技术解决方案的技术问题,通常只是配置更改而非重构。审计您的哪些页面可被 AI 爬虫读取,并修复那些不可读的页面,是现代 AI 可见度计划中杠杆率最高的举措之一。

---

参考文献

  1. 当 AI 爬虫无法运行 JavaScript 时它们看到了什么 — allabout.network
  2. LLM 爬虫如何抓取页面,以及为什么客户端渲染的数据是不可见的 — Anglera
  3. AI 平台的服务端渲染:SSR、CSR 与 SSG 对比 — aiplusautomation.com
  4. AI 爬虫的 JavaScript 渲染:哪些有效 — texta.ai
  5. 代理爬虫行为:2026 年 30 天站点日志研究 — digitalapplied.com
  6. AI 机器人在您的网站上到底在做什么 — Oncrawl
  7. 2026 年使 JS 网站可抓取的完整指南 — metaflow.life

Related Articles