站内很多 URL 並不是編輯手工寫出来的,而是篩選器、排序選項、分頁按钮和推廣連結自動生成的。它們對用戶有用,對蜘蛛却意味着成倍的抓取入口。搞清楚這些 URL 是怎么被發現的,才能判断抓取资源到底花在了哪里。
參數化 URL 的几種常见来源
- 篩選與分面:颜色、價格区間、地区、品牌,每勾一項就生成一個新的组合地址。
- 排序:按销量、按價格、按上架時間,同一批内容出現多份地址。
- 分頁與视图:page=2、view=list 這類參數,既影响發現新 URL,也影响重复判断。
- 追踪參數:utm_source、from、ref 等推廣标记,常被外部轉载带走。
- 會话残留:部分系統會把用戶上一轮的選擇带進下一個 URL,形成意料之外的组合。
蜘蛛對參數的基本處理逻辑
早期搜尋引擎對带參數的地址比較保守,往往直接忽略。現在多數蜘蛛會抓一部分,但通常會做去重判断,同一组内容尽量只保留一個代表 URL。問题在于,判断本身要花成本,抓取也要占预算。參數 URL 越多,越容易挤占真正需要抓的詳情頁。
什么样的组合容易被大量抓
如果篩選结果之間内容差异明顯,蜘蛛更可能把它們当成獨立頁面處理。反之,只是顺序不同、内容基本一致的排列组合,通常被抓几次後就會被归並。這個邊界並不固定,會随站点權重、更新频率和服務器响應情况變化。
抓取扩散通常沿三條路径發生
- 列表頁上的篩選連結:一頁里几十個篩選入口,每個都指向新地址,蜘蛛顺着点下去就會展開。
- 詳情頁里的相關推荐:带着參數回跳,和列表頁互相指向,形成循环。
- 外部連結:推廣連結带追踪參數被轉载,蜘蛛從站外進来,绕過了站内的收敛規則。
收口的几個動作
- 對纯排序、纯追踪參數,在服務器端或前端统一去掉,让用戶和蜘蛛看到同一個干净地址。
- 需要保留的篩選组合,限制可抓范围,例如只放開一到两個维度,其余组合不生成可点連結。
- 用 canonical 指向無參數版本,但要清楚它只是提示,不是强制指令,長期不一致反而容易让蜘蛛反复確認。
- robots.txt 可以屏蔽無意义的參數路径,前提是確認這些 URL 不會成為某些内容的唯一入口。
- 分頁尽量保留可抓,別把 page=2 一起封掉,那會切断深层内容的發現路径。
服務器层面的观察
想確認扩散有没有發生,最直接的办法是看日誌:統計带參數 URL 的抓取占比、狀態碼分布,以及這些請求是否集中在某些時間段。如果參數 URL 的 5xx 或超时比例明顯高于普通頁面,說明它正在拖慢整体节奏,值得優先處理。反過来,如果參數頁响應很快、内容也有差异,就不必急着全部封掉。
參數本身不是問题,問题是同一份内容被蜘蛛用很多個地址反复確認,而真正更新的頁面還在排队。
一個折中思路
與其一刀切封掉所有參數,不如按「這個參數是否指向不同内容」来分類。指向不同内容的,给它稳定地址和明确的内鏈入口;只改變展示顺序的,收敛掉;纯粹是渠道标记的,從站内連結里去掉,只保留在對外投放中。分類做完之後再观察一段日誌,看抓取分布有没有向詳情頁倾斜,比一次性大改更稳妥。