标签: rate-limiting

HTTP API速率限制HTTP响应标头的示例

其中一个附加HTTP状态代码(RFC6585)是

在哪里可以找到对此HTTP响应状态有用的HTTP/REST API速率限制HTTP响应头的示例?

api rest http rate-limiting http-status-code-429

73
推荐指数
2
解决办法
5万
查看次数

如何限制API的速率

限制API请求的最佳方法是什么?基本上,我们希望每小时将用户限制为360个API请求(每10秒一次请求).我们想到的是跟踪每个API请求并存储:

  ip-address          hourly-requests
  1.2.3.4             77
  2.3.4.5             34
  3.4.5.6             124
Run Code Online (Sandbox Code Playgroud)

如果ip-address请求大于360,只需返回一个标头:

  429 - Too Many Requests
Run Code Online (Sandbox Code Playgroud)

然后每小时回滚计数器每小时请求.这似乎是一种非常低效的方法,因为我们必须在每个API请求上进行MySQL查询以增加计数器.此外,我们需要一个cron任务来每小时重置所有计数器.

有更优雅/高效的解决方案吗?

api rate-limiting

55
推荐指数
5
解决办法
4万
查看次数

安全规则中的Firebase速率限制?

我启动了我的第一个开放式存储库项目EphChat,人们立即开始充斥它的请求.

Firebase是否有办法对安全规则中的限制请求进行评级?我假设有一种方法可以使用请求的时间和先前写入的数据的时间,但在文档中找不到有关如何执行此操作的任何内容.

目前的安全规则如下.

