当筛选、排序、分页等参数可以任意组合,地址空间会迅速膨胀到无法逐个提交。此时有效地址集合不应由参数本身定义,而应由“内容是否随参数发生实质变化”来定义。缺少完整日志或提交权限时,最小动作是:抽取参数样本,对每个参数做单变量与双变量对照,记录返回内容是否一致,再据此把参数划分为内容型、展示型和无效型三类。这个动作能给出可辩护的集合边界,但不能证明这些地址一定被收录或抓取。
条件一:你能读取页面的规范链接、返回状态和正文摘要。此时用内容指纹做判据,对每个参数组合抓取一次,比较正文主体是否出现稳定差异。差异稳定且对用户有意义的,保留在有效集合;差异只是顺序、高亮或会话状态的,归入展示型,用规范链接指向无参数版本。
条件二:你没有抓取权限,只能看到外部可见的少量样本。此时改用参数角色推断:先列出所有参数名,按“是否改变数据集、是否只改变呈现、是否只用于跟踪”三档归类,再对每档各取两三个组合做人工核对。条件二得到的集合是待验证假设,不是最终结论。
两种条件的共同点是:先定义判据,再决定提交范围,而不是反过来用提交数量倒推集合。
内容型参数会改变返回的核心数据集,例如分类、地区、语言、时间范围。这类组合可能构成独立有效地址,但要注意组合爆炸:两个内容型参数各有二十个取值,理论组合就有四百个,其中很多是空结果或高度重复。
展示型参数只改变排序、视图、每页数量或高亮,不改变数据集本身。它们通常不应进入有效集合,而应通过规范链接或内部链接策略收敛到主地址。
无效型参数包括会话标识、来源跟踪、随机种子等。它们对内容无影响,且往往每个会话都不同,属于应被排除的地址。
实际动作:为每个参数建一行记录,字段包括参数名、类型、取值数量、是否影响内容、是否可枚举、处理方式。完成这张表后,下一步是决定哪些组合值得提交,哪些只需被爬虫发现即可。这个动作的结果会直接改变你后续提交清单的长度和结构。
并非所有内容型组合都值得主动提交。判断依据是可枚举性与需求集中度:
假设一个站点有“地区”和“品类”两个参数,地区十个取值,品类八个取值。理论组合八十个,但其中只有约三十个有实际商品。此时有效集合应定义为这三十个有内容的组合,而不是全部八十个。这个数字只是说明比较方法,不是实测结果。
例外情况:如果某个组合虽然当前为空,但业务上确定会长期存在并逐步填充内容,可以保留在集合中,但应避免把它当作已生效地址大量提交。空结果页面的处理方式需要与产品、运营确认,不能只由技术侧决定。
在没有完整抓取日志、没有提交接口权限的情况下,仍可做以下动作:
这个动作的产出是一份带置信度的参数清单,而不是最终提交列表。它的作用是缩小需要进一步验证的范围,让后续抓取或人工核对更有针对性。
提交量下降、抓取量归零或某个参数组合不再出现在日志中,都不能单独证明集合定义正确。合理解释还包括:抓取预算被重新分配、站点地图未被读取、服务器临时限制、外部链接变化,或该组合本身访问量极低。需要结合多个信号交叉判断。
另外,robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 不保证安全无漏洞或排名。不同搜索引擎对参数处理和提交接口的支持情况须分别核查,不能把某一家的行为直接套用到另一家。
最终,有效地址集合应写成可复核的规则,例如“保留所有改变核心数据集且返回非空内容的参数组合,其余用规范链接收敛”。规则明确后,无论参数如何增长,都可以用同一套判据决定哪些地址进入提交范围,哪些只需被正常链接发现。