有些爬虫会执行网页上的 JavaScript 脚本,另一些则不会。对于绝大多数 AI 爬虫,除厂商内部人员外,外界无从确切知晓其行为。截至 2026 年 10 月,谷歌与必应在官方文档中说明它们会执行 JavaScript;苹果表示自家爬虫 “可能会渲染” 页面;Common Crawl(公共爬虫数据集)明确说明完全不执行 JavaScript。OpenAI、Anthropic、Perplexity、亚马逊、Meta 均未在爬虫文档中说明是否执行 JS 脚本。

如果你的网站内容依靠浏览器端 JavaScript 生成,这一信息空白就会带来风险。这类网站服务器返回的初始页面几乎是空壳,文字、价格、链接全部要等脚本运行后才展示。支持渲染的爬虫可以看到完整成品页面;不支持渲染的爬虫只能拿到空白外壳。

对于没有公开说明的厂商,我们无法确认其爬虫行为。但你可以消除这种风险:务必把希望被抓取阅读的核心内容,放在服务器直接返回的初始 HTML 源码内。

网页渲染是什么

浏览器首先接收服务器返回的 HTML 文件。如果这份 HTML 包含页面完整文本,那么任何抓取工具都可以直接读取全部内容。 很多现代网站的实现逻辑不一样:HTML 仅为薄薄的页面框架,页面完整内容由 JavaScript 在访问者设备(浏览器)中动态构建。谷歌文档对此定义:“部分网站打开后,由 JavaScript 加载额外内容,该模式叫做客户端渲染(Client‑Side Rendering)。”

渲染,就是爬虫模拟浏览器运行页面脚本、得到完整成品页面的过程。渲染会消耗时间与算力,因此不是所有爬虫都会做。单页应用(SPA)是最常见的案例,本系列另一篇文章专门讲解单页应用与 GEO 的技术细节。

各厂商官方文档说明

下表整理截至 2026‑10 各厂商爬虫官方文档对于 JavaScript 执行能力的公开表述:

厂商爬虫名称针对 JavaScript 的官方说明
Google 谷歌Googlebot 谷歌爬虫会渲染:“无头 Chromium 浏览器渲染页面并执行 JavaScript 脚本”
Microsoft 微软Bingbot 必应爬虫会渲染:“网页渲染引擎持续更新至微软 Edge 最新稳定版本”
Apple 苹果Applebot 苹果爬虫“Applebot可能会在浏览器环境中渲染网站内容”
Common Crawl 公共爬虫数据集CCBot不渲染:“当前不执行 JavaScript,也不使用 Cookie”
OpenAIGPTBot、OAI‑SearchBot、ChatGPT‑User无公开文档说明
AnthropicClaudeBot、Claude‑SearchBot、Claude‑User无公开文档说明
PerplexityPerplexityBot、Perplexity‑User无公开文档说明
Amazon 亚马逊Amazonbot、Amzn‑SearchBot、Amzn‑User无公开文档说明
Meta 元宇宙meta‑externalagent、meta‑webindexer、meta‑externalfetcher无公开文档说明

谷歌如何处理 JavaScript 渲染

谷歌执行 JavaScript 渲染已经多年,文档描述非常详细。《JavaScript SEO 基础》说明,谷歌处理 JS 网页分为三大阶段:抓取、渲染、建立索引。渲染任务会进入队列排队,可能等待数秒,甚至耗时更久。

很多网站踩坑的关键点全部来自谷歌官方文档:

  1. 渲染不是百分百保证执行。“谷歌通常会渲染页面用于建立索引,但渲染行为并不做绝对保证。”

  2. 被屏蔽的资源无法渲染。“谷歌搜索无法执行被 robots.txt 禁止访问的脚本或页面。” 如果 robots.txt 禁止脚本文件,谷歌就无法组装完整页面。

  3. 只有渲染完成后的 HTML 才算有效内容。“如果内容在渲染后的 HTML 中不可见,谷歌就无法索引该内容。”

  4. 链接必须是标准 a 标签超链接。“谷歌仅能识别带 href 属性的<a>HTML 链接元素。”

  5. noindex 禁止索引标签不能通过脚本移除。谷歌一旦读到该标签,会直接跳过渲染和 JavaScript 执行。

