在蜘蛛池的日常运营里,入口頁承担的主要任務就是带出目标 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。
小结
判断一條带參地址會不會被当作新頁面,先看參數是否影响内容,再看參數類型是否有被忽略的先例。對蜘蛛池而言,入口頁的連結质量比數量更重要,减少無意义的參數拼接,通常比增加入口頁數量更能改善發現效率。