蜘蛛池知识

蜘蛛池入口頁的 URL 參數:哪些參數會引来重复抓取

入口頁带上會话、追踪或排序參數後,同一個頁面可能被蜘蛛当成几十個不同地址,抓取预算被大量消耗在重复内容上。本文按參數類型拆開說明,哪些该保留、哪些该清理,以及 301、canonical、静態化几種處理方式的取舍與自查要点。

蜘蛛池知识

蜘蛛池入口頁的 URL 參數:哪些參數會引来重复抓取

入口頁的 URL 一旦带上參數,同一個頁面對蜘蛛来说就變成了多個地址。池子本来就靠數量換發現机會,如果每個入口頁都自带十几個變体,抓取预算很快會被這些重复地址吃掉。下面按參數類型拆開看。

參數制造的三種重复

  • 纯狀態參數:sessionid、sid、随机數、時間戳。它們只服務于訪問狀態,與内容無關,每次請求都可能不一样。
  • 追踪參數:utm_source、from、ref、share 之類。用于統計来源,頁面内容完全相同。
  • 内容參數:page、cat、sort、filter 等。這類參數确實會改變頁面上展示的内容集合。

前两類是纯粹的重复,第三類要看實現方式。不少站点用同一個模板渲染不同排序结果,本质上還是同一批連結,只是顺序變了。

该清理的參數

與内容無關的參數應尽量不出現在入口頁的連結里。做法分两层:連結层面不生成,服務器层面做归一。

  • 站内所有指向入口頁的連結,统一使用無參數或固定參數的地址。
  • 對带追踪參數、會话參數的訪問,返回 301 跳到干净地址。
  • 參數顺序固定,值做小寫化、去空格處理,避免 a=1&b=2 與 b=2&a=1 被视為两個頁面。
  • 會随請求變化的随机數,尽量改成服務端生成一次、長期复用。
參數归一的目标不是讨好某一個搜尋引擎,而是让同一份内容只有一個稳定地址,减少池子里的無效地址。

该保留的參數

分頁、分類、篩選這類會真正改變内容集合的參數,不必强行去掉,但要控制组合數量。两三個篩選條件、每個條件取几個值,组合數就會暴涨。建议只给蜘蛛保留一條主路径,其余组合用 robots.txt 屏蔽,或在頁面上用 canonical 指回主路径。

静態化的取舍

把带參數的地址改寫成 /list/page-2/ 這類路径,好處是地址稳定、便于統計;代價是規則寫错容易出現循环或死鏈。改造时先在測試环境把重寫規則跑一遍,確認 301 鏈路只有一跳。

canonical 不能当萬能药

canonical 是提示而不是指令,蜘蛛可能忽略。參數地址如果本身還能正常訪問並返回内容,仍然可能被單獨抓取。更彻底的做法是让带參數的地址返回 301,或者干脆不生成這样的連結。

自查清單

  1. 抓取日誌里同一路径出現大量不同參數版本,說明归一没做干净。
  2. 随机數、時間戳出現在入口頁 HTML 中,優先處理。
  3. 站内連結與 sitemap 中的地址寫法是否一致。
  4. 分頁參數是否可被無限组合,机器生成的分頁連結要设上限。
  5. 重定向鏈是否超過一跳,鏈路過長會持續消耗抓取配額。

參數處理的收益不會立刻体現在蜘蛛數量上,但能减少池子里的無效地址,让有限的抓取预算落在真正需要被發現的 URL 上。池子越大,這件事越值得先做。