搜索抓取

URL 参数与蜘蛛抓取:排序、筛选、跟踪码要不要让蜘蛛走一遍

带参数的 URL 会成倍放大站点地址数量,也会稀释蜘蛛的有效抓取。这篇文章把参数分成改内容、改顺序、只做跟踪三类,讲清 robots.txt、canonical 与内链规范化的适用边界,并给出一份可执行的排查清单。

搜索抓取

URL 参数与蜘蛛抓取:排序、筛选、跟踪码要不要让蜘蛛走一遍

带参数的 URL 是站点运营里绕不开的东西:筛选、排序、分页、来源跟踪,几乎每一个交互动作都会在地址栏里留下痕迹。对用户来说这是功能,对蜘蛛来说这是 URL 发现数量的一次放大。同一个列表页,加上不同的筛选组合,可以轻松膨胀到几百上千个地址。

蜘蛛是怎么遇到这些参数 URL 的

参数 URL 通常有三类来源:页面里真实存在的链接、前端根据交互动态生成的地址,以及从别处带过来的外链。第一类是蜘蛛最主要的入口,因为它能被 HTML 直接解析;后两类往往依赖脚本执行或跳转,被发现和进入抓取队列的优先级通常更低。

需要区分的是,蜘蛛发现一个 URL 和抓取一个 URL 是两件事。链接一旦出现在 HTML 里,地址就进入了待抓队列;至于什么时候真正抓、抓几次,取决于它对站点的整体判断。参数越多、组合越复杂,队列里有效内容的占比就越低。

把参数分成三类看待

会改变正文内容的参数

分页参数、文章 ID、语言参数、查看全部等属于这一档。它们指向的是不同内容,被蜘蛛抓取是有意义的,通常应保持可抓状态,并保证每个地址都能稳定返回对应内容。

只改变呈现顺序或视图的参数

排序、筛选、每页条数、瀑布流视图属于这一档。它们本质上是同一批内容的重新排列,蜘蛛抓完第一遍之后,再抓几十种组合收益很低。比较稳妥的做法是:站内链接只输出默认视图,筛选结果页用 canonical 指回默认列表页,或者对特征明确的参数在 robots.txt 里做限制。

跟踪与营销参数

带来源标识、投放渠道、用户标识的参数对蜘蛛没有意义,在 HTML 里出现得越少越好。如果业务上必须保留,至少保证同一页面的 canonical 指向不带这些参数的版本,避免同一篇文章被拆成多个地址。

几种常见处理手段的边界

  • robots.txt 限制:可以挡住抓取,但 URL 本身仍可能作为已知地址被保留。适合处理海量低价值组合,不适合处理你希望展示的页面。
  • canonical:是收敛信号,不是禁止信号。它需要与站内链接、Sitemap 保持一致,否则几路信号会互相抵消。
  • 站内链接规范化:性价比最高。页面里只输出一种稳定的参数写法,其余组合就不容易被顺藤摸瓜地发现。
  • 参数顺序与大小写统一:同一组参数换个顺序就成了新地址,先统一输出格式,再谈其他。
  • 异步加载:能减少 HTML 里的链接数量,但也可能让部分内容更难被发现,需要结合站点形态权衡。

两个容易踩的坑

第一种是把整个目录用通配符一刀切。挡住之后,蜘蛛看不到内部结构,也无法顺着链接找到真正有价值的页面,站点在抓取层面的地图会缺一块。第二种是 canonical 与 robots.txt 互相矛盾:一边说别抓,一边又说以这个地址为准,蜘蛛只能按已有信号自行判断,结果常常和预期不同。

参数不是敌人,失控的参数组合才是。判断标准很简单:这个地址打开后,用户看到的内容和默认地址相比,是不是真的不一样。

一份可执行的检查清单

  1. 从抓取日志里拉出最近一段时间的访问记录,按参数名统计被访问的 URL 数量。
  2. 把参数按改内容、改顺序、只做跟踪分三组,分别标注处理方式。
  3. 检查站内链接:筛选、排序、分享按钮生成的地址是否直接写进了 href。
  4. 核对 canonical、Sitemap 与站内链接是否指向同一个规范地址。
  5. 调整后继续观察日志,看被抓取的参数 URL 数量是否下降、核心页面的抓取是否变多。

参数治理不需要一次做完,从访问量最大、组合最多的那几个列表页开始,效果通常最明显。稳定的响应速度和清晰的内链结构,往往比任何技巧都更能影响蜘蛛对站点的判断。