我创建了一个网站,该网站使用YouTube数据API获取所选用户的YouTube数据。这对我来说一直很好,但流量现在处于嵌入YouTube图片不再100%稳固的水平。
我使用YouTube Data API V3获取YouTube横幅图片的图片网址,然后将其添加为现有<img>
元素的src属性。
由于该网站拥有相当多的流量(大多数是500-3000个实时用户),因此当我的服务器向许多用户发送时,YouTube图像服务器(如此https://yt3.ggpht.com)开始返回403错误(图像)GET要求。错误如下所示:
您的客户端无权从此服务器获取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图片?
我有一些自己的理论,但它们会对我的服务器产生很大的影响:
我宁愿不这样做,因为这两种理论都会对服务器负载产生重大影响。
提前感谢您分享您的知识!
彼得
答案 0 :(得分:0)
我做了一些实验来更好地理解这个问题。
似乎YouTube图片服务器在referer
(也可能在IP上)执行一种匹配,以限制来自外部环境的请求
据我所知,问题出在HTTP referer
上。实际上,当您遇到403错误时,您可以尝试修改HTTP请求,更改referer
,它就像魅力一样。
从技术角度来看,我认为通过Javascript进行此操作是不可能的,您可以设置代理来处理所有img
个请求,并根据需要更改referer
。缺点是所有请求都通过您的代理并来自相同的IP。
从YouTube政策的角度来看,我不知道这个解决方案是否合适。可能不会(为什么会出现这种限制?)。