你的JS网站是不是在百度上“隐形”了?

你刚上线一个Vue做的产品页,结果搜自家品牌名,首页能出来,点进去的详情页却压根没影儿——不是百度不收录,是它根本没看到内容。

这事儿太常见了:页面打开明明有字、有图、有价格,但百度快照里只剩个空壳,或者一句“加载中…”。

百度真的能抓取JS渲染的内容吗?

能。但不是无条件地能。

百度蜘蛛确实会执行JS,也会等一会儿再截图存档。但它不是开着Chrome调试器慢慢点开控制台的工程师,它更像一个赶时间的快递员:只在门口站3秒,门没开,转身就走。

它卡住的点很实在:JS文件太大、接口响应太慢、用了window.crypto.subtle这种它不支持的API、或者脚本里直接报错了——渲染一断,内容就全丢了。

有个做家居定制的客户,列表页用React+axios异步拉数据,上线两周后发现所有子页面在百度里都查不到。我们搜cache:xxx.com/list,快照里清清楚楚写着“正在获取商品数据…”,下面一片空白。

为什么你的JS内容可能不被抓取?

第一,它根本等不到内容出现。
比如你让页面等3个接口都返回、等轮播图加载完、再等用户点一下“筛选”按钮才渲染主文案——百度蜘蛛不会点,也不会等。

第二,它的JS环境比你想象的老。
它用的V8引擎版本落后Chrome好几代,不支持可选链(?.)、顶层await、甚至某些Promise写法。Polyfill没打全?脚本直接中断。

第三,它对你没那么上心。
新站、低权重站,蜘蛛每周可能只来1–2次,每次停留几十秒。它不会反复刷你页面,也不会模拟滚动或点击tab切换。

如何检测百度到底看到了什么?

别猜。直接看它“眼睛里”的画面。

打开【百度搜索资源平台】→ 左侧菜单点「抓取」→「URL检测」→ 输入你的链接 → 点「抓取并渲染」。
两分钟后,你会看到左边是原始HTML,右边是百度渲染后的结果。重点比对:标题、正文第一段、商品标题、价格这些关键信息,有没有出现在右边。

如果右边才有,说明百度靠JS才能看见内容;如果左边就有,那问题不在JS,在别的地方。

顺手再搜下cache:你的网址,虽然快照有延迟,但至少能看出它上次“看到”的是不是空壳。

另外翻翻服务器日志,过滤出User-Agent含Baiduspider的请求。如果它连你的main.js都没去下载,那基本可以确定:它连执行JS的机会都没给。

确保JS内容被抓取的3个核心方法

1. SSR(服务端渲染)是最省心的解法
Next.js、Nuxt.js、Remix这些框架现在开箱就带SSR能力。用户打开页面时,服务器已经把完整HTML吐出来了——蜘蛛进来抄一遍就走,不卡、不等、不出错。

2. 动态渲染是折中方案
用Node.js或Nginx识别User-Agent,如果是Baiduspider,就返回预渲染好的静态HTML;其他用户还是走正常SPA流程。不用大改架构,效果立竿见影。

3. 把关键信息“焊死”在初始HTML里
哪怕你用的是纯前端路由,也请确保<title><h1>、核心描述段落,在首屏HTML里就存在。JS负责锦上添花,而不是雪中送炭。

必须避开的常见JS SEO陷阱

别用#/product/123这种哈希路由。
百度蜘蛛基本不认#后面的东西。改用pushState,让URL变成/product/123,它才当真。

别把正文藏在“点击展开”或“下滑加载”里。
它不会点,也不会滚。想被收录?内容得在首屏DOM加载完的1秒内就到位。

懒加载要分人:对用户友好,对蜘蛛要克制。
首屏的标题、价格、参数表格,别懒;首屏外的图片、评论区,可以懒——但记得用<img src="placeholder.jpg" data-src="real.jpg">这种模式,别全靠JS替换src

今天下班前就能做的紧急检查清单

  1. 立刻打开百度搜索资源平台,用「URL检测」工具,测你最想被搜到的3个页面(比如首页、爆款产品页、联系方式页),看“渲染后”有没有正文内容。
  2. 检查每个页面的<title><meta name="description">:它们是不是随JS动态更新的?还是全站共用一个模板?如果是后者,马上改掉。
  3. 打开浏览器开发者工具 → Network标签 → 刷新页面 → 找到最大的JS文件,右键“Open in new tab”,看看里面是不是塞了没用的库(比如整个Lodash)。删掉,或换成按需引入。
  4. 打开你网站任意页面,右键“查看网页源代码”,搜索关键词(比如产品名、核心卖点词)。如果源码里压根没有,说明JS没把内容“放进去”,得调SSR或动态渲染。
  5. 登录百度搜索资源平台 →「站点管理」→「提交链接」→「sitemap」,把你已有的sitemap.xml地址填进去。没有?现在就用XML Sitemap Generator(免费在线工具)生成一个,5分钟搞定。