蜘蛛池知识

蜘蛛池入口頁的URL參數與重复内容:一個頁面被蜘蛛当成好几個之後

蜘蛛池入口頁常常能以多條地址打開:跟踪參數、排序篩選、大小寫與结尾斜杠差异,都可能让蜘蛛把同一頁当成几個頁面。本文梳理重复地址的常见来源、對抓取预算與統計口径的影响,以及從生成端统一、canonical 兜底到日誌复核的處理思路。

蜘蛛池知识

蜘蛛池入口頁的URL參數與重复内容:一個頁面被蜘蛛当成好几個之後

在蜘蛛池里,同一個入口頁常常能以好几種地址打開。带来源參數的、带排序參數的、结尾多一個斜杠的、大小寫不同的,返回的内容几乎一样。對訪客来说無所谓,對搜尋蜘蛛来说却是好几個地址,而它們指向的是同一份内容。

同一頁為什么會裂成多個地址

大多數情况下不是有人刻意做的,而是程序預設行為叠加出来的结果。連結在传递過程中被自動加參數,模板里對地址的處理不统一,歷史改版留下的舊路径仍然可達,都會让一個頁面出現多條 URL。

跟踪參數與来源标记

utm_source、from、ref、spm 這類參數只记錄来源,不影响頁面輸出。但它們改變了 URL 字符串,蜘蛛按字符串区分地址,于是同一頁被当成多個頁面分別抓取。

排序、篩選與分頁

列表頁的排序方式、篩選條件、分頁頁碼都属于這一類。如果每個组合都生成一條可訪問地址,入口頁很容易膨胀出成百上千條近似 URL,而這些頁面之間的内容差异可能只有几行。

形態上的细节差异

  • 大小寫不同:/Page 與 /page 在部分服務器上都能打開
  • 结尾斜杠:/a 與 /a/ 被当作两條地址
  • 預設文件:/a 與 /a/index.html 同时可達
  • 协议與主机名:http 與 https、带 www 與不带 www 並存
  • 參數顺序:?a=1&b=2 與 ?b=2&a=1 是两個不同的字符串
  • URL 编碼差异:中文路径被编碼成不同形式

對蜘蛛池运营的實际影响

  • 抓取预算被分摊:同一份内容占用多條地址的抓取額度,真正需要被發現的頁面分到的次數變少。
  • 發現信号被稀释:外鏈、主動提交、内鏈指向不同形態,抓取提示难以集中到一條地址上。
  • 統計口径失真:日誌里的抓取量看起来很高,去重之後可能只剩一半,容易誤判入口頁的實际表現。
  • 淘汰判断失准:替換舊资源时若按未归一的 URL 統計,可能把同一頁的不同形態当成两個资源分別處理。

處理思路

從生成端统一

入口頁輸出的連結、sitemap 里的地址、提交时使用的地址,尽量保持同一種形態:统一小寫、统一结尾斜杠策略、不带多余參數。内部連結不要随手拼接来源标记。

用 canonical 與 robots 兜底

對确實需要保留的带參地址,可以在頁面里用 canonical 指向規范地址,减少蜘蛛在多個形態之間做選擇。對完全無内容價值的參數组合,可以用 robots.txt 屏蔽抓取,但要注意屏蔽之後蜘蛛也無法通過该地址發現規范頁。

  1. 先跑一遍日誌,把訪問過的 URL 做归一化,看去重前後差多少
  2. 列出差异最大的參數類型,判断哪些是必要的、哪些是噪音
  3. 在生成端收敛地址形態,再补上 canonical
  4. 观察一到两周,看規范地址在抓取中的占比是否上升
canonical 是提示而不是命令,蜘蛛有自己的判断逻辑,處理之後仍需以實际抓取與收錄情况為准。

复核方式

归一化後的抓取統計、被收錄地址的形態抽查、新入口頁上线时提交的地址是否唯一,這三項结合起来看,比單看總抓取量更能說明問题。地址越干净,後面判断资源好坏时越不容易被干扰。