搜索抓取

移动端与桌面端的抓取路径:两套 UA 会走出不同结果吗

同一批 URL 被桌面 UA 和移动 UA 分别抓取时,模板、跳转和服务器策略都可能让两条路径分叉。本文拆解响应式站点与独立移动站上常见的差异点,并给出用访问日志对照两套抓取路径的排查方法。

搜索抓取

移动端与桌面端的抓取路径:两套 UA 会走出不同结果吗

同一个 URL,蜘蛛用桌面 UA 和移动 UA 各来一次,拿到的可能是两份不一样的东西。响应式站点看起来只有一个地址,但只要页面里存在按屏幕宽度或 UA 判断的渲染逻辑,两条抓取路径就会分叉。运营侧要做的,是确认分叉之后蜘蛛还能不能走到你想让它走的页面。

两套 UA 对应的抓取行为

主流搜索引擎都会区分桌面与移动抓取代理,比如 Googlebot 与 Googlebot Smartphone、Bingbot 下的移动标识。UA 字符串本身只是身份说明,真正影响抓取的是配套逻辑:移动代理通常按移动优先的规则取页面,桌面代理仍会访问一部分地址。两者请求的 URL 集合并不完全重合,在独立移动站上尤其明显。

响应式站点:同一个地址,两套渲染结果

响应式站点服务器返回的 HTML 通常一致,差异发生在渲染阶段。常见情况有几类:

  • 移动端用 display:none 隐藏了导航或相关推荐,而 DOM 里其实还有链接,这类链接一般仍可被读到,但要确认没有被 JS 在渲染后移除。
  • 用 JS 按 UA 或视口宽度动态插入模块,移动端不加载某些组件,链接自然不出现,渲染型蜘蛛可能读不全。
  • 移动端单独精简了正文,只留标题和摘要,正文里的内链一起消失。

判断方法很直接:用移动 UA 抓一次页面,看渲染后的 DOM 里还剩多少 a 标签,和桌面版对比一下。

独立移动站:多一跳,就多一个可能断的位置

m. 域名或 /m/ 目录的结构里,蜘蛛先访问桌面地址,再通过重定向或 alternate 标注找到移动版本。重定向链条越短越好,一跳能到就别做两跳。需要重点确认的地方:

  • 移动 UA 访问桌面 URL 时返回 302 到移动版,移动版再 302 回来,形成循环;
  • 移动版没有 canonical 指回桌面版,或者指错;
  • 桌面上标注的 alternate 地址本身已经 404,蜘蛛从这里拿不到有效入口。
入口少一跳,抓取路径就少一个失败点。移动站的问题往往不是内容不行,而是跳转链中间断了一环。

服务器按 UA 差异响应的风险

有些站点在防火墙或 CDN 层对移动 UA 做了额外判断,这会直接影响抓取:

  • 对移动 UA 返回 403、429 或验证码页,蜘蛛在日志里表现为大量异常状态码;
  • CDN 缓存按 UA 分桶,但缓存键设置不当,移动版页面被缓存后返回给桌面 UA,反之亦然;
  • 移动端专属模板返回空壳 HTML,正文靠 JS 拉取,抓取时只看到空白。

从日志里对照两条抓取路径

  1. 按 UA 分组,分别统计一周内的请求量与独立 URL 数,看两个数字是否差距过大。
  2. 抽取同一批目录,对比两种 UA 覆盖到的 URL 数量,看差距集中在哪些栏目。
  3. 按状态码分列,移动 UA 下 4xx、5xx 的比例是否明显偏高。
  4. 找出只被移动 UA 访问、从未被桌面 UA 访问的 URL,确认它们是否应该存在。
  5. 找出链接只出现在移动模板里的页面,检查这些链接在桌面版或 Sitemap 里是否也有入口。

日常检查清单

  • 移动版与桌面版的主要导航链接集合是否一致。
  • 移动 UA 访问核心页面返回 200,且首屏 HTML 里含有正文与内链。
  • alternate 与 canonical 双向标注正确,重定向不超过一跳。
  • CDN 缓存键包含 UA,或 Vary 头设置正确。
  • Sitemap 中的 URL 在两种 UA 下都能正常打开。

两套 UA 的抓取路径不需要完全一样,但入口和关键链接不该出现单边缺失。把日志按 UA 拆开看一遍,通常就能判断问题出在模板、跳转还是服务器策略上,再针对性修,比反复提交 URL 更有用。