先给结论:不要试图让两种状态“看起来一样”,而要把它们当作两个可分别验证的样本。对同一地址,用固定的一组请求条件分别抓取、保存完整响应,再逐项对照状态码、可见正文、规范链接和元指令。只要这些字段出现差异,就说明该地址存在按条件分流的内容,后续的收录判断必须建立在“以哪个版本为准”这个明确前提上。
面对设备或登录状态导致的内容差异,常见的三种做法是保留两套、只保留一套、或暂时退出对照。选择依据不是哪个更省事,而是差异是否属于有意设计。
判断顺序建议反过来:先确认差异是否稳定复现,再决定保留哪一套。偶发的登录态差异往往只是会话过期,不构成需要处理的分流。
对照的前提是两次请求只有“设备或登录状态”这一个变量不同。实际操作中,至少固定以下条件:请求的完整地址(含协议与路径大小写)、请求方法、是否携带Cookie、Accept与Accept-Language、User-Agent字符串本身。如果两次抓取的User-Agent不同却用来比较设备差异,结论就不可靠。
一个假设例子:假设同一地址在桌面端返回正文约1200字,在移动端UA下只返回约300字并附带“请下载应用”的提示。此时先看移动端响应里是否包含<link rel="canonical">指向桌面版,以及是否带有noindex。若两者都没有,移动版本就是一个可被独立抓取的薄内容页;下一步应决定是让它规范到桌面版,还是补齐移动端正文。
把每次抓取的原始响应体按“日期-条件”命名保存,而不是只截图渲染后的页面。渲染后的页面会掩盖服务端实际返回了什么,而收录判断依赖的是服务端响应。
登录状态带来的差异有两类,处理方式完全不同。
区分方法很直接:在未登录状态下抓取,看响应中是否存在该地址应有的核心正文。如果核心正文缺失,属于第一类;如果核心正文存在、只是附加模块不同,属于第二类。这个判断会直接决定下一步是改访问控制,还是只需确认规范链接。
逐项核对以下字段,任何一项不同都值得记录,但不必都当作错误:
noindex、另一个不带,会导致抓取到的版本与预期收录版本不一致。注意robots.txt的抓取限制不等于可靠的索引移除,用它来“屏蔽”某个版本往往达不到预期效果。把这些字段整理成一张对照记录,比记住“哪个版本对”更有用,因为下次条件变化时可以复用同一套字段。
选定主版本并调整规范或元指令后,不要立刻认为问题结束。重新用同一组固定条件抓取,确认两个版本现在是否都指向同一主版本、主版本的正文是否完整。如果主版本在某一设备条件下反而返回空内容,说明你选错了基准,需要回到上一步重新取舍。
同时留意一个容易误判的现象:某个版本的抓取量下降,并不能单独证明你的处理正确,它也可能是抓取预算分配变化、站点整体更新节奏改变或该版本本来访问量就低造成的。要结合规范链接是否已统一、主版本正文是否稳定这两点一起看,才能判断改动是否朝预期方向发展。
最后,不同搜索引擎对设备分流和登录态内容的处理支持情况需要分别核查,不要用一家平台的表现推断另一家。HTTPS不保证内容安全无漏洞,也不保证排名,它只是对照时应当固定的一个基础条件。