首页 > 开发 > Python > 正文

关于豆瓣API 40次/分钟的访问限制

2017-09-06 19:39:15  来源:网友分享

大家好,目前我在弄个豆瓣的网页应用。遇到些问题
Q1:
40次/分钟 是针对一组特定的(IP, APIKEY)还是只针对IP
比如在
IP_A上(APIKEY1, IP_A)上被返回403了之后
IP_B上(APIKEY1, IP_B)上是否 继续使用
因为如果是弄网页应用的话,服务器固定IP 明显40次/分钟的限制是不够的,40访问者就够呛了
Q2:
每分钟40/次的API访问限制具体是如何进行判断的?
因为我有自己的调度算法,通过日志上观察 每分钟的访问次数还是不超过四十次的.
我的理解是这样
在时间
0(s) 进行第1次访问
....
....
60(s)之内进行了n次访问(n <= 40)
那么在第61~120秒的时间内, 应该又能最多够进行40次访问。(我的理解)

是这样么?
因为我的日志显示,在当前的调度算法内是不会超额访问API的,但实际上却返回了403.

希望得到高手的解答,谢谢!

解决方案

一般做访问请求数限制是不会实时计算的,那样消耗太大,得不偿失。所以你在问题中提到的第60秒的问题不存在,如果是我不会这么来精确计算。

下面只是来介绍下怎么做请求数限制,比较土一点的办法是这样,应用服务和访问控制是两个完全独立的服务,应用服务只会在第三方服务请求时记录下日志,这时另外一个访问控制服务会实时监听这个日志,并记录下每个ip的访问情况。它会每段时间算个平均值,所以你算的跟它算的是不一样的。如果你超过某个限制,它就会ban掉你。

另外虽然豆瓣对每个api的请求数有明文规定,但是针对单个ip的请求数大多数提供api的服务商都是有限制的,这是基于服务器本身安全的需要。

建议你如果无法得到豆瓣的商务支持,那么只能自己做一做缓存了。