{
    "rules": {
      "rooms": {
        "$RoomId": {
          "connections": {
              ".read": true,
              ".write": "auth.username == newData.child('FBUserId').val()"
          },
          "messages": {
            "$any": {
            ".write": "!newData.exists() || root.child('rooms').child(newData.child('RoomId').val()).child('connections').hasChild(newData.child('FBUserId').val())",
            ".validate": "newData.hasChildren(['RoomId','FBUserId','userName','userId','message']) && newData.child('message').val().length >= 1",
            ".read": "root.child('rooms').child(data.child('RoomId').val()).child('connections').hasChild(data.child('FBUserId').val())"
            }
          },
          "poll": {
            ".write": "auth.username == newData.child('FBUserId').val()",
            ".read": true
          }
        }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想对整个Rooms对象的db进行速率限制写入(和读取?),因此每秒只能生成1个请求(例如).

谢谢!

rate-limiting firebase firebase-security firebase-realtime-database

30
推荐指数
1
解决办法
8546
查看次数

为Web请求实施速率限制算法的最佳方法是什么?

可能/部分重复:

我正在寻找为Web应用程序实现移动时间窗口速率限制算法的最佳方法,以减少垃圾邮件或暴力攻击.

使用的示例是"在过去5分钟内来自给定IP的最大失败登录尝试次数","最近N分钟内的最大((帖子/投票/等等)...").

我宁愿使用移动时间窗口算法,而不是每X分钟重新统计一次(比如twitter api).

这将是一个C#/ ASP.Net应用程序.

c# asp.net algorithm throttling rate-limiting

27
推荐指数
3
解决办法
2万
查看次数

限制/限制GRequests中的HTTP请求速率

我正在使用GRequests和lxml 在Python 2.7.3中编写一个小脚本,这将允许我从各个网站收集一些可收集的卡片价格并进行比较.问题是其中一个网站限制了请求数量,如果我超过它,则发回HTTP错误429.

有没有办法在GRequestes中添加限制请求的数量,这样我就不会超过我指定的每秒请求数?另外 - 如果发生HTTP 429,我怎样才能使GRequestes在一段时间后重试?

在旁注 - 他们的限制是非常低的.每15秒就有8个请求.我在浏览器中多次破坏它只是刷新页面等待价格变化.

python throttling http rate-limiting python-requests

23
推荐指数
2
解决办法
1万
查看次数

如何使用Redis实现速率限制

我使用INCREXPIRE实现速率限制(对于下面的示例,每分钟只允许5个请求):

if EXISTS counter
    count = INCR counter
else
    EXPIRE counter 60
    count = INCR counter

if count > 5
    print "Exceeded the limit"    
Run Code Online (Sandbox Code Playgroud)

但是存在一个问题,即人们可以在最后一秒发送5个请求,在下一分钟发送5个其他请求,换句话说,在两秒钟内发出10个请求.

有没有更好的方法来避免这个问题?


更新:我刚才提出了一个想法:使用列表来实现它.

times = LLEN counter
if times < 5
    LPUSH counter now()
else
    time = LINDEX counter -1
    if now() - time < 60
        print "Exceeded the limit"
    else
        LPUSH counter now()
LTRIM counter 5
Run Code Online (Sandbox Code Playgroud)

这是一个好方法吗?

rate-limiting redis

20
推荐指数
2
解决办法
1万
查看次数

AWS Lambda TooManyRequestsException:超出率

当尝试执行Amazon Web Services(AWS)Lambda函数(多次)时,我们看到了错误:

AWS Lambda TooManyRequestsException: Rate Exceeded

我们如何解决这个问题?

rate-limiting amazon-web-services node.js aws-lambda serverless

17
推荐指数
1
解决办法
1万
查看次数

如何在Spring中基于客户端令牌实现速率限制?

我正在使用Spring 3 + Spring MVC开发一个简单的REST API.使用Spring Security通过OAuth 2.0或基本身份验证与客户端令牌进行身份验证.这仍然存在争议.将强制所有连接通过SSL连接.

我一直在寻找有关如何实现速率限制的信息,但似乎并没有很多信息.实现需要分发,因为它适用于多个Web服务器.

例如,如果有三个api服务器A,B,C和客户端每秒限制为5个请求,则发出6个请求的客户端会发现对C的请求被拒绝并出现错误.

A recieves 3 requests   \
B receives 2 requests    | Executed in order, all requests from one client.
C receives 1 request    /
Run Code Online (Sandbox Code Playgroud)

它需要基于请求中包含的令牌工作,因为一个客户端可能代表许多用户发出请求,并且每个用户应该是速率限制而不是服务器IP地址.

设置将是HAProxy负载均衡器后面的多个(2-5)Web服务器.有一个Cassandra支持,并使用memcached.Web服务器将在Jetty上运行.

一个可能的解决方案可能是编写一个自定义Spring Security过滤器,该过滤器提取令牌并检查在过去的X秒内使用它进行了多少次请求.这将允许我们为不同的客户做一些不同的速率限制.

有关如何做到的任何建议?有现成的解决方案还是我必须编写自己的解决方案?我以前没有做过很多网站基础设施.

java spring spring-security rate-limiting oauth-2.0

16
推荐指数
1
解决办法
8465
查看次数

iTunes Search API速率限制

我计划使用iTunes Search API获取应用相关信息 - http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

想知道API使用是否有任何预定义的速率/节流限制.在他们的Documentation/Stack/Google中找不到与此相关的任何信息.

有没有人有这方面的信息?

rate-limiting itunes-store itunes-search-api

15
推荐指数
3
解决办法
8387
查看次数

如何实现分布式限速器?

比方说,我让P进程在N台物理机上运行一些业务逻辑.例如,这些进程调用了一些Web服务S. 我想确保所有P进程组合的每秒服务S的调用不超过10次.

如何实施这样的解决方案?

Google Guava的速率限制器适用于在单个机箱上运行的进程,但不适用于分布式设置.

JAVA有哪些标准的,随时可用的解决方案?[可能基于zookeeper]

谢谢!

distributed-computing rate-limiting guava apache-zookeeper apache-curator

14
推荐指数
2
解决办法
7162
查看次数