pte*_*oor 5 rate-limiting youtube-data-api
我创建了一个网站,该网站使用 YouTube 数据 API 来获取所选用户的 YouTube 数据。这对我来说一直很有效,但现在的流量水平使得嵌入 YouTube 图像不再是 100% 可靠的。
\n我使用 YouTube 数据 API V3 获取 YouTube 横幅图像的图像 URL,然后将其添加为现有<img>元素的 src 属性。
由于该网站的流量相当高(主要是 500-3000 个实时用户),因此当我的服务器发送到许多(图像)时, YouTube 图像服务器(例如:https: //yt3.ggpht.com )开始返回 403 错误获取请求。错误看起来像这样:
\n您的客户端无权获取 URL https://yt3.ggpht.com/Xs3rhrNjuGoNnd6aXPdZqdfiOIp5EbvN9-PYSaP8xTY1cx6Ced5No6sHNZupNrQmsidY2W-X=w2560-fcrop64=1,00005a57ffffa5a8-nd-c0xffffffff-rj-k-没有来自该服务器。(客户端IP地址:xx.xx.xxx.xxx)
\n速率限制超出了我们所知道的\xe2\x80\x99s。
\n从超出此限制的那一刻起,我的网站一段时间内不会显示任何图像(来自 YouTube 图像服务器),并且在 x 分钟后,当重置超出的限制时,图像将再次工作。我想防止这种情况发生,因为 YouTube 横幅图像对于我网站的用户体验很重要。
\n我的第一个问题:有谁知道 YouTube 图片速率限制的确切数字是多少?X时间内可以完成多少个请求?
\n我的第二个问题:有谁知道一种解决方案可以防止触发此错误并仍然向每个用户提供 YouTube 图像?
\n我有一些自己的理论,但它们会对我的服务器产生很大影响:
\n我不想这样做,因为这两种理论都会对服务器负载产生很大影响。
\nCon*_*eid 14
您的两种理论都可以在实践中发挥作用,但正如您提到的,这需要大量工作。您可以将 添加referrerPolicy="no-referrer"到您的img标记中,它应该发出没有引用标头的请求,从而使请求不再返回 403。
我的假设是,您像我一样在具有流行端口的本地服务器上运行,并且 Google/Youtube 的图像服务器根据标头计算速率限制referrer(虽然这是一个非常糟糕的方法,但这似乎是基于图像请求之间的 HTTP 交互的逻辑)根据referer标题决定 200 VS 403)。这意味着访问 YouTube 频道徽标的每个人localhost:3000都将共享相同的速率限制,因为共享相同的referer标头值以及超出的速率限制。这只是我的理论,因为不可能知道 YouTube 在他们的后端做了什么。
我进行了一些实验以更好地理解这个问题。
YouTube 图像服务器似乎执行某种匹配referer(也可能在 IP 上)以限制来自外部环境的请求
据我了解,问题出在 HTTP 上referer。事实上,当您遇到 403 错误时,您可以尝试修改 HTTP 请求,更改referer,这就像一个魅力。
从技术角度来看,我认为通过 Javascript 不可能做到这一点,您可以设置一个代理来处理所有请求并根据需要img更改。referer缺点是所有请求都会通过您的代理并来自同一 IP。
从YouTube政策的角度来看,我不知道这个解决方案是否可行。可能不会(否则为什么会有这样的限制?)。
| 归档时间: |
|
| 查看次数: |
4350 次 |
| 最近记录: |