站点規模做大之後,URL 總數常常不是被内容撑起来的,而是被參數组合和归档頁撑起来的。搜尋蜘蛛沿着連結一步步走,只要頁面上有可達的連結,它就可能在那些頁面上花時間。這類结构通常被称為無限抓取空間,它不一定是错誤,但會让抓取配額被大量低價值頁面占掉。
什么样的連結會让抓取空間無限扩張
判断标准不复杂:從一個入口出發,能不能沿着頁面上的連結走到越来越多的 URL,而這些 URL 之間内容差別很小。如果能,就是抓取空間失控的信号。典型特征是頁面上存在一個永遠指向更多同類頁面的連結,而且每一层都還能繼續往下走。
四類常见来源
一、日歷與归档頁
日期归档是最常见的一類。日歷组件可以向前翻、向後翻,归档頁可以按年、按月、按天生成,多年内容就能拉出成百上千個列表頁。這些頁面本身不一定没價值,問题在于每一层都留着上一期、下一期的連結,蜘蛛可以一路翻下去,而其中大量頁面並没有獨立内容。
二、篩選與排序组合
篩選值越多,组合越爆炸。颜色、尺碼、價格区間、排序方式,四個维度各五個取值,就能拼出几百條 URL。多數组合的结果頁是空的,或者與主列表高度重复。如果服務端不区分處理,這些地址都會被当作獨立頁面记錄下来。
三、分頁與自我引用
有些模板會在列表頁里放查看全部的入口,同时又保留分頁連結,而查看全部頁里再鏈回分頁。两種路径互相指向,形成可以来回走的环路,蜘蛛每次訪問都能發現一批舊地址。
四、會话與追踪參數
带 session id、utm、ref 這類參數的地址,如果服務端不做归一化,同一個頁面會被当作多條 URL 记錄。蜘蛛被這些地址引入後,還會顺着頁面里的連結繼續往下走,把參數带到更深的位置。
怎么確認是不是失控了
- 抓取日誌里,同一列表模板的 URL 占比是否明顯高于内容頁;
- 服務端訪問日誌中,带參數請求占總請求的比例;
- 站内 URL 總數與内容條數的比值是否長期偏高;
- 蜘蛛新發現的 URL 中,有多少最终返回 200 且确有獨立内容。
這几個指标只需要抽样統計,不必追求精确。重点看趋势:某類模板的抓取請求持續上升,而它带来的有效訪問没有變化,基本可以判断需要收敛。
收敛的几個做法
- 篩選參數做白名單,未被允许的參數组合直接返回 404,或規范到主列表地址。
- 归档頁限制翻頁层數,舊月份做成静態頁,只在归档入口曝光一次。
- 分頁统一用一套路径,查看全部只在内容确有必要时保留,避免两套路径互鏈。
- 會话與追踪參數在服務端重寫掉,不進入對外暴露的 URL 结构。
- 没有獨立内容的參數组合,用 robots.txt 屏蔽抓取,同时保留 Sitemap 中的有效列表。
- 需要保留但不希望被反复抓取的頁面,用 noindex 配合取消内鏈,减少入口數量。
無限抓取空間的問题通常不在蜘蛛太勤奋,而在于站点给了太多入口。收敛入口比事後屏蔽更省事,也更稳定。
上线前的核對清單
新增一個篩選功能、一個新的归档模板或一段日歷组件之前,先問三個問题:它會不會生成新的 URL?這些 URL 能不能從其他頁面連結到?鏈過去之後還有没有下一步連結?只要有一個答案是會,就應该提前决定收敛方式,而不是等日誌里出現大量請求再回头處理。
日常维護上,定期抽查抓取日誌里占比最高的 URL 模板,比一次性全站清理更有效。把有限的抓取配額留给真正需要被發現的内容頁,URL 發現的效率才會稳定下来。