先别急着改参数规则。更有效的做法是:把“参数异常”拆成可对照的两组 URL,只保留能稳定复现差异的那一个变量,再决定是保留参数、改写参数,还是让这类 URL 退出抓取范围。下面给出可执行的缩小复现条件的方法。
日志里看到带参数的 URL 被抓得少,不等于蜘蛛抓取频率对参数页整体降级。更常见的情况是:无参数页被抓得正常,带参数页被抓得少;或者带参数页被抓得不少,但抓到的内容与预期不同。前者是抓取调度问题,后者更可能是内容可见性或重复内容问题。
判断依据可以这样取:
如果只有部分参数组合异常,说明问题不在“参数”这个大类,而在某个具体取值或组合方式上。
假设你有 ?sort=price、?page=2、?ref=abc 三类参数。不要同时测试全部。先固定一个无参数页作为对照,再逐组替换:
sort=price 换成 sort=date。这样做的结果会直接决定下一步:如果异常只跟随某一个参数名出现,问题可能在该参数的解析或输出逻辑;如果异常只跟随参数值出现,问题可能在值对应的内容分支;如果单个参数都正常、组合后才异常,问题更可能在参数组合后的页面生成或缓存层。
这一步的产出不是结论,而是一张对照表:哪些 URL 正常、哪些异常、差异变量是什么。没有这张表,后续任何修改都无法判断是否有效。
缩小到具体变量后,再决定处理方向。
保留参数适用于:该参数确实产生用户可见的独立内容,且不同取值之间不是简单重复。例如筛选后的结果页有独立标题和有效结果集。保留的前提是页面能稳定返回与参数对应的内容,而不是靠前端脚本临时拼装。
改写参数适用于:参数只影响展示顺序、来源标记或无关紧要的排序方式,内容主体不变。此时可以把参数收敛到固定形式,或让带参数 URL 指向无参数版本。改写的前提是确认改写后不会丢失用户需要的筛选状态。
退出抓取适用于:参数组合数量大、内容重复度高、且没有独立检索价值。可以用 robots.txt 限制抓取,但要清楚:robots.txt 的抓取限制不等于可靠的索引移除。已经被抓取并建立索引的 URL,仍可能出现在结果中。退出抓取只是减少后续抓取压力,不是清理索引的手段。
三种选择不是必须全部尝试。如果对照表显示只有来源标记参数异常,而排序和分页都正常,那么优先处理来源标记这一类即可,不必改动其他参数规则。
确定方向后,只改一个条件并观察后续抓取日志。例如:把来源标记参数从可抓取改为统一跳转到无参数版本,然后观察该组 URL 的抓取次数和返回状态是否变化。
这里要避免一个常见误判:抓取次数归零,不能单独证明处理正确。它也可能是蜘蛛暂时降低整体抓取、日志采样窗口变化、或该组 URL 被其他规则拦截所致。合理解释至少包括:抓取预算重新分配、站点地图更新延迟、服务器响应变慢导致抓取减少。要区分这些原因,需要同时看无参数对照组的抓取是否同步变化。如果对照组不变、只有处理组变化,才更支持“改动生效”的判断。
另一个实际动作是:检查站点地图中是否仍包含这些参数 URL。站点地图不保证收录,但把不该抓取的参数 URL 留在站点地图里,会向蜘蛛发出混合信号。移除或调整站点地图中的参数 URL 后,下一步应观察抓取日志中该组 URL 的出现频率,而不是直接检查索引量。
缩小复现条件的最终产出,应该是一句可验证的话,例如:“当 URL 同时包含 sort 和 page 参数、且 page 大于 1 时,返回内容与无参数页重复,抓取频率低于其他参数组合。”这句话包含了变量、组合方式和观察结果,开发或运维人员可以直接据此复现。
如果只能写出“参数页抓取异常”,说明变量还没有缩小到位。此时应回到对照表,继续拆分参数组合,直到异常能跟随一个具体条件出现或消失。只有到这一步,保留、改写或退出的选择才有依据,后续验证也才有明确的比较对象。