站内很多 URL 并不是编辑手工写出来的,而是筛选器、排序选项、分页按钮和推广链接自动生成的。它们对用户有用,对蜘蛛却意味着成倍的抓取入口。搞清楚这些 URL 是怎么被发现的,才能判断抓取资源到底花在了哪里。
参数化 URL 的几种常见来源
- 筛选与分面:颜色、价格区间、地区、品牌,每勾一项就生成一个新的组合地址。
- 排序:按销量、按价格、按上架时间,同一批内容出现多份地址。
- 分页与视图:page=2、view=list 这类参数,既影响发现新 URL,也影响重复判断。
- 追踪参数:utm_source、from、ref 等推广标记,常被外部转载带走。
- 会话残留:部分系统会把用户上一轮的选择带进下一个 URL,形成意料之外的组合。
蜘蛛对参数的基本处理逻辑
早期搜索引擎对带参数的地址比较保守,往往直接忽略。现在多数蜘蛛会抓一部分,但通常会做去重判断,同一组内容尽量只保留一个代表 URL。问题在于,判断本身要花成本,抓取也要占预算。参数 URL 越多,越容易挤占真正需要抓的详情页。
什么样的组合容易被大量抓
如果筛选结果之间内容差异明显,蜘蛛更可能把它们当成独立页面处理。反之,只是顺序不同、内容基本一致的排列组合,通常被抓几次后就会被归并。这个边界并不固定,会随站点权重、更新频率和服务器响应情况变化。
抓取扩散通常沿三条路径发生
- 列表页上的筛选链接:一页里几十个筛选入口,每个都指向新地址,蜘蛛顺着点下去就会展开。
- 详情页里的相关推荐:带着参数回跳,和列表页互相指向,形成循环。
- 外部链接:推广链接带追踪参数被转载,蜘蛛从站外进来,绕过了站内的收敛规则。
收口的几个动作
- 对纯排序、纯追踪参数,在服务器端或前端统一去掉,让用户和蜘蛛看到同一个干净地址。
- 需要保留的筛选组合,限制可抓范围,例如只放开一到两个维度,其余组合不生成可点链接。
- 用 canonical 指向无参数版本,但要清楚它只是提示,不是强制指令,长期不一致反而容易让蜘蛛反复确认。
- robots.txt 可以屏蔽无意义的参数路径,前提是确认这些 URL 不会成为某些内容的唯一入口。
- 分页尽量保留可抓,别把 page=2 一起封掉,那会切断深层内容的发现路径。
服务器层面的观察
想确认扩散有没有发生,最直接的办法是看日志:统计带参数 URL 的抓取占比、状态码分布,以及这些请求是否集中在某些时间段。如果参数 URL 的 5xx 或超时比例明显高于普通页面,说明它正在拖慢整体节奏,值得优先处理。反过来,如果参数页响应很快、内容也有差异,就不必急着全部封掉。
参数本身不是问题,问题是同一份内容被蜘蛛用很多个地址反复确认,而真正更新的页面还在排队。
一个折中思路
与其一刀切封掉所有参数,不如按「这个参数是否指向不同内容」来分类。指向不同内容的,给它稳定地址和明确的内链入口;只改变展示顺序的,收敛掉;纯粹是渠道标记的,从站内链接里去掉,只保留在对外投放中。分类做完之后再观察一段日志,看抓取分布有没有向详情页倾斜,比一次性大改更稳妥。