RubyGems 导航菜单
指南

为什么你看到 429 响应?

负载均衡器速率限制

为了保护 RubyGems.org 服务免受滥用(有意或无意),我们对某些端点实施了速率限制。某些端点可能有时会被我们的 CDN 缓存,因此 *可能* 允许更高的请求速率。以下是速率限制规则的一般指南。

  • API 和网站:每秒 10 个请求
  • 依赖项 API:每秒 15 个请求

应用程序速率限制

我们使用 rack-attack 来限制尝试对登录、注册和 MFA 端点进行暴力破解的客户端。此外,我们对发送电子邮件的端点进行速率限制,以防止滥用我们的付费电子邮件服务。当你达到应用程序速率限制之一时,你将在响应中看到 Retry-After 标头,其中包含速率限制重置之前的秒数。除非另有说明,所有速率限制都基于客户端 IP。

具有 100 个请求/10 分钟速率限制的端点

  • 用户登录 - POST /session
  • 用户注册 - POST /users
  • 密码重置请求 - POST /passwords
  • 个人资料更新 - PATCH /profile
  • 个人资料删除 - DELETE /profile
  • 电子邮件确认请求 - POST /email_confirmations

带指数回退的速率限制

无法在单个时间窗口内暴力破解您的 MFA 代码。但是,如果攻击者在较长时间内尝试暴力破解,则其成功猜测代码至少一次的可能性会增加。您可以阅读更多关于此的信息 这里 并查看我们对回退周期的计算 这里。以下端点具有 **300 个请求/5 分钟** 和 **600 个请求/25 小时** 的速率限制

  • 登录时的 OTP 验证 - POST /session/mfa_create
  • 密码重置时的 OTP 验证 - POST /users/:user_id/password/mfa_edit
  • 注册新的 MFA 设备 - POST /multifactor_auth
  • 更新或禁用 MFA 级别 - PUT /multifactor_auth
  • 撤回宝石 - DELETE /api/v1/gems/yank
  • 添加所有者 - POST /api/v1/gems/:rubygem_id/owners
  • 删除所有者 - DELETE /api/v1/gems/:rubygem_id/owners
  • 显示 API 密钥 (gem signin) - GET /api/v1/api_key

宝石推送速率限制

POST /api/v1/gems 具有以下两个速率限制

  • 400 个请求/1 小时
  • 300 个请求/5 分钟和 600 个请求/25 小时,针对 *失败的请求*(响应状态不等于 200)。

其他速率限制

  • 宝石撤回 10 个请求/10 分钟 - DELETE /api/v1/gems/yank
  • 登录 100 个请求/10 分钟/电子邮件或用户名 - POST /session
  • 显示 API 密钥 100 个请求/10 分钟/电子邮件或用户名 - GET /api/v1/api_key
  • 密码重置请求 10 个请求/10 分钟/电子邮件 - POST /passwords
  • 电子邮件确认请求 10 个请求/10 分钟/电子邮件 - POST /email_confirmations

RubyGems.org 团队可能会偶尔将用户 IP 地址列入黑名单,以应对极端情况,保护平台安全。如果您认为这种情况发生在您身上,请发送邮件至 [email protected],我们将很乐意查看情况。