常见問题

入口頁連結带跟踪參數、指向同一内容:搜尋蜘蛛會不會当成不同 URL 重复抓取

蜘蛛池入口頁经常给同一批連結挂上 from、utm_source、ref 等跟踪參數。本文說明搜尋蜘蛛判断两個地址是否等價的大致逻辑,哪些參數形態容易被当成不同 URL、重复抓取會带来什么代價,並给出從日誌排查到參數收敛的具体做法。

常见問题

入口頁連結带跟踪參數、指向同一内容:搜尋蜘蛛會不會当成不同 URL 重复抓取

蜘蛛池入口頁里常见一種寫法:同一批目标連結後面挂上不同的跟踪參數,比如 ?from=page1、?utm_source=xxx、?ref=abc。這样做的初衷通常是区分来源、統計点击,但随之而来的問题很直接——搜尋蜘蛛會不會把這些地址当成一堆不同的 URL,分別抓一遍,把抓取配額耗在重复内容上?

搜尋蜘蛛怎么判断两條連結是不是同一個地址

搜尋蜘蛛不會“理解”參數的含义,它拿到的是一串字符串。判断两個地址是否等價,主要看 URL 規范化規則和内容相似度两方面。

  • 規范化层面:域名大小寫、預設端口(:80/:443)、末尾多余斜杠、片段标识(# 後面的内容不參與請求)等,通常會被归並。
  • 參數层面:不同搜尋引擎處理方式不同。utm_*、ref、from 這類常见跟踪參數在部分引擎的規則里會被忽略或降權,但這属于引擎内部策略,不是你能确保的。
  • 内容层面:如果两個地址返回的 HTML 完全一致,引擎也有可能自行去重,但前提是它愿意抓這两次来做比較。

哪些參數容易被当成不同 URL

  • 會话 ID、用戶 ID 之類每次訪問都會變化的參數。
  • 排序、篩選、翻頁參數(sort=、page=、filter=)。
  • 随机數或時間戳(?t=1719…),每次刷新都产生新地址。
  • 參數顺序不固定:a=1&b=2 和 b=2&a=1 在很多實現里就是两個字符串。

前两類如果内容确實不同,重复抓取算正常;後两類只是形式差异,抓取基本是白花。對蜘蛛池入口頁来说,浪費的是本来就不宽裕的抓取配額,目标 URL 被發現的時間會被拉長。

怎么排查入口頁是否在制造重复地址

  1. 看日誌。把入口頁被請求的 URL 按路径去重統計,如果同一路径出現几十上百種參數组合,說明連結生成环节有問题。
  2. 看目标 URL 的抓取量。某個地址如果被反复請求、返回内容又完全一致,多半是被多個带參數的入口带過去的。
  3. 检查頁面源碼。看連結生成模板里有没有拼接 session、時間戳、随机數。

可以做的收敛處理

  • 入口頁只輸出規范化後的干净地址:不拼跟踪參數,統計用跳轉脚本或前端埋点完成,不要寫進 href。
  • 參數顺序固定,並且只在内容确有差异时才保留參數。
  • 如果無法避免參數,用 canonical 指向無參數版本,同时確認無參數版本能正常訪問、返回同样的内容。
  • robots.txt 只用来屏蔽确實不需要抓取的無效參數形態,不要拿它代替規范化,被屏蔽的地址也就不會再被發現。
  • 站点地图里只放無參數的規范地址。
參數收敛解决的是“別把配額花在重复地址上”,它不是收錄開關。地址被正确發現、抓取之後能不能收錄,仍然取决于内容本身。

一個容易被忽略的前提

不少团队在優化參數問题的同时,把入口頁本身改成了需要登入或带人机驗證的地址,结果蜘蛛连入口頁都讀不到,參數再怎么規范也没有意义。先把入口頁的可訪問性、响應速度、連結是否可见確認一遍,再谈參數层面的收敛,顺序會顺一些。