做蜘蛛池入口頁时,不少人會给移動端和桌面端分別放一套連結:桌面端指向普通版目标頁,移動端指向 m 版目标頁,或者干脆只在桌面端放連結。等看日誌时發現搜尋蜘蛛来得不少,但目标 URL 的抓取记錄總對不上,就會怀疑是不是“抓错版本”了。這個問题本质上属于移動端适配的范畴,和蜘蛛池本身的机制關系不大。
先分清入口頁的三種做法
入口頁区分终端,常见有三種實現方式,搜尋蜘蛛的處理逻辑並不一样。
- 响應式同一 URL:桌面和移動訪問同一個地址,HTML 基本一致,只有样式不同。這種情况下不存在“抓哪個版本”的問题。
- 獨立移動域名:例如 m.example.com 與 www.example.com 两套地址,内容结构接近,但連結並不完全相同。
- 同一 URL 動態返回不同 HTML:根據 UA 或屏幕宽度判断,移動端返回带 m 版連結的 HTML,桌面端返回另一套。
搜尋蜘蛛實际會看什么
與其猜它“應该”抓哪一版,不如看它實际請求了什么。判断依據主要来自服務器日誌和入口頁返回的 HTML 本身,而不是我們的预期。
獨立移動域名的情况
多數搜尋引擎以移動端為主索引,也就是主要用移動端 UA 抓取並评估頁面。如果入口頁在移動端 UA 下返回的 HTML 里没有目标連結,只在桌面端 HTML 里才有,那這條連結被發現的概率會明顯下降。反過来,只给移動端放連結、桌面端不放,通常問题不大。
桌面端連結為什么更容易被漏
在移動端優先的前提下,桌面端 UA 的抓取频率往往會被压低。桌面入口頁即使放了目标連結,被發現和跟進的速度也可能比移動端慢,在抓取配額有限时更明顯。所以两版連結不一致时,優先保證移動端那一版是完整的。
同一 URL 返回两套 HTML
這種做法風險更高。搜尋蜘蛛拿到的 HTML 取决于你判断 UA 的規則,一旦匹配逻辑寫错,比如把某些移動 UA 判成桌面,它拿到的就是你意料之外的那一版,連結偏多、偏少甚至為空都可能出現。而且不同搜尋引擎的 UA 字符串並不一致,很难保證每一條都命中。
怎么核對自己的入口頁
- 用移動端 UA 和桌面端 UA 分別請求入口頁的同一個地址,各儲存一份返回的 HTML。
- 對比两份 HTML 里目标連結的數量和位置是否一致,重点看正文区域有没有連結。
- 检查是否存在依赖 JS 才出現的連結,服務端返回的源碼里是否已经包含。
- 對照服務器日誌,看搜尋蜘蛛實际带的哪類 UA、請求的是哪個地址、返回狀態碼是多少。
- 把日誌里蜘蛛抓到的 URL 和目标連結清單逐條對一遍,找出從未出現過的那些。
實践中的几條建议
- 入口頁尽量用响應式或同一套 HTML,两端都放上目标連結,省去判断成本。
- 不要靠 UA 判断“只给搜尋引擎看”某一版,返回内容差异過大容易被当作異常處理。
- 如果用獨立移動域名,两套入口頁都要能獨立訪問、狀態碼正常、連結可点。
- 移動端 HTML 里的連結尽量用普通 a 标簽,避免必须点击或滚動後才加载出来。
- 核對以日誌為准,第三方工具和主观猜测只能作為參考。
搜尋蜘蛛並不“挑版本”,它只是按自己請求到的地址和 UA 拿返回内容。入口頁两端内容一致、連結都寫在服務端 HTML 里,這個問题基本不會出現;真正需要排查的,往往是 UA 判断規則和日誌對不上。