同一 URL 在未登录、登录、移动端或桌面端返回不同内容时,先不要急着改模板或提交死链。正确做法是固定一个“对照基准”,把每种状态下的可见正文、状态码、规范链接和抓取返回分别记录,再判断百度蜘蛛拿到的是哪一版。若差异只来自登录态,普通抓取通常看到的是未登录版本;若差异来自设备适配,则需要确认两版是否指向同一规范地址。基准不一致时,任何“已修复”的判断都不可靠。
对照的起点不是“我看到了什么”,而是“谁在什么状态下请求了这个地址”。建议至少固定三组请求身份:未登录桌面、未登录移动、已登录桌面。每组只记录四项:HTTP 状态码、最终地址、页面可见正文片段、页面中的规范链接。不要用浏览器插件截图代替,因为截图无法证明返回的 HTML 里写了什么。
实施动作:用命令行或服务端请求工具,分别以三种身份请求同一地址,把返回体保存为独立文件。结果如何影响下一步:如果未登录两版正文一致、只有登录版不同,问题多半在个性化输出;如果未登录桌面与移动正文差异明显,问题转向设备适配和规范声明。
登录后内容不同,最常见的原因是页面在服务端根据会话输出不同模块,或者前端在检测到登录 Cookie 后异步替换正文。百度蜘蛛通常不携带你的登录凭证,所以它拿到的是未登录版本。此时要判断的是:未登录版本是否包含你希望被收录的核心内容。
选择依据:如果未登录版本已经包含标题、主体正文和可索引链接,登录态差异通常不影响收录判断,不必为了蜘蛛伪造登录态。如果未登录版本只剩登录框或空壳,而正文只在登录后出现,那么百度不收录该地址更可能是内容不可见导致,而不是抓取失败。
例外:有些站点用登录态区分付费内容,未登录版本只展示摘要。这种结构下,摘要页可以被抓取,但完整正文不应指望被索引。若业务要求完整正文可索引,需要另建公开的摘要或目录页,而不是让蜘蛛模拟登录。
移动端与桌面端返回不同 HTML 是正常做法,但前提是两版指向同一内容主体,并且规范链接关系清楚。对照时,把移动版和桌面版的可见正文分别提取,比较标题、主体段落和主要链接是否指向同一批详情页。
实施动作:在移动版和桌面版返回体中分别查找 rel="canonical" 与 rel="alternate" 声明,确认它们是否互相指向。结果如何影响下一步:如果两版各自声明自己为规范,百度可能把同一内容当成两个地址处理,此时应先统一规范声明,再观察抓取变化;如果两版都指向同一个规范地址,则设备差异本身通常不是不收录的主因。
注意:站点地图不保证收录,robots.txt 的抓取限制也不等于可靠的索引移除。若你为了阻止登录版被索引而在 robots.txt 中屏蔽某些参数,百度仍可能因为外部链接或历史抓取保留该地址的索引记录。要移除索引,应使用页面级 noindex,并确认该页面能被正常抓取到,否则 noindex 也读不到。
假设某详情页在未登录桌面返回完整正文,未登录移动返回“请下载 App 查看”,登录桌面返回完整正文。三组请求的状态码都是 200,最终地址相同,规范链接都指向该地址。
对照结果:百度蜘蛛最可能拿到未登录移动版,也就是“请下载 App 查看”。这时不收录的原因不在登录态,而在移动版把正文替换成了引导语。下一步动作应是让移动版至少保留与桌面版一致的核心正文,或为移动版单独声明一个可索引的等价地址,而不是反复提交站点地图。这个例子的数字和结论都是假设,用于说明比较方法,不代表任何真实站点的抓取结果。
需要回退的条件:改动后未登录版本的正文从完整变为空壳,且状态码、规范链接和抓取返回同时出现异常。此时继续提交或调整站点地图不会解决内容不可见的问题,应先恢复到改动前的输出逻辑。
可以继续观察的条件:未登录版本正文完整,仅登录态或设备态存在模块差异,且规范链接一致。此时百度不收录可能来自抓取预算、内容质量或外部链接不足,需要分别核查,而不是把设备差异当成唯一原因。请求量或抓取量归零也不能单独证明处理正确,它还可能来自日志采样、屏蔽规则或统计口径变化。HTTPS 不保证安全无漏洞或排名,它只是对照时的一项基础条件。
最后,把三种身份的返回体、状态码、最终地址和规范链接整理成同一张对照记录。只有这张记录能支持你判断:百度拿到的是哪一版、差异来自哪里、下一步该改输出逻辑还是该等抓取更新。