这个坑值得记一笔。运维把一批屏蔽规则自动追加进 robots.txt,文件涨到了 780KB。之后蜘蛛开始抓取本该屏蔽的筛选页,日志里 /filter/ 的请求一天多了三万次。

刚开始盯着「文件里混入了注释块和空行,有效规则比例很低」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。各家蜘蛛对 robots 只读取前 500KB,超出部分被忽略;规则是脚本追加的,没有去重,同一路径重复了两千多行;追加脚本没有做体积校验,也没人监控文件大小。

动手时先看文件体积与行数

ls -lh robots.txt; wc -l robots.txt

然后统计重复规则并按路径合并

sort robots.txt | uniq -c | sort -rn | head -20

随后合并成前缀规则替代逐条列举

Disallow: /filter/

给追加脚本加体积上限校验

python append_robots.py --max-size 60000 --check

怎么算真的好了,看的是同一批现象。robots 缩到 12KB,规则条数从 4000 降到 90,筛选页的抓取请求第二天回落到接近零,抓取预算也腾出来了。

robots 不是越多越安全,写成长前缀规则比逐条列参数页有效得多,也能避免踩到体积上限。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189