结论:当参数组合可以无限生成时,不能把“所有返回正常内容的参数组合”当成有效地址集合,而应把有效集合定义为“由站内可枚举入口产生、且内容具有独立检索意义的那部分地址”。如果做不到枚举,就退而定义一组可验证的规则,用规则判定某地址是否属于有效集合。这个结论有一个反例:当参数只用于追踪来源、排序偏好或会话状态,且服务端对任意取值都返回同一份主体内容时,按规则它可能被判为有效,但它并不构成独立地址,不应进入有效集合。
参数无限增长通常来自三类机制,混在一起看就会得出“地址太多、无法收敛”的错觉。
只有第一类值得进入有效集合的候选范围。判断依据不是参数名字,而是去掉参数后主体内容是否发生实质变化。做法是:对同一路径分别请求带参数和不带参数的版本,比较返回的主体文本与结构化数据。如果两者主体一致,只是顺序或标记不同,就归入第二、三类。
参数取值可以无限,但站内入口是有限的。有效地址集合应当从入口反推,而不是从参数空间正推。
这样得到的集合规模由入口数量决定,可控且可核对。一个实际动作是:从站点地图和主导航抓取全部指向该路径的链接,提取参数键值对,得到一份入口参数清单。这份清单的规模如果远小于参数理论组合数,说明有效集合本来就该以入口为准,后续排查也只需围绕这份清单展开。如果清单规模接近理论组合数,说明入口本身在无限扩散,问题出在链接生成环节,而不是地址定义环节。
当入口无法完整枚举时,退而使用规则判定。一条可用的规则形如:地址属于有效集合,当且仅当它至少满足以下之一——被站内链接指向、被站点地图列出、返回的主体内容与同路径其他参数版本存在实质差异。
这条规则有明确的失效条件。假设某电商站点用 ?color= 生成筛选地址,颜色取值理论上可无限扩展。按规则,只有被链接或被站点地图列出的颜色组合才算有效。但如果服务端对任意颜色值都返回同一份“无匹配结果”页面,且该页面返回正常状态码,那么规则会把大量无意义地址误判为有效。此时应补充一条排除条件:主体内容与默认无结果页一致时,不计入有效集合。
需要提醒的是,抓取限制和索引移除是两件事。用 robots.txt 挡住某类参数地址,只能阻止抓取,不能保证已收录的地址从索引中消失;站点地图列出某地址,也不保证它会被收录。这两点会影响你对“有效集合”实际后果的预期,但不能替代集合本身的定义。
常见反常现象是:参数地址数量在增长,但有效内容页数量没有同步增长。这可能有两种解释,需要区分。
区分方法:抽取新增地址样本,逐条记录主体内容指纹和入链来源。如果指纹重复率高而入链稀少,偏向解释一;如果指纹各不相同而入链为零,偏向解释二。两种解释对应完全不同的下一步动作:前者要收紧参数生成规则,后者要补入口。
还要注意,请求量或抓取量下降不能单独证明参数处理已经正确。它也可能来自抓取预算调整、外部链接变化或服务端响应变慢。把这些现象当作线索,而不是结论。
基于以上,建议按顺序执行:先导出该路径的全部入口参数清单,再对清单内地址逐条核对主体内容指纹,最后根据指纹结果决定是收紧规则还是补充入口。
判定标准可以设为:入口清单中,主体内容指纹唯一的地址占比达到多数时,说明有效集合基本由入口决定,后续只需维护入口;指纹重复占多数时,说明参数在制造重复地址,应优先在链接生成端限制参数组合,而不是在索引端做补救。这个判定不依赖任何固定比例阈值,你应根据自己站点的入口规模选择可操作的切分点。
完成这一步后,你会得到一份有边界的有效地址集合,以及一份明确标注为“未验证”的参数组合清单。后者不是垃圾,而是下一轮排查的输入。