代理请求返回 429 Too Many Requests 时,很多团队第一反应是继续换 IP、扩大 IP 数量,或者把重试次数调高。这个方向通常不够稳。429 的核心含义是请求节奏已经触发限制,问题可能在请求频率、出口 IP 池、并发策略、重试间隔,也可能在任务本身没有分层。
排查 429,不应把目标定成“强行继续请求”。更合理的目标是:先记录现象,再判断限制来自哪里,最后把请求节奏、出口 IP 使用方式和任务队列拆开处理。这样才能减少无效重试,也方便后续复盘。
下面这张检查表适合用于爬虫采集、价格监控、公开页面巡检、后台数据同步等合规场景。它不讨论账号批量注册、验证相关操作或平台规则处理细节。
一、先确认 429 出现在什么阶段
429 不是一个单独结论,而是一个现象。先确认它出现在任务的哪个阶段:首次请求、连续翻页、并发放大、重复失败后的重试,还是某个出口 IP 使用一段时间以后。
建议先记录 5 个字段:
- 请求目标:域名、路径类型、是否为列表页或详情页。
- 请求节奏:单 IP 每分钟请求数、总并发数、重试次数。
- 出口信息:出口 IP、地区、代理类型、是否多任务共用。
- 错误时间:首次出现时间、持续时间、是否集中在某个任务批次。
- 响应差异:429 是否伴随 403、407、超时或连接重置。
如果同时出现认证错误,可以先参考 代理认证失败排查,不要把账号密码、白名单或协议格式问题误判成限流。
二、把请求频率按“单 IP”和“总任务”拆开看
很多 429 不是因为 IP 不够,而是因为同一个出口 IP 承担了过高的请求频率。排查时不要只看总请求数,要拆成两个维度:
| 维度 | 要看什么 | 常见误判 |
|---|---|---|
| 单 IP 频率 | 一个出口 IP 在单位时间内发了多少请求 | 只看整体 QPS,以为总量不高就没问题 |
| 任务并发 | 多少任务同时使用同一批代理 | 不同任务共享出口,实际叠加了频率 |
| 重试放大 | 失败后是否马上重复请求 | 以为重试是在修复,实际放大了限制 |
| 页面类型 | 列表页、搜索页、详情页是否分开限速 | 所有页面使用同一请求节奏 |
如果你已经在记录代理延迟、成功率和失败原因,可以把 429 作为独立失败类型加入 住宅代理健康检查 表,而不是混在“连接失败”里。
三、检查出口 IP 池是否被多个任务共用
出口 IP 池被多个任务同时使用时,很容易出现“单个任务看起来不快,总体却已经过快”的情况。尤其是采集任务、监控任务、登录维护任务混用同一批代理时,429 的排查会变得很混乱。
建议把任务分成三类:
- 低频维护任务:需要稳定、节奏慢、记录完整。
- 常规浏览任务:需要控制并发,避免集中打到同一类页面。
- 采集或巡检任务:需要单独设定队列、间隔和失败记录。
如果不同任务必须使用同一代理池,至少要记录每个任务的时间窗口和请求上限。否则,看到 429 时很难判断是谁把出口 IP 用满了。
四、不要让重试机制把 429 放大
429 之后立即重试,通常不是好习惯。特别是自动任务把失败请求放回队列、立刻再次请求时,429 会被重试机制持续放大。
可以按下面顺序检查:
- 失败后是否立即重试。
- 重试是否换了出口 IP,但仍保持同样频率。
- 重试次数是否和任务优先级相关。
- 是否设置了退避间隔,而不是固定间隔。
- 429 是否进入单独记录,而不是被归到普通失败。
如果同一批任务还伴随超时或连接重置,可以对照 代理连接超时排查,把网络层问题和限流问题分开处理。
五、检查代理类型和任务类型是否匹配
不同代理类型适合的任务节奏不同。静态代理更适合长期维护和稳定账号环境,动态代理更适合需要周期性更换出口的任务,但两者都不等于可以无限提高请求频率。
判断代理类型时,先问三个问题:
- 任务是否需要固定出口一段时间?
- 任务是否允许更换出口 IP 后继续执行?
- 任务是否对地区、时区、语言或账号环境有一致性要求?
如果这些问题没有先回答,只靠“多加 IP”处理 429,后续仍然会遇到难以复现的失败。选型时可以结合 代理 IP 服务入口 里的产品类型,再按任务节奏做具体配置。
六、用记录模板复盘,而不是凭感觉调参数
429 排查最怕凭感觉调参数:今天降低并发,明天增加代理,后天换任务脚本。每一步看似都在处理问题,但没有记录就无法知道哪个动作真正有效。
建议每次调整都记录:
| 字段 | 记录内容 | 用途 |
|---|---|---|
| 调整前频率 | 单 IP 请求数、总并发、重试次数 | 确认问题基线 |
| 调整动作 | 降频、分队列、扩大代理池、延长间隔 | 避免多个变量一起改 |
| 观察窗口 | 观察 10 分钟、30 分钟或一个任务批次 | 避免过早下结论 |
| 结果 | 429 数量、成功率、超时数量、失败路径 | 判断是否有效 |
| 下一步 | 继续观察、回滚、拆任务或更换策略 | 形成复盘闭环 |
如果团队还没有统一记录格式,可以先使用 代理测试记录模板 的思路,把连接、地区、认证和错误码放到同一个复盘表里。
七、429 排查顺序表
| 顺序 | 检查项 | 通过标准 | 不通过时怎么做 |
|---|---|---|---|
| 1 | 错误阶段 | 知道 429 出现在首次请求、翻页、并发还是重试阶段 | 先补日志,不急着改代理 |
| 2 | 单 IP 频率 | 能看到每个出口 IP 的单位时间请求数 | 按出口 IP 拆分统计 |
| 3 | 任务共用 | 不同任务不会无记录地共用同一出口池 | 拆队列或限定时间窗口 |
| 4 | 重试策略 | 429 后不会立即高频重试 | 加入退避间隔和重试上限 |
| 5 | 代理类型 | 代理类型与任务节奏匹配 | 重新区分维护、浏览和采集任务 |
| 6 | 复盘记录 | 每次调整只有一个主要变量 | 补充测试记录再继续 |
结论:429 先排节奏,再看代理池
429 的排查重点不是马上换一批代理,而是先把请求节奏、出口 IP 使用方式、任务队列和重试机制拆开。只有知道限制发生在哪里,代理池扩容、降频、分任务、延长间隔这些动作才有判断依据。
更稳妥的处理顺序是:先记录错误阶段,再看单 IP 频率,然后检查任务是否共用出口池,最后调整重试间隔和代理类型。这样处理 429,不是为了对抗限制,而是为了让代理使用方式更可控、可复盘、可调整。