不少站点在日誌里都會看到同一個現象:真正有流量的列表頁只有几十條,但蜘蛛每天請求的地址里,带着颜色、尺碼、排序、每頁條數的參數 URL 却有上萬條。它們不是被谁主動提交的,而是蜘蛛自己一步步组合出来的。
URL 空間是乘积,不是加法
一個列表頁有 5 個篩選項,每項有 10 個取值,如果任意组合都生成獨立地址,理论數量就是 10 的 5 次方。再加上排序方式、每頁條數、分頁序号,數字還會繼續翻。蜘蛛並不理解“這個组合没人搜”,它只看到頁面上有一组連結,每條連結都指向一個能正常返回内容的地址。
更麻烦的是這類頁面通常互相連結。A 组合頁挂着 B、C、D 的篩選入口,B 頁面上又挂着 A、C、D。于是蜘蛛在里面来回走,抓取队列被大量低價值地址占满,新頁面反而排到了後面。
蜘蛛是從哪里讀到這些组合的
- 篩選区的連結:最常见的入口,尤其是用 a 标簽渲染的篩選按钮。
- 排序與视图切換:按價格、按销量、按上架時間、按列表或網格。
- 分頁連結:组合頁自身還有分頁,相当于再乘一层。
- 站内搜尋與 Sitemap:如果搜尋结果頁可被抓取,等于把组合直接递到蜘蛛面前。
- 外部連結與用戶分享:带參數的地址被分享出去,也會成為新的线索。
代價不只是多抓几頁
抓取预算被摊薄之後,重要頁面和新頁面的發現速度會變慢。同时,几十個參數不同的頁面展示的往往是同一批内容,正文高度相似,容易形成重复内容。若這些頁面被大量收錄,搜尋结果里會出現多個近似入口,用戶点進去後的体驗也不稳定。
判断标准很简單:翻抓取日誌,看參數 URL 占總請求量的比例,再看這部分带来了多少自然流量。占比很高而贡献很低,就說明该收敛了。
怎么把抓取范围收回来
先定白名單,再谈屏蔽
不要一上来就全站屏蔽參數,那會把有價值的篩選组合一起挡掉。先列出真正需要展示的组合,比如“品類加品牌”“品類加規格”這類有搜尋需求的维度,剩下的排序、每頁條數和無意义的多维交叉,才是收敛對象。
可以用的几種手段
- robots.txt 屏蔽:阻止抓取,但地址若已被別處連結,蜘蛛仍會知道它存在,只是不再請求。适合确定不需要抓的组合。
- canonical 归並:让排序、视图類參數頁指向不带參數的主列表頁,减少重复内容信号。
- 内鏈收敛:頁面上只保留必要维度的連結,排序和视图切換尽量不产生可抓連結,或只保留少量預設選項。
- 站内搜尋结果頁:通常應屏蔽抓取並加上 noindex,避免被無限组合牵着走。
- Sitemap 只放規范地址:寫入确定要展示的列表頁,不要放带排序、带會话參數的地址。
- 分頁處理:明确分頁序列的規范頁,避免组合頁的分頁再生成一层新地址。
做完之後怎么驗證
观察两到四周的抓取日誌:參數 URL 的請求量是否下降,重点頁面的抓取频率是否回升,新頁面首次被抓的時間有没有缩短,同时看看收錄數量是否在向合理区間回落。這些指标比“今天抓了多少條”更有參考價值。
收敛的本质不是把蜘蛛赶走,而是把有限的机會留给真正值得展示的頁面。地址越可控,抓取越集中,站点运营里的很多問题會跟着變简單。