先给结论:不要急着判断“哪个版本才是真实页面”,而要判断搜狗抓到的版本是否包含你希望被收录的内容。定位差异的正确顺序是,先固定一个可复现的请求条件,再对比静态HTML与渲染后DOM的可见文本和链接,最后判断差异是抓取阶段就存在,还是渲染阶段才出现。搜狗对脚本渲染的支持程度、触发条件和处理优先级并未公开固定规则,因此不能假设它一定会执行你的脚本,也不能假设它一定不执行。
静态响应与脚本渲染结果不同,通常对应两类页面,处理选择完全不同。
选择依据不是“哪种技术更先进”,而是你的目标内容是否依赖执行环境。如果正文、标题、主要内链都在静态响应中,就不必为了渲染差异大动干戈;如果正文只在渲染后出现,就必须围绕渲染链路排查。
浏览器里看到的永远是渲染后的结果,它不能代表搜狗抓取时看到的内容。要定位差异,先做可复现的对比。
这个动作的结果会直接决定下一步。如果差异集中在正文,说明渲染是收录的关键路径;如果差异只在页脚、推荐位或统计脚本,通常不影响主体内容判断,可以降低优先级。
静态与渲染结果不同,常见来源有三类,证据特征不一样。
需要提醒的是,抓取量、请求量或某个统计指标归零,不能单独证明问题出在渲染上。它也可能是抓取配额变化、robots 限制、URL 参数过滤或站点结构变动导致。要结合日志中请求的响应体特征一起看,而不是只看次数。
假设某旧系统页面,静态HTML中只有一个空的 <div id="app"></div>,正文由脚本请求接口后插入。禁用脚本请求时,可见文本几乎为零;允许脚本执行后,正文完整出现。
此时可以做的动作是:把该页面的静态响应与渲染后DOM分别保存,对比正文首段是否一致。如果静态版本确实为空,那么下一步不是反复提交URL,而是判断能否在服务端或构建阶段输出一份包含正文的静态版本。若无法改造旧系统,则至少确认脚本请求的接口不依赖特定环境,并观察搜狗抓取日志中该URL的响应体是否包含正文。这个动作的结果会告诉你,问题在“抓不到内容”还是“抓到了但没进入索引”,两者的处理方向不同。
有些差异不必处理。比如静态与渲染后的差异只出现在时间戳、随机推荐位、A/B 测试分支或个性化模块,主体内容一致,这类差异通常不影响收录判断。另一些差异则不能忽略:静态版本包含旧内容、旧合作关系或已下线的入口,而渲染后版本才是当前有效内容。这种情况下,差异本身就是一个需要清理的信号。
还要注意,robots.txt 的抓取限制不等于可靠的索引移除,它只控制抓取,不保证已收录结果立刻消失。站点地图也不保证收录,它只是发现入口之一。HTTPS 同样不保证安全无漏洞或排名提升,它只是传输层条件。把这些手段当成渲染差异的替代方案,会掩盖真正的问题。
最后,搜狗的具体渲染行为、接口和阈值没有公开固定规则,任何“一定执行”或“一定不执行”的判断都不可靠。可靠的做法是保留两份可复现的响应证据,按内容、链接和条件三个维度定位差异,再决定是改造输出方式,还是接受差异并转向其他收录影响因素。