蜘蛛池知识

蜘蛛池入口頁的移動端适配:响應式、m 站與 UA 判断怎么選

移動端爬虫的活跃度常常不低于桌面端,入口頁在手机 UA 下的表現會直接影响連結能否被發現。本文對比响應式、獨立 m 站和 UA 判断三種做法,梳理 UA 分支、CDN 缓存、連結一致性上的常见坑,並给出一份上线前的自检清單。

蜘蛛池知识

蜘蛛池入口頁的移動端适配:响應式、m 站與 UA 判断怎么選

蜘蛛池的入口頁,绝大多數人預設是做给电脑端看的。但搜尋引擎的抓取早就不只有 PC 一種 UA,移動端爬虫在不少站点上的活跃度已经和桌面端持平甚至更高。如果入口頁在手机 UA 下返回一塌糊涂的版面,或者被跳到另一個内容完全不同的頁面,抓取行為就會變得难以预期。

這里不讨论排名,只讨论一件事:入口頁的移動端形態,會不會影响蜘蛛顺利發現並跟随連結。

一、三種常见做法,先分清

响應式布局(同一 URL)

同一套 URL、同一份 HTML,靠 CSS 适配不同宽度。對蜘蛛来说最省事:一個 URL 只有一個訪問结果,不存在两套頁面内容對不上的問题,連結也能被稳定發現。批量開入口頁时,這是维護成本最低的做法。

獨立 m 站(两套 URL)

m.example.com 這類做法會多出一整套 URL 体系。要注意的是,PC 頁和 m 頁之間需要有明确的相互指向,否則蜘蛛容易在两邊各抓一半,連結發現變得零散,入口頁本来该起的作用也會被稀释。

按 UA 返回不同内容

按 User-Agent 判断再决定返回什么。這種做法用得好是兼容老站,用得不好就是入口頁上的定时炸彈——判断逻辑寫错、缓存层配错,蜘蛛拿到的可能就是空白頁或者模板报错頁。

二、UA 判断最容易踩的三個坑

  • 只認完整字符串:把 Googlebot、Bingbot 之類的關鍵詞寫成完整匹配,UA 里版本号一變就全部失效,蜘蛛直接落到預設分支。
  • 預設分支是空的:很多實現里 else 分支返回一個没有連結、没有正文的壳。普通訪客看不到問题,蜘蛛看到的却是一條死路。
  • 缓存层不看 UA:CDN 把带 UA 判断的頁面缓存成一份,先訪問的是谁,後面所有人(包括蜘蛛)就都拿到那一份。這個問题在批量入口頁上尤其常见。

三、两套模板的連結要對齐

入口頁的核心價值是让蜘蛛顺着連結走過去。如果 PC 版頁面里有二十條連結,手机版只剩五條,那么用移動 UA 抓取的蜘蛛能發現的 URL 自然就少了。批量做入口頁时,尽量保證两套模板輸出的連結集合一致,至少要让導向目标頁的那几條連結在所有版本里都存在。

四、上线前的自检清單

  • 用移動 UA 和桌面 UA 各抓一次入口頁,對比狀態碼、标题、正文長度、連結數量。
  • 關掉 JS 再抓一次,確認主要連結是寫在 HTML 里的,不是靠脚本後置插入。
  • 检查 CDN 缓存規則,確認不會把某個 UA 的结果缓存给其他 UA。
  • 检查移動版是否存在獨立的 robots.txt 或 meta robots 設定,避免誤封。
  • 確認跳轉鏈路在移動 UA 下同样成立,不會中途断掉。

五、两個方向的誤区

一種誤解是“蜘蛛只看 PC 版”,于是移動端随便應付;另一種反向誤解是“必须专门為蜘蛛准备一套移動頁面”,于是滑向按 UA 返回不同内容的做法。前者會让你忽略移動抓取,後者的風險則在于两套内容一旦對不上,入口頁的可信度就會受影响。更稳妥的思路是:让同一個 URL 對不同设备都能正常渲染,蜘蛛拿到的和其他訪客拿到的是同一份東西。

小结

移動端适配在蜘蛛池里算不上什么高深话题,它属于“別自己给自己添堵”的基础工作。把两套模板的連結對齐、把缓存和 UA 分支寫對、上线前用不同 UA 各抓一遍,這些動作花不了多少時間,但能避免蜘蛛走到一半發現前面是堵墙。