蜘蛛陷阱是什么
蜘蛛陷阱不是某个具体漏洞,而是站点结构上制造出的“看起来永远有新页面”的 URL 空间。蜘蛛沿着链接一层层走,每走一步都能发现新链接,却始终走不到尽头。结果是抓取次数被大量消耗在低价值 URL 上,真正需要被发现的页面反而排在后面。
常见的无限 URL 空间来源
日历与日期归档
“上一年 / 下一年”“前一天 / 后一天”这类链接如果没有任何边界,蜘蛛可以从当前日期一路翻到很久以前,每一天都生成一个可访问的归档页。
分页无限延伸
部分列表页在超出实际数据范围后仍然返回 200 并展示空列表,同时保留“下一页”链接,形成一条没有终点的分页链。
筛选与排序参数组合
颜色、价格、品牌、排序方式自由组合,参数越多组合越呈指数增长,而且每个组合都能生成一个可访问的 URL。
会话标识与追踪参数
URL 中携带 session、ref、utm 等参数,同一份内容被复制成大量变体,蜘蛛会把它当作不同入口反复抓取。
动态目录层级
某些程序会把不存在的目录路径也渲染成页面,返回 200 并填充相似内容,让路径可以无限拼接下去。
从日志中识别循环迹象
- 同一路径前缀下的 URL 数量在几天内持续增长,而且长度越来越长;
- 抓取总量保持稳定,但有效内容页的抓取数量没有变化;
- 大量 URL 只在日志里出现,却始终没有进入索引;
- 参数组合类 URL 的抓取占比明显高于栏目页与内容页;
- 抓取时段服务器负载抬升,但并不对应真实的访问需求。
把日志按路径前缀聚合,观察抓取次数的分布,比逐条翻日志更容易看出问题。
收敛抓取路径的几种做法
- 给分页设上限,超出范围返回 404,或不再输出“下一页”链接;
- 筛选参数只在确有搜索需求时保留,其余组合统一通过 robots.txt 或 canonical 处理;
- 清理 URL 中的会话与追踪参数,保持同一内容只有一个规范地址;
- 日历类页面只保留有内容的时间段,空归档直接下架;
- 对确实无价值的入口使用 nofollow,减少蜘蛛沿链接向外扩散。
这些调整不必一次做完,可以先处理抓取占比最高的那一类,再逐步收紧其他入口。
确认收敛是否生效
调整后继续观察日志中的抓取分布:如果同一前缀下的 URL 数量停止增长,参数类 URL 的抓取占比下降,而内容页与栏目页的抓取次数保持或上升,说明路径正在收敛。反之,如果只是总数下降、有效页面也没被抓到,需要检查是不是把正常入口一起挡掉了。
判断标准不是抓取次数的多少,而是这些抓取次数有没有落在你希望被发现的 URL 上。