搜尋抓取

移動端與桌面端的抓取路径:两套 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 更有用。