无法靠枚举定义有效地址集合。参数组合之所以无限,是因为URL本身可以被任意构造,而有效集合描述的是“站点愿意作为独立页面处理并对外暴露的那部分URL”。因此,正确做法是先给出一个可判定的成员规则,再用日志、内链和响应行为去验证规则是否与真实处理一致。规则写不出来时,问题不在工具,而在站点尚未决定哪些参数组合算页面。
对任意一个带参数的URL,判断它是否属于有效地址集合,可以依次问三个问题。三个条件都成立才纳入,任一不成立就排除,这样规则可执行,不依赖主观印象。
注意“可发现”里的站点地图只是声明,不保证收录;它只能作为候选证据,不能单独把URL判为有效。同理,robots.txt 禁止抓取只影响抓取行为,不等于把已存在的URL从索引中移除。把这两件事混在一起,是参数集合失控时最常见的误判来源。
不要试图覆盖所有组合。从服务器访问日志或站点地图中抽取一批带参数的URL,按参数名和取值形态归类,例如分页、筛选、排序、会话标识、追踪来源。对每一类,实际请求几个代表值,记录状态码、正文长度、标题和规范链接。这一步的动作是把“无限组合”变成“有限参数类别”,结果决定下一步是收窄规则还是放宽规则。
假设一个站点的筛选页允许颜色、尺寸、材质三个参数各取十个值,组合数上千。抽样后发现:单参数筛选返回的内容有实质差异,双参数组合开始大量返回空结果,三参数几乎全是空页。此时可判定的规则是——单参数组合纳入有效集合,双参数仅在结果非空时纳入,三参数一律排除。这个数字只是用来说明比较方法,不是通用阈值。
参数URL的抓取量突然下降或归零,直觉上像是处理生效了,但这不能单独证明规则正确。至少还有三种合理解释:抓取预算被其他更重要的URL占用;服务器对这批URL的响应变慢或频繁报错;robots.txt 或规范链接的改动改变了抓取方的判断。要区分它们,需要同时看状态码分布、响应时间和内链变化,而不是只看一个总量。
如果抓取量下降的同时,状态码中5xx比例上升,那更可能是服务端问题而非规则生效。如果响应正常但内链指向这些参数URL的数量减少,则说明是站内结构调整在起作用。只有排除这些替代解释后,才能把变化归因于地址集合规则本身。
规则确定后,按以下顺序处理,每一步的结果都会影响下一步是否继续:
若第1步之后排除类URL仍被频繁抓取,说明抓取方尚未接受该信号,此时应检查是否存在外部链接或历史索引残留,而不是立刻回退规则。若第3步之后纳入类URL长期没有抓取记录,需要确认它们是否真的能从站内到达,而不是假设站点地图已经足够。
有效地址集合的定义最终应是一段可复核的文字,例如“参数p用于分页且页码在有效范围内时纳入,其余参数组合仅在返回非空结果时纳入”。把它写进内部文档,任何一次抽样都能对照判断,异常结果也能快速定位是规则问题还是实现问题。没有这段文字,参数组合无限增长时,任何处理都只是临时补丁,无法判断对错。