搜索抓取

筛选参数被蜘蛛穷举:站内组合页越抓越多的原因与收敛办法

筛选、排序、分页参数一旦可以任意组合,URL 空间就会成倍膨胀,蜘蛛会顺着这些链接一路抓下去。文章讲清楚组合页是怎么被发现的、对抓取预算和索引的影响,以及用 robots、canonical、内链收敛与 Sitemap 把它们收回来的具体做法。

搜索抓取

筛选参数被蜘蛛穷举:站内组合页越抓越多的原因与收敛办法

不少站点在日志里都会看到同一个现象:真正有流量的列表页只有几十条,但蜘蛛每天请求的地址里,带着颜色、尺码、排序、每页条数的参数 URL 却有上万条。它们不是被谁主动提交的,而是蜘蛛自己一步步组合出来的。

URL 空间是乘积,不是加法

一个列表页有 5 个筛选项,每项有 10 个取值,如果任意组合都生成独立地址,理论数量就是 10 的 5 次方。再加上排序方式、每页条数、分页序号,数字还会继续翻。蜘蛛并不理解“这个组合没人搜”,它只看到页面上有一组链接,每条链接都指向一个能正常返回内容的地址。

更麻烦的是这类页面通常互相链接。A 组合页挂着 B、C、D 的筛选入口,B 页面上又挂着 A、C、D。于是蜘蛛在里面来回走,抓取队列被大量低价值地址占满,新页面反而排到了后面。

蜘蛛是从哪里读到这些组合的

  • 筛选区的链接:最常见的入口,尤其是用 a 标签渲染的筛选按钮。
  • 排序与视图切换:按价格、按销量、按上架时间、按列表或网格。
  • 分页链接:组合页自身还有分页,相当于再乘一层。
  • 站内搜索与 Sitemap:如果搜索结果页可被抓取,等于把组合直接递到蜘蛛面前。
  • 外部链接与用户分享:带参数的地址被分享出去,也会成为新的线索。

代价不只是多抓几页

抓取预算被摊薄之后,重要页面和新页面的发现速度会变慢。同时,几十个参数不同的页面展示的往往是同一批内容,正文高度相似,容易形成重复内容。若这些页面被大量收录,搜索结果里会出现多个近似入口,用户点进去后的体验也不稳定。

判断标准很简单:翻抓取日志,看参数 URL 占总请求量的比例,再看这部分带来了多少自然流量。占比很高而贡献很低,就说明该收敛了。

怎么把抓取范围收回来

先定白名单,再谈屏蔽

不要一上来就全站屏蔽参数,那会把有价值的筛选组合一起挡掉。先列出真正需要展示的组合,比如“品类加品牌”“品类加规格”这类有搜索需求的维度,剩下的排序、每页条数和无意义的多维交叉,才是收敛对象。

可以用的几种手段

  1. robots.txt 屏蔽:阻止抓取,但地址若已被别处链接,蜘蛛仍会知道它存在,只是不再请求。适合确定不需要抓的组合。
  2. canonical 归并:让排序、视图类参数页指向不带参数的主列表页,减少重复内容信号。
  3. 内链收敛:页面上只保留必要维度的链接,排序和视图切换尽量不产生可抓链接,或只保留少量默认选项。
  4. 站内搜索结果页:通常应屏蔽抓取并加上 noindex,避免被无限组合牵着走。
  5. Sitemap 只放规范地址:写入确定要展示的列表页,不要放带排序、带会话参数的地址。
  6. 分页处理:明确分页序列的规范页,避免组合页的分页再生成一层新地址。

做完之后怎么验证

观察两到四周的抓取日志:参数 URL 的请求量是否下降,重点页面的抓取频率是否回升,新页面首次被抓的时间有没有缩短,同时看看收录数量是否在向合理区间回落。这些指标比“今天抓了多少条”更有参考价值。

收敛的本质不是把蜘蛛赶走,而是把有限的机会留给真正值得展示的页面。地址越可控,抓取越集中,站点运营里的很多问题会跟着变简单。