先看突增请求的分布特征:如果爬虫请求集中在少数目录、且返回状态与平时一致,更可能是资源压力;如果同一批URL反复出现异常状态码、或规则生效后仍被高频抓取,更可能是配置错误。区分的关键不是总请求量,而是请求路径、状态码和规则命中三者能否互相印证。
一个常见的反常结果是:运维在 robots.txt 中新增了几条 Disallow,监控面板上的爬虫请求数却没有下降,甚至短时升高。直觉会认为规则没生效,但这里至少存在两种解释。
第一种解释是资源压力。站点响应变慢后,爬虫单次连接占用时间变长,并发连接堆积,单位时间内看似“请求更多”,实际是同一批抓取被拉长。第二种解释是配置错误。规则写错路径、写在不被读取的位置,或者被其他指令覆盖,导致限制没有落到目标URL上。
两种解释都会表现为“量没降”,但成因完全不同,处理动作也相反:前者要扩容或降载,后者要改规则。
资源压力通常不会挑路径。它表现为全站范围内的响应时间上升,爬虫请求会均匀落在各类URL上,包括正常内容页、静态资源和分页。你可以按目录聚合日志,观察突增是否集中在原本就被频繁抓取的区域。
配置错误则往往有明确的路径特征。被错误规则影响的URL会集中在某个前缀、某种参数形式或某个子目录下。如果突增只出现在你刚刚改过规则的那部分路径,配置错误的嫌疑更大。
一个可执行动作:从日志中抽取突增时段内请求量最高的20个路径,与改动前的同一时段对比。如果这20个路径的排序基本不变,只是数量放大,偏向资源压力;如果排序出现明显替换,新面孔集中在你改动的路径附近,偏向配置错误。这个对比结果决定下一步是查容量还是查规则。
状态码能进一步缩小范围。资源压力下,常见的是超时、5xx 增多、连接被重置;爬虫本身仍按正常节奏发起请求,只是服务端来不及响应。配置错误下,更常见的是 403、404 或 200 与 403 混杂,说明请求被规则或权限层拦截,而不是被负载压垮。
需要注意,请求量或抓取量归零不能单独证明配置正确。抓取暂停还可能来自爬虫自身的调度周期、站点临时不可达、或对方降低了抓取频率。反过来,状态码里出现 403 也不能直接断定是你的规则所致,还可能是防火墙、CDN 或源站权限配置。
可核对的做法是把状态码按路径分组统计,再和规则改动的时间点对齐。若异常状态码集中出现在改动之后、且集中在改动涉及的路径,配置错误的证据更强;若异常状态码分散在全站、且与改动时间无明显对应,资源压力的可能性更高。
判断配置错误时,不要只看规则文件本身,要看规则是否作用到了你预期的URL上。robots.txt 的抓取限制不等于可靠的索引移除:它约束的是合规爬虫的抓取行为,已经收录的页面不会因为一条 Disallow 就自动消失。把“抓取被限制”当成“索引被移除”,是常见的判断偏差。
一个假设例子:某站点在 robots.txt 中写了 Disallow: /search?,本意是屏蔽站内搜索结果页,但实际想屏蔽的是带 ?q= 的查询页,而站内搜索用的是 ?keyword=。规则语法没错,路径也没写错格式,但匹配对象错了。此时日志会显示目标URL仍被高频抓取,而你以为已经限制的路径请求量确实下降了。这种“一半生效”的结果,正是配置错误的典型信号,而不是资源压力。
对应的动作是:挑出规则声称要限制的URL,逐条在日志中确认它们在规则生效后是否仍被请求。若仍被请求,回到规则匹配逻辑复查;若确实不再被请求,再去看剩余流量是否来自你未覆盖的路径。
区分清楚之后,处理路径就明确了。若证据指向资源压力,优先处理响应时间和并发容量,而不是继续加规则;继续加限制可能让合规爬虫降低抓取,却挡不住真正的负载来源。若证据指向配置错误,先修正规则匹配范围,再观察目标URL的请求变化,而不是用扩大 Disallow 范围来掩盖问题。
站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名,这些都不能作为判断本次突增的依据。真正能支撑决策的,是路径分布、状态码构成和规则命中三者是否指向同一个解释。当三者互相矛盾时,先补齐证据,再决定是扩容还是改配置。