gpt4 book ai didi

IP 的 API 速率限制

转载 作者:可可西里 更新时间:2023-11-01 17:10:58 25 4
gpt4 key购买 nike

我正在查看速率限制是如何完成的,似乎很多 API(包括 StackOverflow v1 API)都通过 IP 进行速率限制或将 API key 限制为在特定域上使用。这是如何可靠地完成的?

当我查看由 XHR 生成的对我的 API 的请求时,它有一个引荐来源网址(通常)和一个远程地址。我认为远程地址很有希望,但看起来这是使用该网站的用户的地址,而不是发出请求的网站的地址。引荐来源网址看起来并不总是发送,但我想当它在那里时,可以查找与服务器对应的 IP。

我的观点是:这一定是可能的,因为一些知名人士这样做了;他们是怎么做到的?

最佳答案

在欺诈领域,这些被称为速度控制,在流量管理中,它类似于“流量整形”。基本上,您在每段时间允许有限的使用,例如,您可能只允许 10 个请求/分钟/IP 地址。

对于每个“请求”,确定远程地址(C 中的 getpeername())此函数将始终是远程用户的 ip 地址。然后简单地计算每个时间段有多少请求被处理,如果你超过限制,就做任何事情。在伪代码中

Get block for remote ip
If time-now is new window, then reset usage to zero
Add one to usage count
If usage > allowance then .....
Else if usage > allowance*0.75 then slow-down
Else ok

虽然我展示了一个周期,但大多数实现通常在多个周期内取平均值,例如一小时内的每分钟等。它们也倾向于允许突发负载并且仅限制持续负载,但这取决于您希望的配置文件允许。

如果这是针对 API,通常只是减慢请求速度而不是提供硬错误。无法保证另一端的客户端会处理该错误。如果是用户屏幕,则可以显示超出限制。

当然,您可以通过任何您希望的维度进行限制,IP 地址、引用、浏览器类型!、pageurl、cookie。如果您使用的是 getpeername,请注意,如果多个并发用户在公共(public)专用路由器后面,则他们都可以拥有相同的远程 IP 地址。

关于IP 的 API 速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com