站内检索、排序、分页、筛选这些交互,很容易在 URL 上留下参数痕迹。当参数可以自由组合时,同一个内容集合会衍生出成百上千个地址。抓取工具顺着内链一路走下去,抓取队列就被这些“看似不同、实际雷同”的地址占满,真正需要更新的详情页反而排在后面。下面按判断、分类、收敛、验证四个环节整理。
一、先判断:参数 URL 是否真的吃掉了抓取量
不要凭感觉收敛参数,先用日志说话。可以按下面几个口径做一次统计:
- 含问号的请求占全部抓取请求的比例,以及这些地址去重后的独立 URL 数量;
- 这些请求的响应码分布,有多少是 200、多少是重定向或错误;
- 参数页与对应规范页的正文指纹是否高度一致,重复程度有多高;
- 参数请求的平均响应时间和响应体大小,是否明显低于或高于规范页。
如果参数地址占到抓取量的三成以上,其中大部分返回 200 且正文与规范页几乎一致,基本可以判断入口存在膨胀。反之,如果参数请求很少或大多返回错误,优先级就要往后放。
二、参数分类:哪些值得放行,哪些应挡在门外
通常值得保留的参数
- 决定内容本身的标识参数,例如文章 ID、商品 ID、分类路径;
- 语言或地区切换参数,且返回的确实是不同语言、不同地区的实质内容;
- 分页所需的页码参数,因为分页是列表内容向下发现的通道。
通常应屏蔽或收敛的参数
- 排序、视图切换、每页条数一类展示层参数,如 sort、order、view、pageSize;
- 会话与追踪参数,如会话标识、utm 系列、广告点击标识;
- 时间戳、随机数、缓存绕过类参数;
- 多维筛选的自由组合,例如“品牌+价格区间+颜色+尺寸”同时出现。
三、收敛做法
- robots.txt 按参数模式屏蔽。用规则匹配参数前缀,但要注意同一参数名可能也用在内容页上。建议先屏蔽排查,观察日志中该模式的请求是否真的下降,再决定是否扩大范围。
- 内链只指向规范形式。列表页默认进入时不带参数,筛选或排序在用户点击后再生成,并改用按钮或脚本交互,避免这些组合被当作可抓取链接反复发现。
- canonical 与站内入口保持一致。参数页的规范地址指向无参数的版本,同时站内所有链接也统一指向该版本。若 canonical 指向 A、内链指向 B,两个信号会互相抵消。
- Sitemap 只提交规范 URL。不要把筛选组合地址写进站点地图,否则等于一边屏蔽一边主动投递。
- 分页与筛选分开处理。页码参数属于发现通道,不宜一刀切屏蔽;筛选参数才是膨胀的主要来源,两者要区别对待。
- 保留少量有价值的筛选页。若某些组合确实有独立搜索需求,可以挑选少量高价值组合纳入可抓取范围,并确保标题与正文有实质差异,而不是模板套壳。
四、服务器与抓取预算的配合
参数膨胀往往伴随大量重复的动态查询,给数据库带来额外压力。收敛之后,可以顺手观察服务器负载峰值与 5xx 比例是否下降,但要注意别把整体限速调得过紧,否则规范页的响应变慢,同样会拖累抓取。
如果站点本身存在抓取时段集中的问题,参数收敛的效果会被掩盖。建议在收敛前后各取一段相同长度的日志做对比,而不是看单日数据。
五、验证与复盘
- 参数请求在总抓取量中的占比是否下降,规范页占比是否上升;
- 是否存在误伤:屏蔽之后,带必需参数的正常内容页是否仍能被抓取;
- 索引与收录结构的变化需要按周甚至按月观察,短周期波动不足以判断成败;
- 结合搜索平台后台的抓取统计与覆盖率报告,交叉核对日志结论。
常见误区
- 只改 robots 不改内链,抓取工具仍会从列表页反复发现这些地址;
- canonical 与内链指向不一致,等于给出矛盾信号;
- 把所有参数一刀切屏蔽,连带把内容必需的参数也挡掉。
参数收敛的目标不是“少给地址”,而是让抓取工具把有限的时间花在真正不同的内容上。屏蔽之前先确认哪些组合有独立价值,误伤的入口恢复起来往往比预想更慢。