指南
为什么你看到 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],我们将很乐意查看情况。