403.这是一个错误 - 超出速率限制这就是我们所知道的 - 来自YouTube数据API的图片

时间:2017-02-07 17:35:44

标签: limit youtube-data-api rate

我创建了一个网站,该网站使用YouTube数据API获取所选用户的YouTube数据。这对我来说一直很好,但流量现在处于嵌入YouTube图片不再100%稳固的水平。

我使用YouTube Data API V3获取YouTube横幅图片的图片网址,然后将其添加为现有<img>元素的src属性。

由于该网站拥有相当多的流量(大多数是500-3000个实时用户),因此当我的服务器向许多用户发送时,YouTube图像服务器(如此https://yt3.ggpht.com)开始返回403错误(图像)GET要求。错误如下所示:

  1. 这是一个错误。
  2. 您的客户端无权从此服务器获取URL https://yt3.ggpht.com/Xs3rhrNjuGoNnd6aXPdZqdfiOIp5EbvN9-PYSaP8xTY1cx6Ced5No6sHNZupNrQmsidY2W-X=w2560-fcrop64=1,00005a57ffffa5a8-nd-c0xffffffff-rj-k-no。 (客户端IP地址:xx.xx.xxx.xxx)

    超出速率限制这就是我们所知道的。

    从超出此限制的那一刻起,我的网站暂时没有显示图像(来自YouTube图像服务器),并且在x分钟后重置超出限制时,图像再次显示。我希望防止这种情况发生,因为YouTube禁令对我网站的用户体验非常重要。

    我的第一个问题:有人知道YouTube图片上此速率限制的确切数字是多少?在X时间内可以完成多少个请求?

    我的第二个问题:是否有人知道可以防止触发此错误的解决方案并仍向每位用户提供YouTube图片?

    我有一些自己的理论,但它们会对我的服务器产生很大的影响:

    • 由于速率限制绑定到IP地址,我可以使用某种负载均衡器在多个IP上运行我的网站。
    • 我第一次要求将图像保存到我的服务器作为缓存机制。当图像再次被请求时,我可以从我自己的服务器上提供它,这可以防止超出限制。为防止更新的YouTube图片无法显示,我必须每隔X小时删除一次图片。

    我宁愿不这样做,因为这两种理论都会对服务器负载产生重大影响。

    提前感谢您分享您的知识!

    彼得

1 个答案:

答案 0 :(得分:0)

我做了一些实验来更好地理解这个问题。

似乎YouTube图片服务器在referer(也可能在IP上)执行一种匹配,以限制来自外部环境的请求

据我所知,问题出在HTTP referer上。实际上,当您遇到403错误时,您可以尝试修改HTTP请求,更改referer,它就像魅力一样。

从技术角度来看,我认为通过Javascript进行此操作是不可能的,您可以设置代理来处理所有img个请求,并根据需要更改referer。缺点是所有请求都通过您的代理并来自相同的IP。

从YouTube政策的角度来看,我不知道这个解决方案是否合适。可能不会(为什么会出现这种限制?)。