現在主流搜尋引擎基本以移動優先索引為主,蜘蛛預設用移動端 UA 来抓取和评估頁面。對蜘蛛池来说,這件事很直接:入口頁如果只在桌面版做了内容,移動版是空壳或者干脆跳走,蜘蛛看到的很可能就是那個空壳,它不會替你去点桌面版再看一遍。
移動端蜘蛛實际看到的是什么
同一個入口頁,在不同實現方式下,移動蜘蛛拿到的 HTML 可能完全不同。差异往往不在内容本身,而在連結、狀態碼和响應体积上。
三種常见的移動端實現
- 响應式:桌面和移動共用一份 HTML,靠 CSS 适配。對蜘蛛最友好,連結和正文基本一致,出問题的概率最低。
- 獨立移動站:例如 m 子域或另一個域名。需要移動版與桌面版互相声明對應關系,canonical 和 alternate 指错,蜘蛛就容易把两套頁面当成两份内容。
- 動態服務:同一個 URL,按 UA 返回不同的 HTML。最容易翻车——CDN 或缓存层如果没有正确区分 UA,可能把桌面 HTML 回给移動蜘蛛,或者反過来。
入口頁最容易踩的几個坑
- 移動版只留一句“請在电脑上訪問”,蜘蛛到這里就断了。
- 正文和連結塞進图片或懒加载区块,不滚動就不出現在初始 HTML 里。
- 移動版為了“精简”,把出站連結砍到只剩導航。
- 移動版與桌面版 canonical 互相指错,蜘蛛在两套頁面之間来回。
- 缓存規則把桌面 HTML 返回给移動 UA,日誌里看不出異常,實际抓的是错版本。
蜘蛛池场景下要多看一层
入口頁的核心任務是把蜘蛛带到目标 URL 前面。如果移動版把出站連結压掉了,這個入口頁對蜘蛛来说價值就大打折扣。所以看入口頁的移動端适配,不能只看“能不能打開”,要看移動 UA 下頁面的連結结构是否還在。
日誌里怎么驗證
把抓取日誌按 UA 分组,分別看移動蜘蛛和桌面蜘蛛請求的响應碼、响應体积和請求路径。如果移動 UA 的請求大量返回 302,或者返回 200 但体积明顯偏小,通常說明移動版内容被替換掉了。這一步不用很复杂的工具,按 UA 前缀分個類就能看出来。
一份可执行的自查清單
- 用移動 UA 直接請求一次入口頁,看狀態碼和 HTML 里有没有連結。
- 如果是响應式,確認正文和連結在移動视口下没有被隐藏到初始 HTML 之外。
- 如果是獨立移動站,检查移動版與桌面版的互相指向是否正确。
- 如果是動態服務,检查缓存策略是否按 UA 区分,避免版本串号。
- 依赖 JS 渲染的入口頁,關键的出站連結尽量放在初始 HTML 里。
- 在日誌里按 UA 分组,核對狀態碼、响應体积和抓取路径是否對得上。
蜘蛛看到的那個頁面,才是你實际交给它的頁面,不是你浏览器里打開的那個。
不建议的做法
只對蜘蛛 UA 返回移動版内容、對真實用戶返回桌面版,或者反過来,属于典型的伪装行為。蜘蛛池的入口頁本来就不需要在這上面冒險,把两套版本做成一致的内容,成本並不高。
移動端适配本身不是什么高深配置,多數問题都出在“移動版變空”這一层。把移動 UA 下的狀態碼、連結和响應体积校准好,後面的跳轉和連結才有意义。