很多站点的抓取問题不是出在首頁或栏目頁,而是出在篩選、排序、分頁這些带參數的連結上。运营一上线篩選功能,蜘蛛很快就能顺着這些連結發現几十上百個變体地址,抓取日誌里的 URL 數量在几天内翻倍。這些地址大多内容相近,却各自占用一次抓取机會。
參數 URL 是怎么被蜘蛛看到的
常见入口有三類。一是頁面上的篩選連結本身就是可点击的 a 标簽,蜘蛛顺着 DOM 就能拿到;二是站点地图或分頁聚合頁里列出了带參數的地址;三是内容由脚本渲染,脚本請求接口後生成連結,蜘蛛在渲染阶段同样可能拿到。三類入口叠加,參數 URL 的發現速度往往比新文章還快。
组合爆炸:几條參數就能撑出上千個地址
假设一個列表頁有 5 個篩選項、3 種排序、每頁 20 條共 30 頁,理论上可以拼出 5×3×30 的地址组合。實际數量往往更多,因為參數顺序不同又被当成不同 URL。蜘蛛會把這些地址一個一個放進待抓队列,站点的抓取资源被大量消耗在内容几乎一样的頁面上,真正需要更新的詳情頁反而排在後面。
蜘蛛對這類地址的常见反應
- 首次抓取大多返回 200,内容與主列表高度相似;
- 重复抓取多次後,部分地址會被降低抓取频次;
- 如果參數地址返回空结果頁,容易被当成低质頁面;
- 如果篩選頁触發大量資料库查询,响應變慢,抓取超时會增多。
比較稳妥的處理方式
- 固定一個規范版本。只让一组參數组合可以被抓取,其余组合用 rel=canonical 指回主列表,或在服務端统一重定向。
- 控制可抓取的维度。把篩選维度分成有搜尋需求和纯浏览两類,只放行前者,後者用 robots.txt 或頁面級 noindex 收住。
- 排序參數不參與抓取。排序通常對用戶有用,對蜘蛛意义不大,可以在連結上加 nofollow,或让排序地址指向不带排序參數的規范地址。
- Sitemap 只放規范 URL。不要把带參數的地址寫進站点地图,否則等于主動给蜘蛛指路。
- 分頁保持可抓取,但限制深度。前几頁放行,後面的分頁用“查看更多”或按需加载,避免無限翻頁。
顺带影响:抓取压力會传導到服務器
參數頁通常不走缓存,每次請求都要查一次資料库或做一次聚合計算。当蜘蛛在短時間内集中抓取這類地址,服務器负载上升,正常用戶的訪問速度也會受影响。把參數地址收敛掉,既省抓取预算,也减轻服務器在抓取高峰期的压力。
怎么驗證處理有没有效果
處理之後,重点看抓取日誌里參數 URL 的占比是否下降、狀態碼分布是否更集中、詳情頁的抓取次數是否回升。如果日誌里參數地址仍然很多,需要回头检查内鏈、站点地图和脚本渲染三條路径,找出還在持續輸出這些連結的位置。
參數 URL 不是不能存在,而是要有邊界。把有限的抓取机會留给真正有内容差异的地址,是站点运营里成本較低、见效相對可控的一步。