在蜘蛛池的日常运营里,入口页承担的主要任务就是带出目标 URL。为了提高命中率,有人会在链接后面拼上 utm、来源标记或者随机参数,结果日志里出现成千上万条「看起来一样、只差几个字符」的地址。这些带参 URL 会被搜索蜘蛛当成独立页面,还是被自动合并,取决于参数本身,也取决于服务器返回的内容。
搜索蜘蛛怎么看待查询字符串
对搜索蜘蛛来说,URL 是页面的唯一标识,默认情况下路径和查询字符串一起参与计算。也就是说,/a?id=1 和 /a?id=2 是两个不同的地址,除非出现明确的规范化信号,否则它们会被分别请求、分别解析。蜘蛛不会主动替你判断哪个才是「正主」,它只按地址去抓。
这也是很多站点在日志里看到大量近似 URL 的原因:入口页每拼一个参数,就等于多造了一个待抓地址。
哪些参数比较容易被合并
- 统计类参数:utm_source、utm_medium、ref、from 等,通常不改变页面内容,被忽略的概率较高。
- 会话类参数:sessionid、sid、jsessionid 这类,一般会被丢弃,官方也更建议改用 cookie。
- 内容类参数:id、p、cat、page 往往决定正文内容,基本不会被合并。
- 排序筛选类参数:sort、order、filter、view 容易生成大量近似页面,是参数失控的重灾区。
需要说明的是,「容易被合并」并不等于「一定会合并」。这更多是概率问题,不同搜索引擎的处理策略也不完全一致,不能把猜测当成确定结论。
参数失控对蜘蛛池意味着什么
抓取配额被稀释
搜索引擎分配给一个站点的抓取资源是有限的。当入口页源源不断吐出带参地址,其中大量内容重复或价值很低,抓取资源就会消耗在这些地址上,真正需要发现的目标 URL 反而排到了后面。
发现效率下降
带参地址越多,蜘蛛在处理入口页时需要解析和排队的链接就越多。日志上表现为请求量看着不小,但目标 URL 的被抓次数没有同步增长。
重复内容判断变复杂
同一个目标内容对应多个带参地址时,权重和信号会被分散,页面之间还可能互相竞争,这属于典型的自造重复。
排查和处理思路
- 先从日志入手,统计入口页被请求的 URL 总量里,带查询参数的占多大比例,参数种类有多少,哪些参数出现频次最高。
- 判断这些参数是否影响正文。如果同一份内容能生成多个地址,就应当按重复处理。
- 能用静态路径表达的内容,尽量不要用参数。入口页链接优先指向规范化后的地址。
- 确实要保留的参数,保持顺序和大小写统一,避免把 & 写成 & 这类转义错误,导致解析出的地址和预期不一致。
- 对接收到的大量无意义参数地址,可以在 robots.txt 或 canonical 上表态,但要知道这类信号生效需要时间,不要指望立刻清空日志。
几个容易踩的坑
第一个坑是把「多一个参数」等同于「多一个入口」。在链接发现层面这大致成立,但在抓取和收录层面并不成立,参数只让地址变多,不会让蜘蛛更愿意抓。
第二个坑是参数顺序不固定。同一组参数换个顺序,会被当成不同地址,日志统计时容易误判成流量上涨。
第三个坑是入口页链接本身写错。若地址里出现多余的转义字符,蜘蛛解析出来的 URL 可能指向 404 或无关页面,表面看像蜘蛛跟丢了,实际是链接写法有问题。
带参 URL 多数会被当成独立地址,只有统计类和会话类参数比较容易被忽略。与其靠堆参数制造入口,不如把链接写规范、把内容差异做清楚,让蜘蛛用更少的请求发现真正有价值的目标 URL。
小结
判断一条带参地址会不会被当作新页面,先看参数是否影响内容,再看参数类型是否有被忽略的先例。对蜘蛛池而言,入口页的链接质量比数量更重要,减少无意义的参数拼接,通常比增加入口页数量更能改善发现效率。