先给一个有条件的结论:如果同一 URL 在未登录、登录、移动端、桌面端之间返回了不同正文,那么它是否算“同一份可收录内容”,不能靠截图投票决定,而要先确认差异来自服务端分流还是客户端渲染。只有当你能在固定请求头、固定出口 IP、固定登录状态下复现同一份 HTML,这个地址才适合作为对照基准;否则应把它当成多个变体分别核对。下面给出可执行的分组方法和一个会让结论失效的反例。
设备或登录状态导致的差异,通常落在三类里,处理方式完全不同。
判断顺序建议是:先抓原始 HTML 比对字节差异,再渲染后比对可见正文。如果原始 HTML 已经不同,就归入第一类;如果原始 HTML 相同而渲染后不同,归入第二类。这个动作的价值在于:它决定你接下来是改服务端分流逻辑,还是只调整前端渲染与可抓取性。
多个角色对“这个页面到底显示什么”有不同理解时,争论往往来自变量没锁死。要让对照可复查,至少固定以下四项,并记录每一项的实际取值:
假设一个场景:运营在登录后台看到完整商品描述,SEO 用无痕窗口只看到一段占位文字。两人都没说错,但对照对象不同。此时正确动作不是争论谁看到的“才对”,而是各自导出该状态下的可见正文,标注请求身份和时间,再比较两者是否指向同一主题。如果登录态内容才是希望被收录的版本,下一步就要检查未登录请求是否也能拿到等价正文,而不是直接假设搜索引擎会以登录态抓取。
上面的“先固定变量再对照”有一个明确反例:差异来自缓存层,而不是设备或登录状态本身。例如同一 UA、同一登录态,在不同出口 IP 下拿到新旧两个版本,这看起来像设备差异,实际是 CDN 或反向代理返回了不同缓存副本。此时如果你按设备分组去改模板,方向就错了。
区分方法:用完全相同的请求头和身份,只切换出口 IP 或加一个绕过缓存的查询参数,观察响应是否变化。如果变化,优先排查缓存键是否把不该区分的维度(如 Cookie、地区)纳入了缓存策略,而不是先动页面内容。抓取量或某状态下的返回量下降,也不能单独证明你的判断正确,它同样可能来自缓存过期、分流规则调整或抓取频率变化,需要结合响应头与原始 HTML 一起看。
完成分组后,按差异类型选择动作,并用结果决定下一步:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,HTTPS 同样不保证内容一定被正确处理。这些手段都不能替代“同一地址返回了什么”这一事实核对。最后一步应是把固定变量、原始响应差异和最终动作写成一份可重复执行的记录,让下一个人用同样条件得到同样结果,再据此决定是否继续修改页面或分流逻辑。