蜘蛛陷阱是什么
蜘蛛陷阱不是某個具体漏洞,而是站点结构上制造出的“看起来永遠有新頁面”的 URL 空間。蜘蛛沿着連結一层层走,每走一步都能發現新連結,却始终走不到尽头。结果是抓取次數被大量消耗在低價值 URL 上,真正需要被發現的頁面反而排在後面。
常见的無限 URL 空間来源
日歷與日期归档
“上一年 / 下一年”“前一天 / 後一天”這類連結如果没有任何邊界,蜘蛛可以從目前日期一路翻到很久以前,每一天都生成一個可訪問的归档頁。
分頁無限延伸
部分列表頁在超出實际資料范围後仍然返回 200 並展示空列表,同时保留“下一頁”連結,形成一條没有终点的分頁鏈。
篩選與排序參數组合
颜色、價格、品牌、排序方式自由组合,參數越多组合越呈指數增長,而且每個组合都能生成一個可訪問的 URL。
會话标识與追踪參數
URL 中携带 session、ref、utm 等參數,同一份内容被複製成大量變体,蜘蛛會把它当作不同入口反复抓取。
動態目錄层級
某些程序會把不存在的目錄路径也渲染成頁面,返回 200 並填充相似内容,让路径可以無限拼接下去。
從日誌中识別循环迹象
- 同一路径前缀下的 URL 數量在几天内持續增長,而且長度越来越長;
- 抓取總量保持稳定,但有效内容頁的抓取數量没有變化;
- 大量 URL 只在日誌里出現,却始终没有進入索引;
- 參數组合類 URL 的抓取占比明顯高于栏目頁與内容頁;
- 抓取时段服務器负载抬升,但並不對應真實的訪問需求。
把日誌按路径前缀聚合,观察抓取次數的分布,比逐條翻日誌更容易看出問题。
收敛抓取路径的几種做法
- 给分頁设上限,超出范围返回 404,或不再輸出“下一頁”連結;
- 篩選參數只在确有搜尋需求时保留,其余组合统一通過 robots.txt 或 canonical 處理;
- 清理 URL 中的會话與追踪參數,保持同一内容只有一個規范地址;
- 日歷類頁面只保留有内容的時間段,空归档直接下架;
- 對确實無價值的入口使用 nofollow,减少蜘蛛沿連結向外扩散。
這些調整不必一次做完,可以先處理抓取占比最高的那一類,再逐步收紧其他入口。
確認收敛是否生效
調整後繼續观察日誌中的抓取分布:如果同一前缀下的 URL 數量停止增長,參數類 URL 的抓取占比下降,而内容頁與栏目頁的抓取次數保持或上升,說明路径正在收敛。反之,如果只是總數下降、有效頁面也没被抓到,需要检查是不是把正常入口一起挡掉了。
判断标准不是抓取次數的多少,而是這些抓取次數有没有落在你希望被發現的 URL 上。