常见问题

蜘蛛池入口页对手机和电脑返回不同链接,搜索蜘蛛最终会看哪一版

有些入口页会按 User-Agent 给手机和电脑返回不同的链接,但搜索蜘蛛本身就有桌面和移动两套抓取身份。移动优先索引下最终采用哪一版,直接决定目标 URL 有没有被真正发现。本文讲清判断逻辑、常见坑和自查方法。

常见问题

蜘蛛池入口页对手机和电脑返回不同链接,搜索蜘蛛最终会看哪一版

有些站长会在入口页上做一层判断:访问者是手机就输出一批链接,是电脑就输出另一批。做这个动作的初衷通常是让页面在不同设备上都显得自然,但搜索蜘蛛来抓的时候,它到底算手机还是电脑,会直接决定它看到哪一版。

搜索蜘蛛本身就有两套抓取身份

主流搜索引擎的抓取端通常不止一个:一类是桌面抓取,UA 里会带 Desktop 之类的标识;另一类是移动抓取,UA 里带 Mobile 字样。也就是说,你写的那条 if 判断,在搜索蜘蛛身上并不是恒定成立的——它会从两个入口分别进来,拿到两份可能完全不同的 HTML。

如果分流逻辑只是简单地判断“含 Mobile 就吐移动版,否则吐桌面版”,那么这两次抓取的结果会不一致。后果是:你以为链接已经发出去了,实际只发给了其中一半的抓取端。

移动优先索引下,默认参考的是移动版

现在多数搜索引擎以移动端渲染结果为索引基准。这意味着即使桌面抓取拿到了完整链接,而移动抓取拿到的是残缺版本,最终参与索引的往往还是移动那一版。所以如果把主要链接只放在桌面版本里,实际效果可能和没放差不多。

最省事的验证方法:用移动 UA 请求一次入口页,看返回的 HTML 里有没有你要暴露的目标 URL。没有,就等于没做。

两版差异太大时,麻烦会更多

  • 两版的链接数量、锚文本、目标 URL 完全不同,等于给同一个页面提供了两套互相矛盾的信号;
  • 其中一版正文几乎是空的,容易被判为低质量页面,抓取频率随之下降;
  • 差异越大,越接近“对爬虫和用户返回不同内容”这个定义。

什么时候会踩到 cloaking 的线

按 UA 分流本身不算违规,问题在于分流的目的是什么。如果给搜索蜘蛛一版、给真实用户另一版,比如给爬虫看干净页面、给用户弹跳转或广告,这就是典型的 cloaking。一旦被识别,影响往往不只这一页,可能连带同 IP、同域名下的其他页面一起被降权或减少抓取。

相对安全的边界是:不同版本的内容主体保持一致,只在排版、加载方式上有差异。做不到一致,就不要按 UA 分流。

更稳妥的几种做法

  1. 入口页输出统一 HTML,链接直接写在服务端渲染的正文里,不依赖 UA、不依赖 JavaScript;
  2. 确实需要响应式时,用 CSS 控制显示与隐藏,而不是准备两套 HTML;
  3. 如果一定要按设备分流,让两版里的目标 URL 集合完全一致,只改展示形式;
  4. 分流规则里给已知的搜索引擎 UA 加白名单,让它们统一走同一个分支,避免被抓取端被误判成普通移动用户。

上线前后的自查清单

  • 用桌面 UA 和移动 UA 各请求一次,diff 两份 HTML,看差在哪里;
  • 确认返回内容里目标 URL 是否都存在,锚文本是否可读;
  • 如果中间有 CDN 或缓存,检查是否设置了 Vary: User-Agent,否则缓存的可能是另一版;
  • 翻日志,看移动抓取 UA 的请求量和返回状态码,是否出现大量非 200。

说到底,搜索蜘蛛不是“一个访客”,按 UA 分流相当于同时对着两个访客说话。要么两边说同样的话,要么就别分——这比事后去猜它看了哪一版要省力得多。