跳至正文
中文
立即开始

429 Too Many Requests

429 Too Many Requests(请求过多)是客户端超出请求速率或配额限制时返回的 HTTP 响应,表示客户端应降低请求频率,稍后重试。

文章目录(8 个章节)

429 表示什么

服务器判定同一客户端发送的请求过多并启用限速时,会返回 429 响应。服务器可能按 IP 地址、API 密钥、账号、Cookie 或端点统计请求。

返回该响应的通常是目标网站或 API,也可能是前置 CDN 或防火墙。如果只在使用代理时出现该错误,则可能是代理自身设置了连接数或账号配额限制。

HTTP/1.1 429 Too Many Requests
Retry-After: 60

Retry-After 表示客户端何时可以重试。其值可以是秒数,也可以是 HTTP 日期,但服务器不一定会返回该标头。其他配额和重置标头则因具体实现而异。

常见原因

  • 短时流量突增。 即使每天的请求总量不高,也可能有大量请求集中在很短时间内到达。
  • API 配额耗尽。 API 密钥或账号已用完每分钟、每日或计费套餐规定的额度。
  • 并发过高。 多个工作进程同时发送请求,超出端点的并行请求上限。
  • 共用源地址。 多个用户共用 NAT、VPN 或共享代理,发出的请求会累计到同一个基于 IP 的限额中。
  • 重试过于频繁。 请求失败后立即重试,导致出现更多 429 响应。

如何解决

  1. 暂停发送新请求。 继续保持相同的请求速率,可能会延长限速期。
  2. 遵守 Retry-After。 如果响应中没有该标头,应等待一段时间再测试,不要持续轮询。
  3. 限制速率和并发。 使用队列或令牌桶,让工作进程的请求量保持在规定额度以内。
  4. 采用带抖动的退避策略。 每次收到 429 后延长等待时间,并增加少量随机延迟。GET 等安全请求可自动重试;POST 请求则应使用 API 支持的幂等性机制加以保护。
  5. 减少请求量。 缓存结果、删除重复请求,或在 API 支持时批量调用。如需更高额度,应申请授权访问,不要更换身份。

类似的 HTTP 错误

状态码 含义 后续处理
429 Too Many Requests 客户端超出速率或配额 等待并减少请求量
403 Forbidden 服务器已理解请求,但拒绝处理 解决访问权限或策略问题
407 Proxy Authentication Required 代理拒绝了认证信息 修正代理用户名和密码

常见问题

429 错误会持续多久?

具体时长取决于限制规则。请遵守 Retry-After 或文档中规定的重置时间。如果两者都没有,应等待一段时间,再以较低速率恢复请求。

轮换代理能解决 429 错误吗?

不一定。IP 轮换会更改源 IP,但无法解决与 API 密钥、账号、Cookie 或全局配额关联的限制。不要使用轮换来规避网站明确规定的限制。

429 是否表示我的 IP 已被永久封禁?

不是。429 通常表示临时限速,而不是 IP 封禁。如果超过预计重置时间后请求仍然失败,请检查最新的状态码和响应标头。

相关术语

查看全部术语