谷歌没有针对 AI 概览(AI Overviews)、AI 搜索模式单独提供一套渲染流程。官方说明:页面必须被正常索引、生成网页摘要片段,才可以作为 AI 功能的引用来源。面向生成式 AI 搜索的优化指南中提到,只要资源未被屏蔽,谷歌就能够读取 JavaScript 内部生成的内容。

必应与苹果官方说明

微软 Copilot 直接复用必应的网页索引库,因此必应的渲染能力直接决定 Copilot 的抓取效果。必应虽然支持渲染,但在站长指南中将 “核心内容依赖客户端渲染加载” 列为需要规避的问题,并且警告:无法稳定渲染的内容,有可能不会被索引,也不会被选为 AI 结果的事实依据(Grounding)。

苹果 Applebot 文档表述更加保守:爬虫 “有可能渲染页面”;若 robots.txt 屏蔽 JS、CSS 等资源,就有可能无法完整渲染内容。苹果给出的建议:应当让爬虫能够获取用户访问页面所需要的全部资源;或者保证即便部分资源缺失,网页也能完整正常渲染。

未公开说明的厂商

OpenAI、Anthropic、Perplexity、亚马逊、Meta 对外发布的爬虫文档,只介绍机器人名称、用途、robots.txt 适配规则,没有任何一处说明爬虫是否执行 JavaScript。以上就是来自厂商一手资料的全部信息。

网络上会流传很多斩钉截铁的说法,有说支持、有说不支持,这些只能作为第三方观测结果,不能等同于厂商官方事实。User‑Agent 请求头里面包含浏览器引擎字样,不等于厂商承诺爬虫会执行页面渲染。

OpenAI 唯一一句通用相关描述,列举 ChatGPT 无法读取网站的部分原因:“访问受限:因技术故障、付费墙、robots.txt 配置,模型无法获取网站相关信息。” 但并未说明 JavaScript 是否属于这类 “技术故障”。

为什么服务端输出 HTML 是低风险方案

对于多个关键 AI 爬虫,我们无法确定其行为。稳妥的网站设计思路,就是让渲染与否不再成为影响结果的变量。内容如果直接存在服务器返回的初始 HTML 中,无论爬虫是否支持 JS 渲染,都可以正常读取。

没有任何 AI 厂商发布强制规范要求这么做,这不是硬性规定,也不能保证你的网站一定会被 AI 引用。但这可以消除一个潜在故障点。谷歌针对自家爬虫也给出相同逻辑:“请记住服务端渲染或者预渲染依然是优秀方案,既能提升普通用户与爬虫访问速度,同时并非所有机器人都支持运行 JavaScript。”

渲染方案含义不支持 JS 渲染的抓取工具获取结果
客户端渲染 CSR服务器返回极简页面框架;浏览器脚本生成全部内容几乎拿不到有效业务内容
服务端渲染 SSR收到请求后,服务器直接生成完整 HTML 返回获取全部完整内容
静态渲染(预渲染)网站发布构建阶段,提前生成完整 HTML 静态文件获取全部完整内容
同构注水 Hydration服务器返回完整 HTML,再由脚本补充页面交互功能拿到完整内容;交互功能依赖脚本
动态渲染 Dynamic Rendering服务器识别机器人身份,给爬虫返回预渲染版本,普通用户拿到客户端渲染页面取决于该爬虫是否在识别名单中

动态渲染的谷歌官方文档现已改名为 “动态渲染作为临时补救手段”,谷歌推荐优先使用服务端渲染、静态渲染或者同构注水。文档同时点明风险:这套机制仅对它能够识别的机器人生效;如果给爬虫和普通用户返回差异巨大的内容,有可能被判定为伪装(Cloaking,SEO 作弊手段)。

网站采用服务端渲染还是静态渲染,需要开发团队评估,建议在网站改版重构之前就纳入方案,而不是上线后补救。

如何模拟不执行 JS 的爬虫看到的页面

初步检测无需专业调试工具,我们需要拿到脚本执行之前服务器返回的原始 HTML。操作步骤:

  1. 挑选 3 个关键页面:业务 / 产品页、价格 / 联系页、一篇文章。

  2. 在每个页面复制一段正文中间的完整句子,记下关键信息(价格、电话、地址等)。

  3. 在桌面浏览器打开页面,右键点击【查看网页源代码】,这里展示的是服务器原始返回 HTML,不是脚本渲染后的成品页面。

  4. 使用快捷键 Ctrl+F / Cmd+F,搜索刚才复制的句子与关键信息。

  5. 如果全部可以搜到:不执行 JS 的抓取工具就可以读取该内容。如果源码大量是脚本引用,正文句子找不到,代表内容依赖 JavaScript 生成。

