篩選、排序、分頁參數在电商站和内容站几乎無處不在。對用戶来说,点两下就能缩小范围;對蜘蛛来说,每一個參數组合都可能被当成一個新地址。如果不加约束,抓取時間會被大量相似頁面占走,真正需要更新的詳情頁反而排在後面。
參數 URL 為什么容易變成抓取黑洞
一個列表頁挂上品牌、價格区間、颜色、排序方式几個條件,组合數量很容易上千。這些頁面的标题和正文往往只有细微差別,甚至主体内容完全一致。蜘蛛是按連結發現地址的,只要内鏈里存在入口,它就會顺着走。抓取額度有限,被低價值地址填满,詳情頁的新内容就可能延迟被發現。
先给參數分三類
- 功能型參數:排序方式、每頁條數、會话跟踪(如 sid、from)。對用戶操作有用,對蜘蛛几乎没有價值。
- 结果型參數:篩選後形成的獨立需求頁,比如“某品牌 + 某價位”。确實有搜尋需求时,可以保留少量並让它們進入内鏈。
- 纯重复參數:大小寫不同、空值參數、參數顺序不一致造成的同一頁面。這類應当统一到單一地址形態。
處理顺序:内鏈、robots、canonical、Sitemap
内鏈只保留必要入口
蜘蛛主要靠連結發現地址,所以内鏈是最有效的一道闸。把篩選面板改成需要点击或由脚本触發才能生成連結的形式,預設列表頁就只會輸出一组干净地址。也可以在排序連結上加 nofollow,但要清楚它只是提示,不是禁止,長期依赖它並不稳妥。
robots 與 canonical 的分工
robots.txt 的 Disallow 只是阻止抓取,被拦下的地址不會因此获得整合信号;canonical 是頁面級的整合建议,但對根本不抓的 URL 無法生效。两者不能互相替代。對“不想抓、也不需要索引”的參數,用 Disallow;對“可以抓、但希望归並到主地址”的,用 canonical 更合适。
Sitemap 只放真正想被抓的頁面
Sitemap 里保留主列表頁和詳情頁即可,不要把參數變体一並塞進去。它给出的是一份明确的候選清單,混入大量低價值地址只會稀释它的作用。
用日誌驗證是否有效
- 取一段時間的蜘蛛請求,按路径和參數归類,看參數化地址占全部抓取請求的比例。
- 观察這些請求是否集中在少數模板上,如果分散在几十種组合里,說明内鏈還没收住。
- 對比詳情頁從發布到首次被抓的間隔有没有缩短。
- 检查是否存在“參數頁反复抓、詳情頁長期不動”的偏移。
服務器侧同样是前提
參數頁多是動態渲染,資料库查询更重。如果這些地址响應慢或频繁返回 5xx,蜘蛛的重试會進一步挤占抓取額度,前面做的收口也會被打折扣。给參數頁加缓存、限制過深的组合层級,比事後清理日誌更省事。
抓取路径是可以设計的:想让蜘蛛走到哪里,就先從首頁出發數一數,有多少條連結能指向那里。
參數治理不是一次性動作。每上线一個新篩選功能,就會带来一批新地址。把“上线前检查内鏈與參數形態”寫進發布流程,比事後翻日誌补救轻松得多。