Instagram速率限制标题,没有可预测的值

时间:2016-06-13 15:52:49

标签: instagram rate-limiting

根据文件:https://www.instagram.com/developer/limits/

限速控制在"时间滑动"窗口,问题是:

剩余呼叫HTTP标头(x-ratelimit-remaining)秒的增加频率是多少?分钟?,一小时?

阅读文档。 "现场应用程序每个令牌5000 /小时" (我们的公司已经上线了),我假设一个频率限制器,每秒或每分钟计算,但经过几天尝试不同的策略,价值似乎没有任何可扣除的行为。

可能的答案(取决于它的编码方式)可能是:

(像频率限制器一样的滑动窗口)

  • 它每720毫秒(3600'(1小时)/ 5000(剩余电话))增加1学分,直到达到5000时没有请求,否则它会衰减到0。 如果我们做1 req。在正确的频率下,我们永远不应该丢失5000个电话。所以我们可以在战略上花费它们:分散,杂乱,适应交通。

(每小时充电的有限水槽)

  • 剩下5000张,每次请求减1张信用 - 无论频率如何 - 自第一次请求过去1小时后:它回到5000

  • 由于令牌用于执行第一次请求,因此每1小时计数更新为5000次。

  • 每个请求可以减免1个积分,并且会在固定时间内达到5000,例如在12:00,13:00,14:00,15:00 ......

我使用的是jInstagram 1.1.7。

1 个答案:

答案 0 :(得分:0)

经过大量测试...... 我有一些临时的结论......

从5000开始,如果你以统一的速率(720ms / req)获取,你会在50分钟时达到500,那么Instagram将开始以低于500的分数给你信用。所以在60分钟你&#39剩下150个剩余电话,Instagram将给你另一个信用部分,一般达到500平均。然后再次下降......

如果你停止消费,就像30分钟的aprox。你将再获得5000个学分。

此外,他们还会为您提供5000个剩余电话,他们似乎有通过IP索引的计数器,如果您使用相同的凭据从不同的IP发出请求,他们就会忽略其他人。

除此之外,Instagram还有许多错误,它们为每个HTTP请求响应的x-ratelimit-remaining HTTP标头保持一致的值。 它看起来与某些重写相关,并且在复制最后一个值的服务器之间存在某种竞争。

对你的Instagram感到羞耻,我花了很多时间让我的酷限制算法适应你的错误行为,假设你有很好的工程设计!

请修理它们,这样我们就可以与你公平对待,而不是玩捉迷藏,隐形技巧..