列表頁往往是站点里最容易長出大量地址的地方。一個商品列表或文章列表,加上分頁、排序、篩選、每頁條數、會话追踪這些參數,能组合出的 URL 數量遠遠超過站内實际内容量。蜘蛛進来以後,如果把這些组合都当成獨立頁面抓一遍,抓取预算就被消耗在内容高度重复的頁面上,真正需要更新的詳情頁反而排不上队。
參數是怎么把地址數量放大的
假设一個列表有五種排序方式、十個篩選條件、三種每頁條數,再乘以若干頁分頁,组合數量已经相当可观。這些地址不需要人為制造,只要頁面上的篩選入口是普通連結,蜘蛛就會顺着一路爬下去。
更麻烦的是,其中很多參數對頁面内容没有實质影响。排序方式變化後只是顺序變了,内容集合一样;會话 ID、追踪參數則是每個訪客各不相同,同一個頁面能产生無數個地址。這些地址既没有獨立價值,又容易被抓取。
先盘点,再决定怎么處理
- 從近一個月的服務器日誌或抓取統計里,看被訪問最多的 URL 中有多少带問号,占比是多少;
- 把參數名列出来,按「影响内容」和「不影响内容」分成两類;
- 逐個判断這些參數頁有没有獨立價值,比如「某品牌手机」篩選頁可能有人搜尋,但「按價格降序」基本没有;
- 確認這些地址目前有没有被收錄,收錄之後是否带来過訪問。
盘点這一步不要省。不看清現状就直接加屏蔽規則,很容易把有價值的篩選頁一起誤伤。
几類參數的常见處理方式
分頁
分頁是内容的递進關系,通常保留可抓取,但要保證每一頁都能通過連結到達,不要只靠滚動加载,否則深层分頁蜘蛛可能拿不到。至于規范地址怎么指向,要看分頁内容是否獨立:很多站点選擇让每一頁自指,避免後續頁面被合並掉,具体做法需要结合自己的内容形態判断,不必照搬別人的方案。
篩選與排序
對内容有實质影响的篩選,比如品類、價格区間、規格,可以考虑保留下来,给頁面配上能说清主题的标题和一段简短說明,让它成為真正有價值的落地頁。纯排序、纯视图切換這類入口,一般不需要产生可爬連結,可以改成按钮加异步請求,或者在連結层面直接去掉參數。
如果一定要保留地址,再考虑用 robots.txt 屏蔽或加 noindex。這里有個常见誤区:robots.txt 屏蔽並不等于不抓取,被屏蔽的地址仍可能出現在结果里,只是缺少描述。如果這些頁面本来就不该出現在结果中,用 noindex 更直接。
會话與追踪參數
utm、gclid、會话 ID 這類參數,最好在服務端或 CDN 层统一處理,比如跳轉到干净地址,或者用規范标簽指向不带參數的版本。不要指望每一個入口、每一個运营同事都记得手寫規范地址,靠流程约束很难長期稳定。
動手时的顺序
- 先確認問题規模:带參數地址占抓取量的比例,其中有多少已被收錄;
- 影响内容、又确實有人搜尋的參數组合,保留並整理成稳定的可索引地址;
- 不影响内容的參數,優先在連結生成层面去掉,至少不在站内輸出可爬連結;
- 歷史已被收錄的重复地址,用跳轉或 noindex 慢慢收敛,不要指望一次清空;
- 改動上线两到三周後,再回看日誌,確認抓取分布有没有朝预期的方向變化。
屏蔽類規則上线前,先用測試工具或一小段日誌驗證,避免把正常頁面一起挡住。參數處理通常牵涉模板,改動前最好在測試环境把連結生成逻辑跑一遍。
別忘了站内搜尋
站内搜尋结果頁是另一類參數大戶。建议把搜尋结果頁设為 noindex,並且不要在頁面上輸出大量可爬連結,否則蜘蛛會沿着不同搜尋词一路爬下去,越爬越遠。
參數治理不是做一次就結束的事。新上线的栏目、新換的篩選组件,都可能重新把問题带回来。把它寫進改版检查清單,比事後從日誌里慢慢排查要省力得多。