熟悉终端命令行,也可以用 curl 一行命令做检测:

curl -s https://www.example.com/page | grep -i "页面中的某段文字"

匹配到文字就输出对应行;找不到就无输出。

没有任何 AI 厂商指定这套检测方法,原理就是普通 HTTP 请求只拿服务器 HTML,不运行脚本。如果要看谷歌视角,要使用谷歌官方工具:富媒体结果测试工具、URL 检测工具,查看 “渲染后的 HTML”。

⚠️重要提醒:这个测试拿到的是你浏览器访问得到的源码。如果防火墙 / CDN 对爬虫和普通浏览器做差异化处理,爬虫实际获取内容会完全不一样。

在原始 HTML 源码中需要检查的项目

检查项重要意义
页面主要正文文本直接存在源码中这是希望被 AI 读取、引用的核心素材
价格、营业时间、地址、电话号码以纯文本形式写进 HTML这类事实信息最容易被 AI 直接摘抄输出到回答里
导航链接、正文内链接使用带 href 属性的<a>标签谷歌声明只识别这类链接;不运行 JS 的爬虫无法读取脚本动态生成的链接
结构化数据写在 HTML 源码内部谷歌文档说明可以读取 JS 注入的 JSON‑LD 结构化数据;上表其他厂商均未确认该能力
robots.txt 没有禁止脚本、样式文件的访问权限谷歌、苹果均说明被屏蔽资源会导致渲染失败

以上检测项属于 GEO 技术基础检查清单的一部分。

这个测试不能告诉你什么

测试通过,仅代表爬虫能够读取你的网页内容。不等于 AI 助手就一定会使用你的网页、引用你的网页、推荐你的网页。没有任何厂商公开规则,将渲染技术方案和 “被选为 AI 信息源” 直接绑定。谷歌也没有声明服务端渲染就可以提高网站出现在 AI 概览、AI 搜索模式的概率。

同时,该测试也无法确认哪些爬虫访问过你的网站,以及爬虫拿到了什么内容;这类分析需要服务器日志,还需要区分真实机器人与伪装爬虫。可以参考《服务器日志验证 AI 爬虫身份》指南。

总结

谷歌、必应官方文档明确支持 JavaScript 渲染;苹果爬虫文档表述为 “可能渲染”;Common Crawl 公共爬虫确认不执行 JS。截至 2026‑10,OpenAI、Anthropic、Perplexity、亚马逊、Meta 均没有公开说明爬虫 JS 执行能力,靠猜测很容易得到错误方案。务实方案是不要寄希望于未知的爬虫行为:把希望被抓取阅读的内容直接放在服务器返回的初始 HTML 源码,通过查看网页源代码验证结果。

常见问题

ChatGPT 是否能读取网站上 JavaScript 生成的内容?

OpenAI 没有公开说明。GPTBot、OAI‑SearchBot、ChatGPT‑User 的官方文档没有说明机器人是否执行 JavaScript。由于信息不明确,低风险做法是保证重要内容写在脚本运行之前服务器返回的 HTML 中。

客户端渲染本身对谷歌是坏事吗?

不完全是。谷歌多年来一直支持 JS 渲染,官方表示 JavaScript 加载内容本身不会 “让谷歌搜索抓取变得困难”。但同时提醒:渲染任务需要排队、不保证 100% 执行;脚本文件被屏蔽就无法渲染;JavaScript 框架网站整体 SEO 调试复杂度会更高。

怎么判断网站是否使用客户端渲染?

打开网页,右键查看网页源代码,搜索正文里某一句话。源码里能搜到,说明内容存在服务器返回 HTML;如果源码全是脚本引用,正文文字找不到,代表页面内容在浏览器中由 JS 构建。

使用服务端渲染,就一定能被 AI 答案引用吗?

没人可以做这个保证。服务端渲染可以确保不执行 JS 的抓取工具能够读到你的内容。AI 助手会不会选用、引用你的页面,取决于厂商没有完全公开的多项综合因素。