搜尋抓取

移動端爬虫與桌面爬虫:同一站点被两套 UA 抓出的差异

同一站点常被两套抓取 UA 訪問:桌面爬虫與移動爬虫。它們走到的頁面、拿到的 HTML 和内鏈出口可能並不一致。本文說明這種差异從哪来、日誌里怎么分辨,以及如何让两套爬虫看到同一套 URL 與抓取路径。

搜尋抓取

移動端爬虫與桌面爬虫:同一站点被两套 UA 抓出的差异

搜尋引擎的抓取並不是只靠一只蜘蛛。同一天里,你可能在日誌中看到两條 UA:一條带桌面标识,一條带移動标识。它們訪問的是同一個站点,但走到的頁面、拿到的 HTML、以及留下的抓取频次都可能不一样。搞清楚這两條线的分工,有助于判断某類 URL 一直没被抓,是發現环节没铺到,還是抓取环节被分流了。

两套爬虫的分工並不完全重合

桌面爬虫服務于桌面索引,移動爬虫在移動優先的前提下承担主要抓取任務。對多數站点来说,移動爬虫的抓取量占比更高。若站点是响應式结构,两套 UA 拿到的 HTML 基本一致,差异只出現在视口和部分资源加载上;如果是獨立 m 站或按 UA 動態下發内容,两套 UA 可能拿到结构完全不同的 DOM,連結出口也就跟着變了。

差异最常见的几個来源

  • 响應式设計:同一份 HTML,两端差异最小,通常不需要額外處理。
  • 獨立移動域:桌面爬虫訪問主域,移動爬虫訪問 m 域,两邊導航、分頁、Sitemap 容易不同步。
  • 動態渲染或客戶端跳轉:服務端按 UA 返回不同入口,可能让其中一條线走到半路就断了。
  • 屏蔽規則:robots.txt、CDN 或 WAF 里存在只放行一類 UA 的規則,另一類直接被挡在门外。

日誌里怎么分辨

最直接的做法是按 UA 分组,統計同一目錄、同一批 URL 的抓取次數。如果某個栏目在移動 UA 下長期為零,先看它是不是只出現在桌面版頁面的内鏈里,而移動版導航没有给出出口。反過来同样成立:只在移動版出現、桌面版隐藏的連結,桌面爬虫也走不到。

几個容易被忽略的细节

  • 移動爬虫並不因為设备小就對体积更宽容,首屏资源阻塞、關键内容靠後加载,同样會影响它能走多遠。
  • m 站如果做了跳轉回主域的逻辑,等于给移動爬虫多绕一层,抓取額度被消耗在跳轉鏈上而不是内容頁。
  • 两套 UA 的抓取节奏受各自索引需求影响,很难人工單獨調节;能控制的是站点响應速度、错誤率和可抓取路径的一致性。

建议的自查顺序

  1. 在日誌中按 UA 拆分,列出两條线各自覆盖到的目錄。
  2. 把桌面版與移動版的内鏈出口逐項對比,尤其是導航、面包屑和分頁。
  3. 检查 robots.txt、WAF、CDN 里是否有與 UA 相關的放行或拦截規則。
  4. 確認移動版是否有獨立 Sitemap,且其中的 URL 與移動内鏈一致。
  5. 抽查移動版首屏關键内容是否存在于初始 HTML 中,而不是等脚本执行後才出現。

為什么建议两邊保持一致

站点只维護一套可抓取的 URL 與出口结构,能减少两類麻烦:移動爬虫找不到只在桌面版出現的連結;同一内容被两套 UA 以不同 URL 分別抓取,形成重复。把導航、分頁、面包屑和 Sitemap 在两端對齐,是最省事也最稳的做法。

两套爬虫之間的差异,本质上不是蜘蛛認不認你的移動站,而是你的移動站有没有给出能走通的路径。让两條线看到同一套 URL、同一套出口,比针對某一個 UA 做特殊處理更可靠。