确认动态页面在百度收录视角下的可见内容,不能只看浏览器里渲染出来的画面,而要看百度蜘蛛抓取到的HTML源码中是否包含这些内容。一个常见误解是:用户在页面上能看到文字,百度就一定能看到。实际上,动态页面常用JavaScript在浏览器端填充数据,而百度蜘蛛拿到初始HTML时,这些区域可能是空的。判断的关键是区分“用户可见”和“源码可见”,再决定用服务端渲染还是预渲染来处理。
动态页面通常先返回一个骨架HTML,再由JavaScript请求接口、拼接数据、插入DOM。浏览器执行完脚本后,文字才出现在页面上。百度蜘蛛虽然具备一定的脚本执行能力,但执行程度、等待时间和资源调度并不等同于真实用户浏览器,页面越依赖异步请求,内容被抓取到的确定性越低。
验证方法很直接:在浏览器中打开页面,右键选择“查看网页源代码”,而不是“检查”。源码是服务器最初返回的HTML。如果目标文字只出现在“检查”面板的DOM里,却不在源代码中,说明它依赖脚本生成。此时不能断定百度一定看不到,但可以确定它不属于稳定可见内容。
比源码查看更接近真实抓取的方式,是模拟百度蜘蛛的请求。可以用命令行工具发起请求,观察返回的HTML:
curl -A "Baiduspider" https://example.com/page
把返回结果保存后搜索关键文字。如果搜不到,说明初始响应里没有这段内容。需要说明的是,百度蜘蛛的UA可以被伪造,所以这个测试只能反映“服务器对特定UA返回了什么”,不能完全等同于百度真实抓取行为,但足以暴露服务端是否按UA做了差异化输出。
如果站点已接入百度搜索资源平台,可以用其中的抓取诊断功能提交具体URL,查看百度蜘蛛抓取到的HTML和状态码。这是更接近实际的核对方式,但前提是站点已完成验证。
确认内容不在初始HTML后,常见处理有两种,选择取决于页面类型和改动成本。
判断依据可以简化为三点:页面是否需要被收录;内容是否随请求实时变化;团队能否承担服务端改造。若页面只是登录后的操作界面,本身不需要收录,则不必强行SSR。若页面是商品详情且内容来自接口,优先考虑SSR。
robots.txt 的抓取限制不等于可靠的索引移除。被robots禁止抓取的URL,百度可能仍因外部链接而将其收录为无摘要结果。因此,如果动态页面不需要收录,用robots屏蔽并不是干净的做法,更合适的是返回404或410,或使用noindex。站点地图提交也不保证收录,它只是告知URL存在。HTTPS同样不保证内容可见或排名,它只解决传输加密问题。
下一步:挑一个当前依赖接口渲染、且希望被收录的动态页面,先完成上面第1步和第2步,确认它属于“源码可见”还是“仅浏览器可见”,再决定是否进入渲染改造。