搜尋抓取

移動優先索引下,蜘蛛抓取的是哪個版本的頁面

移動優先索引下,搜尋引擎爬虫預設以移動端身份抓取,你為手机准备的那份 HTML 才是蜘蛛真正讀到的内容。本文對比响應式、動態服務和獨立移動 URL 三種做法,說明不同方案下蜘蛛看到的版本差异如何影响内鏈、URL 發現與抓取路径,並给出可操作的對照自查方法。

搜尋抓取

移動優先索引下,蜘蛛抓取的是哪個版本的頁面

蜘蛛預設用移動端身份来抓取

過去搜尋引擎的爬虫大多以桌面浏览器身份訪問頁面,站点给桌面端准备的那份 HTML 就是蜘蛛看到的内容。現在這個預設已经反過来了:主流搜尋引擎以移動優先的方式建立索引,爬虫在大多數情况下會带着智能手机的 User-Agent 来抓取。這意味着,移動版頁面才是蜘蛛真正讀取的那份内容,桌面版更多只是给坐在电脑前的人看的。

這對抓取路径的影响很直接:蜘蛛能看到的正文長度、出鏈數量、以及顺着這些連結能走到的 URL,都取决于移動版怎么輸出。

三種移動化做法,蜘蛛看到的東西不一样

响應式设計:一個 URL 一份 HTML

最简單也最省事。同一個 URL 返回同一份 HTML,只用 CSS 控制布局。蜘蛛拿到的 DOM 和桌面用戶基本一致,内鏈數量、正文、canonical 都不用額外處理。只要注意別把關键内容塞進只在桌面断点顯示的容器里,蜘蛛看到的就是完整的頁面。

動態服務:同一個 URL,两套 HTML

服務器根據 User-Agent 返回不同的 HTML。這種做法本身可以接受,但要保證两套内容的主干一致:标题、正文、内鏈、结构化資料都要對得上。同时建议返回 Vary: User-Agent,让中間层缓存知道這份响應随 UA 變化,否則缓存可能把移動版發给桌面用戶,或者反過来让蜘蛛長期拿到一份陈舊内容。

風險在于,维護两套模板时很容易只改一套。桌面版新增的栏目連結没有同步到移動版模板,蜘蛛就永遠走不到那些新 URL,URL 發現的速度會明顯慢下来。

獨立移動 URL:m.example.com 或带參數版本

這種方式現在不适合新做,但如果是歷史遗留就得處理好三件事:移動版頁面的 canonical 指向桌面版 URL(或自指並做双向标注),桌面版頁面加上指向移動版的 alternate 标注,移動版不要用 robots.txt 整站禁止。最後一條最容易被忽略:一旦移動子域被禁止抓取,蜘蛛就只能靠桌面版判断,而你偏偏把主要内容都放在移動版上,结果两邊都拿不到完整信息。

移動版容易丢掉的几样東西

  • 折叠内容:手風琴、标簽頁里預設收起的内容,如果只是用 CSS 隐藏通常還能被抓到;如果改成点击才异步加载,就可能抓不到。
  • 内鏈數量:移動端導航常被收進汉堡菜單,頁脚被精简,结果是移動版頁面的出鏈明顯少于桌面版,蜘蛛沿内鏈發現的 URL 也跟着變少。
  • 分頁與列表:移動端列表常改成無限滚動,蜘蛛滚不動,第二頁之後的 URL 就可能不再進入抓取队列。
  • 标注信息:移動版模板里漏掉或寫错的 canonical、hreflang,會把蜘蛛對頁面關系的判断带偏。

怎么自查蜘蛛看到的是哪一份

  1. 用移動端 User-Agent 請求頁面,儲存服務器返回的原始 HTML。
  2. 再換桌面 UA 請求同一 URL,两份 HTML 做對比,重点看正文長度、主标题、canonical 和内鏈數量。
  3. 在訪問日誌里按 User-Agent 分组,看搜尋引擎爬虫的移動身份占比,以及它們實际抓到了哪些 URL。
  4. 把 Sitemap 里提交的 URL 和實际被抓的 URL 對照,找出只在桌面版出現、移動版没有任何入口的頁面。
判断标准很简單:把移動版 HTML 当成蜘蛛唯一能看到的東西。如果某個 URL 在這份 HTML 里没有任何入口,它被發現的概率就很低。

让两條路径尽量重合

不管用哪種方案,目标都是让移動版和桌面版承载同样的信息與連結拓扑。移動端為了体驗做减法可以理解,但减掉的部分不要恰好是蜘蛛用来發現新 URL 的那部分。導航可以折叠,連結要留在 HTML 里;列表可以無限滚動,前几頁的分頁連結最好保留;内容可以收起,別改成点击才加载。

服務器稳定性會放大這個問题:如果移動版和桌面版走的是不同渲染路径,任何一侧超时或报错,蜘蛛拿到的就是残缺頁面,抓取路径也跟着断掉。把移動版的响應時間和错誤率当成抓取健康的日常指标来盯,比事後排查索引缺失要省力得多。