动态页面的可见内容,不能只凭浏览器里“能看到”就认定。要确认它是否真的可见,需要把“用户浏览器渲染后的结果”和“搜索引擎抓取时拿到的结果”分开检查。结论是:优先做一次渲染后内容核验;如果渲染结果与原始HTML差异很大,再补一次抓取模拟。两者都拿到可见文本,才能判断动态内容是否对用户和抓取同时可见。
动态页面常见三种状态:原始HTML里没有正文,JavaScript执行后才有;原始HTML里有正文,但被脚本隐藏或替换;正文依赖接口返回,接口失败时页面只剩骨架。网站死链查询工具通常只看HTTP状态码和链接指向,它无法告诉你渲染后正文是否出现。所以确认可见内容,必须额外做内容层面的检查。
适用前提:页面正文由前端脚本、异步接口或前端路由生成。如果页面是纯静态HTML,直接看源码即可,不必走渲染流程。
适合排查“用户能看见但抓取看不到”的问题。具体做法:
验收信号:禁用JavaScript后正文仍在,说明内容不依赖渲染;若正文消失但接口正常,说明可见性依赖脚本执行。这两种结果对应不同的处理方向。
适合确认抓取端能否拿到同样内容。具体做法:
判断结果:如果渲染后正文出现且与用户看到的一致,说明该动态内容对抓取可见;如果渲染后仍为空,需要检查脚本是否被robots.txt阻止、接口是否要求登录、或内容是否在交互后才加载。
浏览器渲染核验成本低,适合快速判断页面是否依赖脚本;抓取模拟核验更接近抓取端视角,适合确认最终可见性。两者不是替代关系:前者回答“用户能不能看到”,后者回答“抓取能不能拿到”。如果只做其中一项,容易把用户可见误判为抓取可见,或把抓取失败误判为页面死链。
注意:robots.txt的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS不保证安全无漏洞或排名。这些规则与可见内容判断是两件事,不要混在一起下结论。
判断规则:状态码正常但正文为空,属于内容可见性问题,不是死链;状态码异常且正文为空,才需要按死链方向继续排查。
下一步:选一个动态页面,先禁用JavaScript看正文是否消失,再用抓取模拟获取渲染后HTML,对比两次结果。若两次都拿不到正文,再检查接口和脚本加载条件。