投放开始后,很多站点运营者会盯着服务器日志看抓取量的变化。抓取量涨了,说明 URL 被发现了,是好事;但同时 CPU、带宽、数据库连接数也可能跟着上去,尤其是页面本身比较重、没有缓存的站点,感受会更明显。这篇文章聊的是:抓取量上涨之后,怎么判断要不要干预,以及有哪些成本不高的处理方式。
先分清日志里的“抓取量”是谁的
抓取量上涨不等于搜索蜘蛛变多了。日志里通常混着几类流量:真正的搜索蜘蛛、各种采集器和伪蜘蛛(UA 仿冒)、监控探针,以及蜘蛛池入口页被访问时带出来的间接请求。如果不区分就动手限速,很容易把该放的流量也一起挡掉。
- 真搜索蜘蛛:可以用反向 DNS 校验 IP 归属,或对照官方公布的 IP 段列表核对。
- 伪蜘蛛:UA 写着搜索引擎名字,但 IP 不属于对应网段,抓取行为也偏“扫站”,短时间内遍历大量无意义路径。
- 采集器:请求规律性强,常出现在列表页和详情页,并发偏高。
一个简单的做法是:先按 IP 段和 UA 做一次归类统计,看看增量到底来自哪一类。不少所谓“蜘蛛池把服务器打挂了”的情况,实际增量来自伪蜘蛛或采集器。
什么情况下不需要急着处理
如果满足下面几条,通常可以再观察一段时间:
- 服务器负载在可接受范围内,正常用户访问没有变慢;
- 抓取集中在少数新投放的 URL,而不是全站乱爬;
- 抓取时段分散,没有在某一分钟形成明显尖峰。
搜索蜘蛛对同一个站点的抓取频率本身会动态调整。短期的量级波动,一般会在几天内回落到一个相对稳定的水平。
确实需要控制节奏时的几种手段
按成本从低到高,可以依次尝试:
- 给页面加缓存。动态渲染改成静态,或者加一层页面缓存,是最省事的做法,抓取量不变但负载明显下降。
- 在服务器层做并发限制。对单 IP 或单 IP 段的并发连接数设上限,避免个别来源占满资源。
- 利用 CDN 或 WAF 的 Bot 管理。多数厂商提供按 UA、IP 段、请求频率的规则,可以对已知搜索引擎放行、对异常来源限速。
- robots.txt 中的 crawl-delay。注意它只被部分蜘蛛支持,不能指望全站生效,而且值写得太大会拖慢正常收录节奏。
- 合并或收敛 URL 数量。参数页、筛选页、排序页如果大量开放抓取,会持续消耗抓取预算,可以考虑用 robots 规则或 noindex 处理。
不建议做的几件事
- 对包含 “bot” 的 UA 一刀切封禁,会误伤真搜索蜘蛛和正常的监控服务。
- 整段拉黑搜索引擎 IP 段,短期省事,长期会直接影响收录。
- 全站返回 503 或 429。短时间可以,持续时间长了搜索引擎会降低抓取频次,恢复起来比压下去更慢。
- 在投放期间频繁改动站点结构,让蜘蛛反复重新发现页面。
把抓取引到有价值的 URL 上
比起单纯压制总量,更实际的目标是调整抓取预算的分配。站点里真正需要被收录的页面往往只占一部分,把入口收拢到这些页面,把无意义的参数组合和重复内容用规则挡掉,同样的抓取量能带来更好的效果。
抓取量上涨本身不是问题,问题是这些抓取有没有落在你希望被收录的页面上。
总结一下:投放后先做日志归类,确认增量来源;负载可接受就继续观察,负载偏高先从缓存和并发限制入手;封禁类操作留到最后,并且尽量精确到 IP 段或路径,而不是整站。抓取节奏的控制是一个持续调优的过程,没有一步到位的开关。