不少人搭蜘蛛池时只测桌面端:用浏览器打開入口頁一切正常,日誌里也能看到蜘蛛来訪。但如果站点在移動端的表現不一样,移動蜘蛛看到的可能是另一個頁面,甚至根本抓不到連結。移動優先索引推行多年,入口頁的移動端表現直接决定 URL 能不能被發現。
移動優先索引下,蜘蛛抓的是哪個版本
主流搜尋引擎現在基本以移動端 UA 抓取為主,桌面端 UA 抓到的内容只作參考。也就是说,入口頁的移動版本才是被索引、被解析連結的主版本。如果移動端被简化成“标题 + 一張图 + 一個按钮”,桌面端那几十條連結等于白放。
要区分两件事:一是移動蜘蛛能不能打開頁面,二是打開後能不能看到同样的連結。前者是可達性,後者才是 URL 發現的關键。
三種常见适配方式,各有代價
响應式设計
同一個 URL、同一份 HTML,靠 CSS 适配屏幕。對蜘蛛池来说這是最省事的做法:不用维護两套頁面,不會出現 UA 判断失誤導致内容不一致,也少了 m 域名的額外解析成本。只要別在窄屏下用 CSS 把連結模块 display:none 掉就行——渲染後不可见的連結,很可能不被当作有效連結處理。
獨立 m 域名
比如 m.example.com。這種方式要同时管好 robots、canonical 和跳轉關系:m 站的 robots 不能把蜘蛛整体挡住,canonical 要指向明确的對應關系,桌面到移動的跳轉別用 JS 判断 UA 後延迟执行。任何一個环节寫错,结果都是桌面蜘蛛正常、移動蜘蛛空手而归。
按 UA 返回不同 HTML
服務端按 UA 輸出不同内容,理论上可行,但風險最高:UA 库不全、缓存把桌面版吐给移動蜘蛛、CDN 缓存串版本,都會造成“你看到的頁面”和“蜘蛛看到的頁面”不一致。如果非要用,務必在日誌里按 UA 分類核對返回的 HTML 長度和連結數量。
容易被忽略的几個坑
- viewport 缺失:没有 viewport 声明时,移動端可能按 980px 宽度渲染再缩放,布局错位,部分連結被压到屏幕外。
- 移動端加载的 JS 過多:入口頁連結由 JS 异步插入,移動环境網絡慢、超时早,渲染队列里的連結可能来不及执行。
- 移動端單獨屏蔽:為了省流量,在 nginx 或 WAF 里對移動 UA 做了限制,结果把移動蜘蛛一起拦了。
- 内容不一致:移動版只留主關鍵詞和广告位,連結区被折叠進“展開更多”,折叠内容是否纳入解析各家做法不同,別去赌。
- 资源阻塞:大图、外部字体、第三方統計脚本卡住首屏,而蜘蛛的渲染等待時間有限。
自查可以按這几步走
- 用移動 UA 請求入口頁,對比返回的 HTML 與桌面版是否存在連結數量差异。
- 在抓取日誌里分別統計移動與桌面 UA 的訪問量、狀態碼和抓取深度,看移動端是否明顯偏少。
- 检查移動端渲染後的 DOM,確認目标連結确實出現在最终结构里。
- 核對 m 域名(如果有)的 robots、canonical 與跳轉鏈路是否自洽。
入口頁的價值是“被看到並跟下去”,移動端看不到連結,等于入口没開。
一点使用建议
如果目标是稳定地做 URL 發現,入口頁優先用响應式,一套 HTML 走天下,减少變量,測試和日誌都按移動 UA 為准。別為了省带宽或做所谓移動体驗,把連結结构拆成两套逻辑——维護成本和排错难度都會翻倍。這些基础做扎實,移動端不會拖累蜘蛛池,反而能让 URL 被發現得更稳定。