常见問题

蜘蛛池入口頁對手机和电脑返回不同連結,搜尋蜘蛛最终會看哪一版

有些入口頁會按 User-Agent 给手机和电脑返回不同的連結,但搜尋蜘蛛本身就有桌面和移動两套抓取身份。移動優先索引下最终采用哪一版,直接决定目标 URL 有没有被真正發現。本文讲清判断逻辑、常见坑和自查方法。

常见問题

蜘蛛池入口頁對手机和电脑返回不同連結,搜尋蜘蛛最终會看哪一版

有些站長會在入口頁上做一层判断:訪問者是手机就輸出一批連結,是电脑就輸出另一批。做這個動作的初衷通常是让頁面在不同设备上都顯得自然,但搜尋蜘蛛来抓的时候,它到底算手机還是电脑,會直接决定它看到哪一版。

搜尋蜘蛛本身就有两套抓取身份

主流搜尋引擎的抓取端通常不止一個:一類是桌面抓取,UA 里會带 Desktop 之類的标识;另一類是移動抓取,UA 里带 Mobile 字样。也就是说,你寫的那條 if 判断,在搜尋蜘蛛身上並不是恒定成立的——它會從两個入口分別進来,拿到两份可能完全不同的 HTML。

如果分流逻辑只是简單地判断“含 Mobile 就吐移動版,否則吐桌面版”,那么這两次抓取的结果會不一致。後果是:你以為連結已经發出去了,實际只發给了其中一半的抓取端。

移動優先索引下,預設參考的是移動版

現在多數搜尋引擎以移動端渲染结果為索引基准。這意味着即使桌面抓取拿到了完整連結,而移動抓取拿到的是残缺版本,最终參與索引的往往還是移動那一版。所以如果把主要連結只放在桌面版本里,實际效果可能和没放差不多。

最省事的驗證方法:用移動 UA 請求一次入口頁,看返回的 HTML 里有没有你要暴露的目标 URL。没有,就等于没做。

两版差异太大时,麻烦會更多

  • 两版的連結數量、锚文本、目标 URL 完全不同,等于给同一個頁面提供了两套互相矛盾的信号;
  • 其中一版正文几乎是空的,容易被判為低质量頁面,抓取频率随之下降;
  • 差异越大,越接近“對爬虫和用戶返回不同内容”這個定义。

什么时候會踩到 cloaking 的线

按 UA 分流本身不算违規,問题在于分流的目的是什么。如果给搜尋蜘蛛一版、给真實用戶另一版,比如给爬虫看干净頁面、给用戶彈跳轉或广告,這就是典型的 cloaking。一旦被识別,影响往往不只這一頁,可能连带同 IP、同域名下的其他頁面一起被降權或减少抓取。

相對安全的邊界是:不同版本的内容主体保持一致,只在排版、加载方式上有差异。做不到一致,就不要按 UA 分流。

更稳妥的几種做法

  1. 入口頁輸出统一 HTML,連結直接寫在服務端渲染的正文里,不依赖 UA、不依赖 JavaScript;
  2. 确實需要响應式时,用 CSS 控制顯示與隐藏,而不是准备两套 HTML;
  3. 如果一定要按设备分流,让两版里的目标 URL 集合完全一致,只改展示形式;
  4. 分流規則里给已知的搜尋引擎 UA 加白名單,让它們统一走同一個分支,避免被抓取端被誤判成普通移動用戶。

上线前後的自查清單

  • 用桌面 UA 和移動 UA 各請求一次,diff 两份 HTML,看差在哪里;
  • 確認返回内容里目标 URL 是否都存在,锚文本是否可讀;
  • 如果中間有 CDN 或缓存,检查是否設定了 Vary: User-Agent,否則缓存的可能是另一版;
  • 翻日誌,看移動抓取 UA 的請求量和返回狀態碼,是否出現大量非 200。

说到底,搜尋蜘蛛不是“一個訪客”,按 UA 分流相当于同时對着两個訪客说话。要么两邊说同样的话,要么就別分——這比事後去猜它看了哪一版要省力得多。