移動優先不等于桌面版不再被抓
很多站長把移動優先理解成“蜘蛛只看手机版”,其實更准确的说法是:移動版頁面是抓取和索引时的主要參照,桌面版抓取並没有完全消失。在實际日誌里,你往往能同时看到移動 UA 和桌面 UA 的訪問记錄,只是前者的比重更大,尤其是頁面主要面向手机用戶的时候。對站点而言,重点不是去猜蜘蛛用哪個 UA,而是保證两個版本呈現的核心内容一致。
蜘蛛抓取移動版时會核對哪些東西
移動版被抓取时,蜘蛛依然是在解析一份 HTML 文档,只是會優先請求移動版對應的地址。下面几處出問题,抓取结果常常是不完整的:
- 内容是否等價:正文、主标题、關键連結在移動版上是否存在。為了“手机上更简洁”而砍掉大半正文,是常见的丢内容原因。
- 视口與可用性:缺少 viewport 設定、字号過小或按钮点不中,虽不直接阻止抓取,但會影响後續判断。
- 资源能否加载:移動版如果依赖一段被 robots.txt 拦掉的脚本,或被防火墙按 UA 挡在外面,蜘蛛拿到的可能是個空壳。
- 跳轉是否稳定:桌面地址與移動地址之間来回跳、跳轉鏈過長,都會消耗抓取時間。
- 是否誤加 noindex:移動模板里带了 noindex,桌面版却没有,是典型的配置失誤。
三種常见建站方式的差別
响應式站点
桌面和移動共用一套地址,蜘蛛只需抓一個 URL。這種情况下要留意移動端首屏加载速度,以及被條件加载的内容在 HTML 里到底有没有。
獨立移動站
需要保證桌面頁與移動頁之間的双向标注:桌面頁用 alternate 指向移動版,移動版用 canonical 指回桌面版。标注寫反或只寫一邊,會让蜘蛛在两套地址之間反复確認。
動態服務
同一個 URL 按 UA 返回不同 HTML,看起来省事,但如果服務端只認少數几個 UA,容易把正常抓取挡在门外。至少要让主流蜘蛛的 UA 拿到與真實用戶一致的内容。
几個容易卡住抓取的细节
- 移動版頁面是客戶端渲染的空容器,正文靠接口回填,而接口需要登入或带特定參數。
- 把移動版静態资源放在被拦截的目錄里,CSS 和 JS 都抓不到。
- 移動版與桌面版指向了不同的 canonical,導致蜘蛛在两條路径上摇摆。
- 移動端頁面响應慢或经常超时,請求中断,抓取量自然下降。
不必追求“让蜘蛛多来”,先把移動版頁面能被完整取回這件事做稳,很多连带問题會一起消失。
怎么確認蜘蛛抓的是哪個版本
比較直接的办法是看服務器日誌:按 UA 分组統計不同爬虫對同一地址的請求情况,同时观察返回的狀態碼和响應体大小。如果移動 UA 拿到的响應明顯偏小,或大量返回 3xx、5xx,就說明移動版這條路存在問题。也可以用抓取工具模拟移動版 UA 請求一遍,對比和浏览器里看到的内容差多少。
另外,可以在服務端按 UA 记錄一份简單字段,比如 UA、URL、狀態碼、耗时。持續看一段時間,就能判断移動版抓取是否稳定,而不是靠感觉。
小结
移動優先抓取的核心問题很朴素:移動版是不是一份能獨立成立、内容完整的頁面。把内容對齐、标注寫對、资源放開、速度稳住,抓取路径就不會在移動版這一层断掉。