常见問题

目标 URL 带了一長串參數,搜尋蜘蛛會把它当成新頁面重复抓取吗?

很多站点在入口頁或外鏈里给 URL 挂上統計、會话、篩選參數,结果日誌里同一内容被反复請求。本文說明搜尋蜘蛛對參數地址的判断逻辑、什么情况下參數會被视為不同 URL,以及如何用規范化、robots 和連結寫法收敛參數,减少無效抓取。

常见問题

目标 URL 带了一長串參數,搜尋蜘蛛會把它当成新頁面重复抓取吗?

很多站点在给目标 URL 做外鏈或放進入口頁时,會顺手带上統計參數、會话參數或者篩選參數,比如 utm_source、from、ref、sessionid 之類。结果在服務器日誌里看到同一個内容被請求很多次,于是产生疑問:搜尋蜘蛛到底把带參數的地址当成新 URL,還是当成同一個頁面的不同寫法?

结论先给:搜尋蜘蛛把 URL 当成一個字符串来看,參數不同,它就是不同的地址。只不過在實际抓取时,會有一套優先級和去重逻辑,不會無脑全部抓完。理解這套逻辑,比纠结“會不會重复抓”更有用。

參數不同,為什么就算不同 URL

對搜尋引擎来说,URL 的识別基于完整地址。https://example.com/a 和 https://example.com/a?from=abc 是两個不同的字符串,理论上對應两個可訪問的资源。搜尋蜘蛛不會先“理解”這两個地址内容一样,再决定合並——它需要先抓取,才能判断内容是否重复。

所以带參數的連結被放進入口頁或站外頁面,等于给搜尋蜘蛛多派了一份待抓任務。任務本身没問题,問题是当參數组合成百上千时,這些任務會挤占本来该给正常頁面的抓取額度。

哪些情况參數會被大量派發

  • 入口頁或列表頁里的連結,把目前頁面的查询參數顺着带了下去,翻一頁多一组參數。
  • 站内搜尋、篩選、排序功能生成了可抓取的連結,每個條件组合都是一個新地址。
  • 分享連結、广告連結自動附加統計參數,被大量複製到外部頁面。
  • 會话 ID、跟踪 ID 寫進了 URL,而不是放在 cookie 或請求头里。

這几種情况的共同点是:内容基本不變,地址却不断增殖。搜尋蜘蛛抓到的是一堆高度相似的頁面,站点能获得的實际價值很低。

搜尋蜘蛛會怎么處理這些參數 URL

不同的搜尋引擎细节不完全一样,但大致路径相似:

  1. 先抓一部分參數 URL,比對頁面主体内容是否與已有頁面高度重复。
  2. 如果判定為重复,後續同類參數地址的抓取優先級會被調低。
  3. 如果站点明确用 canonical、robots 或連結規范做了收敛,抓取會更加集中于主地址。

也就是说,參數 URL 不會永遠無限抓下去,但在“被降權”之前的那部分抓取已经消耗掉了。對抓取预算紧張的中小站点来说,這部分消耗是實打實的。

怎么收敛參數,减少無效抓取

不建议一刀切禁止所有參數,因為有些參數确實代表不同内容,比如商品 ID、文章 ID、分頁 page。要区分對待:

  • 無意义的跟踪參數:在入口頁和站内連結里尽量不寫,必要的統計放到前端脚本或服務端记錄。
  • 同一内容的多參數地址:在頁面 head 里用 canonical 指向不带參數的規范地址。
  • 篩選、排序、會话類參數:如果内容重复,用 robots.txt 的 Disallow 配合通配符拦掉明顯無價值的组合。
  • 必须保留的參數:在 sitemap 里只列規范形式,避免把變体也提交一遍。
robots.txt 只影响抓取,不影响收錄判断。被挡住的 URL 仍可能因為外部連結被索引,只是搜尋蜘蛛不會去抓内容。用之前想清楚目的。

入口頁放带參數連結时的两個习惯

第一,入口頁輸出的連結尽量用規范地址,不要在 href 里拼接来源标记。搜尋蜘蛛顺着入口頁發現的地址,會直接影响它後續抓取什么。

第二,如果同一個目标 URL 需要在多個入口頁出現,保持地址寫法一致。寫法统一,日誌里的請求會更集中,判断抓取效果也更容易。

回到最初的問题:搜尋蜘蛛确實會把带參數的地址当成新 URL,但抓不抓、抓多少,取决于站点有没有做收敛。與其担心重复抓取,不如先把連結里的參數管好,让每一次抓取都落在真正有價值的内容上。