先把“同一地址”拆成两组可复查的请求:一组带登录态,一组不带;一组用桌面UA,一组用移动UA。分别记录返回的HTML、HTTP状态和跳转链,再对照差异出现在哪一层。如果差异只出现在HTML正文而状态相同,问题多半在服务端的内容协商;如果状态码或跳转链不同,则要先处理访问控制,再谈收录判断。
设备与登录状态会同时改变多个变量:User-Agent、Cookie、Accept-Language、IP归属、是否携带会话令牌。要定位差异来源,必须一次只改一个变量。建议准备四条请求线:桌面无登录、桌面有登录、移动无登录、移动有登录。每条线都记录完整请求头、响应头、状态码、最终URL和正文摘要。
实际操作时,用curl -I先看响应头,再用curl -s -D headers.txt -o body.html保存正文,登录态通过-b cookie.txt注入。四条线跑完后,把状态码、Content-Length、Vary、Cache-Control和正文首屏文字列成对照表。这张表就是后续判断的唯一依据,避免凭记忆比较。
对照结果通常落在三种情况,处理顺序完全不同。
判断依据是差异是否改变了页面的主题与主体信息。只改样式、推荐位或登录提示,不构成两个不同内容;主体文案、价格、库存或权限可见性不同,才需要当作两个版本分别处理。
响应头常被忽略,但它能直接指向原因。重点看四个字段:
Vary:如果包含User-Agent或Cookie,说明服务端明确按这些维度缓存或协商内容,差异是设计行为,不是偶发。Cache-Control:private表示不应被共享缓存保存,登录态页面通常如此;public却返回不同内容,则要检查缓存键是否遗漏了Cookie。Location:跳转目标是否带会话参数,能说明访问控制发生在哪一层。X-Robots-Tag:不同响应可能携带不同的抓取指令,这会影响收录工具对页面的处理。如果Vary里没有Cookie,但登录与未登录返回不同正文,说明缓存层可能把登录态内容错误地提供给了未登录请求。这时下一步应检查CDN或反向代理的缓存键配置,而不是继续调整页面本身。
对照完成后,按差异性质选择动作:
每次修改后重跑同一组对照请求,只有四条线的结果符合预期,才进入下一步。若修改后状态码和正文都一致,但收录工具仍显示旧结果,这可能是缓存未过期或处理延迟,不能单独作为修改失败的证据。
假设某价格页未登录返回200并展示基础价,登录后返回200并展示会员价,两者状态码相同但正文不同。Vary中包含Cookie,说明这是有意设计。此时不应把登录版当作收录目标,而应确保未登录版包含完整的公开信息,并在需要时用独立的公开地址承载会员内容。如果未登录版反而跳转到登录页,则先解决跳转,再谈收录。这个例子的数字仅用于说明比较方法,不代表任何真实站点数据。
把四条请求线的记录保存下来,每次调整后重新对照,差异是否收敛就能直接判断处理是否到位。