先抓一个具体页面,把“服务器直接返回的HTML”和“脚本执行后的DOM”分别保存下来,再逐段比对。差异通常集中在三类位置:正文主体、链接与分页、结构化数据。定位的目标不是证明谁对谁错,而是判断搜索引擎拿到的是哪一版,以及这个版本是否足以支撑收录决策。
取一个你手头已有、且确认在收录表现上存在疑问的页面。用两种方式各取一份内容:
如果条件允许,再用命令行请求同一个URL,只保留响应体,不执行任何脚本,作为A版的交叉验证。两份快照必须来自同一个URL、同一时间段,否则后面的比对没有意义。
这一步的实际动作是“固定样本”。结果会直接影响下一步:如果A版和B版几乎一致,问题不在渲染差异上,应转向抓取频次、内部链接或站点结构;如果差异明显,才进入逐段比对。
整页diff噪音很大,脚本注入的时间戳、随机推荐位、A/B测试类名都会造成假差异。更可靠的做法是按区块切分,重点看四块:
<a href>,还是只在B版出现。<title>、<meta name="description">是否由脚本后写入。后写入意味着原始响应里可能是空的或占位的。比对时给每块标注三种状态之一:A有B有、A无B有、A有B不同。第三种最容易被忽略,例如A版标题是通用模板,B版才替换成具体标题,这种情况下搜索引擎可能抓到的是通用标题。
看到A版缺内容,不要直接归因于脚本渲染。先排除几种同样能造成差异的原因:
一个可区分的证据是:如果A版完全缺少正文容器,而B版完整,倾向渲染依赖;如果A版有容器但为空,且脚本文件请求返回403或被robots.txt禁止,问题在资源可抓取性,而不在渲染能力本身。
需要提醒的是,robots.txt限制抓取某段路径,不等于该URL会从索引中移除,也不等于页面内容不会被以其他方式引用。把“禁止抓取”当成“移除收录”的手段,往往会得到与预期不同的结果。站点地图提交同样不保证收录,它只是提供一个发现入口。
不是所有差异都需要处理。判断标准是:搜索引擎在只看到A版的情况下,能否理解这个页面的主题、能否找到继续抓取的链接、能否判断页面之间的主次关系。
可以按下面的条件分流:
假设一个列表页有20条条目,A版只输出前5条且没有下一页链接,B版通过脚本补齐20条并生成分页。这个例子里,真正的风险不是“少15条”,而是抓取路径在A版断掉。此时先修分页链接的服务端输出,比先修单条内容更有效。数字仅用于说明比较方法,不代表任何实际页面规模。
根据上面的分流,选一个最小改动落地,然后重新取A版快照验证:
改完后重新抓取A版,确认目标区块已出现。如果A版内容补齐但收录表现没有同步变化,不能据此断定改动无效,因为收录还受链接发现、页面质量、重复内容等多重因素影响。此时应继续观察抓取日志和索引状态,而不是反复改动同一处。
整个流程的关键是:先把“搜索引擎看到什么”变成两份可对照的快照,再按区块定位差异来源,最后只改影响抓取与理解的那一处。对个别样本有效的判断,在规模化前要重新抽样验证,因为模板差异、地区差异和登录态都可能让结论只在部分页面上成立。