先把“同一地址”拆成两个变量:请求身份和客户端特征。用无痕窗口、退出登录的普通窗口、登录后的窗口,以及移动端与桌面端分别请求同一URL,把每次返回的HTML、响应头和最终跳转目标保存下来。对照时不要只比较肉眼看到的页面,而要比对返回的正文、状态码、规范链接和robots元标签。若差异只出现在登录态,通常说明内容按会话分流;若差异出现在设备之间,则要检查是否存在按UA或视口做的服务端分支。
假设一个已有实际业务的站点,产品详情页 /item/1001 在未登录时返回完整介绍,登录后却插入“会员价”和专属下载入口,移动端还额外出现一段仅对手机展示的短描述。此时要判断:搜索引擎抓取到的究竟是哪一个版本,以及是否需要为不同版本分别准备可见内容。
第一步不是改代码,而是固定请求条件。用同一台机器、同一网络,分别记录四种组合:未登录桌面、未登录移动、登录桌面、登录移动。每次保存响应正文的哈希值、HTTP状态码、Link: rel="canonical"、meta name="robots",以及是否发生客户端跳转。这样做的结果是:你能看出差异是来自服务端返回,还是来自浏览器执行JavaScript后的二次渲染。若未登录与登录返回的正文哈希不同,但状态码都是200,说明服务端按会话分流;若两者正文相同、登录后才出现额外区块,则更可能是前端脚本按登录状态注入。
第一类是身份差异:登录与未登录。它通常由Cookie或会话令牌触发,服务端可能返回不同模板,也可能只在前端隐藏或显示区块。第二类是设备差异:桌面与移动。它可能来自User-Agent判断、视口宽度判断,或独立的移动子域。第三类是地域或语言差异:同一URL按IP或Accept-Language返回不同语言版本。这三类差异对收录的影响不同,不能用同一套处理方式。
判断依据可以看响应头里是否有Vary字段。若出现Vary: Cookie或Vary: User-Agent,说明缓存和抓取都可能因这些维度而变化。此时需要进一步确认:搜索引擎抓取时使用的默认身份是什么,以及站点是否对未登录状态提供了完整且可索引的版本。若未登录版本已经包含核心内容,登录后增加的会员信息通常不需要单独追求收录;若未登录版本内容残缺,而登录版本才是完整介绍,则要评估是否把关键内容移到未登录也能看到的位置。
可以按下面的顺序执行,并把结果写进同一张记录表:
这个动作的结果会直接影响下一步:如果未登录版本内容完整且与登录版本共享同一 canonical,通常不需要为登录态另建URL;如果移动端返回的正文明显少于桌面端,而移动端又是主要访问来源,就需要先补全移动端可见内容,再谈收录状态。若站点对未登录用户直接返回登录墙,则要意识到搜索引擎抓取到的可能只是登录提示,而不是业务内容。
robots.txt 的抓取限制不等于可靠的索引移除。若你为了阻止登录态页面被抓取而屏蔽了某条路径,已收录的URL仍可能因外部链接或历史信号出现在结果中;要移除索引,应结合页面级noindex和后续状态确认。站点地图不保证收录,它只是发现线索之一。HTTPS 不保证安全无漏洞或排名,它只是传输层的一种配置。不同搜索引擎对会话分流和UA分支的处理并不一致,须分别核查,不能因为一个引擎抓到了未登录版本就推断所有引擎都如此。
若对照后发现抓取量或请求量下降,不要单独把它当作处理正确的证据。缓存策略调整、抓取预算重新分配、站点整体改版、外部链接变化,都可能产生同样现象。更稳妥的做法是保留改动前后的对照记录,并在后续抓取日志中确认目标URL返回的正文是否稳定。只有当你明确知道哪个身份、哪种设备返回了哪一版内容,并且该版本与你要参与收录的版本一致时,下一步的收录观察才有意义。