搜尋抓取

篩選、排序與追踪參數:蜘蛛在參數化 URL 上會走多遠

站内篩選、排序、分頁和推廣連結會自動生成大量带參數的 URL,它們對用戶有用,却可能让蜘蛛把抓取预算花在重复内容上。本文梳理參數化 URL 的常见来源、蜘蛛的判断逻辑、抓取扩散的三條路径,以及從連結收敛、canonical 到日誌观察的收口办法。

搜尋抓取

篩選、排序與追踪參數:蜘蛛在參數化 URL 上會走多遠

站内很多 URL 並不是編輯手工寫出来的,而是篩選器、排序選項、分頁按钮和推廣連結自動生成的。它們對用戶有用,對蜘蛛却意味着成倍的抓取入口。搞清楚這些 URL 是怎么被發現的,才能判断抓取资源到底花在了哪里。

參數化 URL 的几種常见来源

  • 篩選與分面:颜色、價格区間、地区、品牌,每勾一項就生成一個新的组合地址。
  • 排序:按销量、按價格、按上架時間,同一批内容出現多份地址。
  • 分頁與视图:page=2、view=list 這類參數,既影响發現新 URL,也影响重复判断。
  • 追踪參數:utm_source、from、ref 等推廣标记,常被外部轉载带走。
  • 會话残留:部分系統會把用戶上一轮的選擇带進下一個 URL,形成意料之外的组合。

蜘蛛對參數的基本處理逻辑

早期搜尋引擎對带參數的地址比較保守,往往直接忽略。現在多數蜘蛛會抓一部分,但通常會做去重判断,同一组内容尽量只保留一個代表 URL。問题在于,判断本身要花成本,抓取也要占预算。參數 URL 越多,越容易挤占真正需要抓的詳情頁。

什么样的组合容易被大量抓

如果篩選结果之間内容差异明顯,蜘蛛更可能把它們当成獨立頁面處理。反之,只是顺序不同、内容基本一致的排列组合,通常被抓几次後就會被归並。這個邊界並不固定,會随站点權重、更新频率和服務器响應情况變化。

抓取扩散通常沿三條路径發生

  1. 列表頁上的篩選連結:一頁里几十個篩選入口,每個都指向新地址,蜘蛛顺着点下去就會展開。
  2. 詳情頁里的相關推荐:带着參數回跳,和列表頁互相指向,形成循环。
  3. 外部連結:推廣連結带追踪參數被轉载,蜘蛛從站外進来,绕過了站内的收敛規則。

收口的几個動作

  • 對纯排序、纯追踪參數,在服務器端或前端统一去掉,让用戶和蜘蛛看到同一個干净地址。
  • 需要保留的篩選组合,限制可抓范围,例如只放開一到两個维度,其余组合不生成可点連結。
  • 用 canonical 指向無參數版本,但要清楚它只是提示,不是强制指令,長期不一致反而容易让蜘蛛反复確認。
  • robots.txt 可以屏蔽無意义的參數路径,前提是確認這些 URL 不會成為某些内容的唯一入口。
  • 分頁尽量保留可抓,別把 page=2 一起封掉,那會切断深层内容的發現路径。

服務器层面的观察

想確認扩散有没有發生,最直接的办法是看日誌:統計带參數 URL 的抓取占比、狀態碼分布,以及這些請求是否集中在某些時間段。如果參數 URL 的 5xx 或超时比例明顯高于普通頁面,說明它正在拖慢整体节奏,值得優先處理。反過来,如果參數頁响應很快、内容也有差异,就不必急着全部封掉。

參數本身不是問题,問题是同一份内容被蜘蛛用很多個地址反复確認,而真正更新的頁面還在排队。

一個折中思路

與其一刀切封掉所有參數,不如按「這個參數是否指向不同内容」来分類。指向不同内容的,给它稳定地址和明确的内鏈入口;只改變展示顺序的,收敛掉;纯粹是渠道标记的,從站内連結里去掉,只保留在對外投放中。分類做完之後再观察一段日誌,看抓取分布有没有向詳情頁倾斜,比一次性大改更稳妥。