当筛选参数可以任意组合、URL 数量在理论上没有上限时,有效地址集合不能靠穷举定义,而要靠一组可判定的规则来定义:哪些参数参与页面内容、哪些只影响展示、哪些组合必须存在、哪些组合必须归一。这样做的结果是,抓取预算和收录判断都从“有多少个地址”转向“哪些地址值得存在”,后续的站点地图、内链和监控才有稳定的判断基准。
参数组合无限增长,通常意味着程序能把任意参数拼进 URL 并返回 200。但返回 200 只说明服务器愿意响应,不说明这个地址有独立价值。定义有效地址集合的第一步,是把“可生成”与“可索引”分开:可生成地址是技术上能返回内容的地址,可索引地址是你愿意让百度抓取并作为独立结果存在的地址。两者之间要有明确规则,而不是交给抓取行为自然筛选。
一个可操作的判定方式是给每个参数标注三种角色之一:内容参数(改变主体内容,如商品筛选出不同品类)、排序与展示参数(只改变顺序或视图)、追踪参数(来源、会话、广告标识)。只有内容参数参与有效地址集合的构成,其余参数在归一或屏蔽时处理。这个标注必须落到具体参数名上,不能停留在“筛选参数一般不影响内容”这种笼统判断。
假设某站点有一个列表页,支持 color、size、sort、page、from 五个参数,每个都可以单独出现或组合出现。直觉上会认为“参数越多地址越多,抓取越难管”,于是有人选择全部屏蔽带参数的地址。但这样做会连同真正有区分度的筛选结果一起挡掉。下面按顺序走一遍。
color 和 size 会改变结果集合,属于内容参数;sort 只改变顺序,from 是来源标识,page 是分页。color 单独可形成有效页,size 单独也可,但二者组合是否有效,取决于结果数量是否足够支撑一个独立页面。这一步需要实际检查组合后的结果条数,而不是凭参数数量推断。sort 通过 canonical 或 301 指回默认顺序的地址,from 在服务端忽略并归一。走完这四步后,有效地址集合就变成一条可写进文档的规则:color 与 size 的单参数页有效,二者组合仅在结果数达到内部约定阈值时有效,sort、from 一律归一,page 按分页规则保留。这个集合是有限的、可复核的,而不是靠抓取日志事后归纳。
参数地址膨胀时,常见现象是抓取量上升但有效页收录没有同步变化。这时不能直接得出“抓取被浪费”的结论,因为抓取量上升还有别的合理解释:站点地图里混入了大量低价值地址、内链指向了归一前的旧地址、分页链把展示参数带进了下一层。要区分这些解释,需要分开看证据。
sort、from 这类应被归一的参数上,说明归一规则没有生效或被内链绕过。sort 的多个取值各自被抓,说明 canonical 指向与内链不一致。这些证据只能说明“哪一类地址在被抓”,不能单独证明规则正确。抓取量归零可能是规则生效,也可能是站点地图被移除或服务器拒绝了整类请求,需要结合响应状态码一起判断。
定义完成后,至少要做一次验证动作:从规则认定的有效地址集合里抽样,逐个检查其 HTTP 状态、canonical 指向、页面主体内容是否与参数意图一致;再从规则认定无效的地址里抽样,确认它们确实返回 404、301 或被 robots.txt 限制。这个动作的结果直接决定下一步——如果无效地址仍返回 200 且内容与父级高度重合,说明归一还没落地,此时扩充站点地图只会放大问题;如果有效地址抽样正常但抓取记录稀少,下一步才轮到检查内链和站点地图的覆盖。
需要提醒的是,robots.txt 的抓取限制只约束抓取行为,不等于可靠的索引移除;站点地图提交也不保证收录。有效地址集合的定义解决的是“哪些地址应该存在、应该被抓”,它不能替代对已收录地址的后续处理。
参数组合是否有效,往往取决于结果数量这一会变化的量。把阈值写死成某个固定数字,会在数据量增长或缩减后失效。更稳妥的做法是把判定条件写成可复核的规则,例如“组合结果数低于某比例时不单独成页”,并注明这个比例是内部约定、需要定期复核,而不是百度给出的标准。这样当抓取表现或内容规模变化时,调整的是阈值,而不是推翻整个集合定义。
最终,有效地址集合应当是一份能交给他人复核的清单:参数角色、组合条件、无效地址的处理方式、抽样验证方法。有了这份清单,参数增长带来的就不再是无限膨胀的地址,而是一组边界清晰、可以持续维护的页面。