搜尋抓取

蜘蛛来訪时看的是哪套頁面:移動優先索引下的抓取路径

蜘蛛預設以移動端身份抓取,它看到的那份 HTML 未必是你在电脑上看到的那份。本文梳理响應式、獨立移動站、同 URL 動態分發三種實現方式對抓取路径的不同影响,並给出驗證蜘蛛實际拿到哪個版本的检查方法。

搜尋抓取

蜘蛛来訪时看的是哪套頁面:移動優先索引下的抓取路径

不少站点同时存在桌面版和移動版两套頁面,或者用同一個 URL 根據 User-Agent 返回不同的 HTML。蜘蛛現在預設以移動端身份来訪,所以它拿到的那份 HTML,未必是你在电脑浏览器里看到的那份。抓取和索引對不上时,差異常常就出在這里。

移動優先到底改了什么

最核心的一点是:蜘蛛的預設抓取身份從桌面 UA 換成了移動 UA,评估對象也以移動版本的内容、連結和结构化資料為准。注意這里说的是抓取端拿到的 HTML,不是頁面渲染完在你眼前的样子。

  • 蜘蛛用移動 UA 發起請求,视口按移動端計算
  • 以移動版 HTML 来判断正文内容、内鏈和标注
  • 如果移動版内容比桌面版少,判断依據就是少的那份

三種實現方式,抓取路径差別很大

响應式:一套 HTML,一套 URL

對蜘蛛来说最省事,抓一份就等于拿到全部内容與連結。需要注意的是別把正文用 display:none 長期隐藏,也別让關键内容只在宽屏断点下才由脚本渲染出来。

獨立移動站:两套 URL,两條路径

www 和 m 各自被抓取。如果 m 站的導航被折叠成需要点击才展開的脚本菜單,或者只保留几個热门入口,蜘蛛顺着 m 站走,能發現的 URL 就會少一截。另外要確認 m 站的 robots.txt 没有誤封路径——不少站点在移動站上直接複製了一份舊的 robots 文件,把不该挡的路挡掉了。

同 URL 動態分發:方便,但對缓存敏感

一個 URL 按 UA 或屏幕判断返回不同 HTML。這種做法對缓存层很不友好:如果 CDN 没有正确区分 UA,蜘蛛可能拿到桌面版缓存,普通用戶也可能拿到移動版。需要用 Vary: User-Agent 明确告知缓存层,並且實际驗證不同 UA 下返回是否稳定一致。

抓取路径上常见的几個坑

  1. 移動版内鏈比桌面版少,從首頁到詳情頁的点击深度被拉長
  2. 内容需要交互或滚動到底才加载,而蜘蛛不一定触發這些動作
  3. m 站與 www 之間的跳轉形成环,反复重定向消耗抓取次數
  4. 移動版誤加了 noindex,或 robots 屏蔽了本该抓取的目錄
  5. 移動版图片、脚本体积更大,抓取開销被静態资源占走

怎么確認蜘蛛看到的是哪一版

最直接的办法是用移動 UA 請求目标 URL,把返回的 HTML、狀態碼、canonical 和内鏈,與你在电脑上看到的做一次比對。日誌里也可以按 UA 分组,看移動 UA 的抓取频次、命中的狀態碼分布。

检查时至少覆盖:首頁、一個栏目頁、一個詳情頁,以及移動站的 robots.txt 本身。

稳妥的取舍

能用响應式就尽量用响應式,一套 URL 一套 HTML,抓取路径最短,出問题的环节也最少。确實需要两套站的话,尽量保證两邊正文内容和内鏈结构基本一致,並且在 robots、canonical 上一開始就统一口径,別让两邊各说各话。

至于到底是哪一版被当成了主版本,不用猜。拿两套 UA 各抓一遍,對比返回值,答案通常一次就能看清楚。