如何破解 YouTube JavaScript API 以始终使用 HTTP?
How do I hack the YouTube JavaScript API to always use HTTP?
我打算在播放视频时测量网络流量。这当然只有在视频通过 HTTP 而不是 HTTPS 传输时才有效。
尽管我从 http://
加载 API 并使用 http://
指定 YouTube URL,但 YouTube iframe API 总是切换到 HTTPS 下载也。您可以使用 example here 来测试播放器。如您所见,它总是切换到 https://videoplayback...
,这是我想要禁用的。
如何强制它使用 HTTP 而不是 HTTPS?这有点像 inverse question of this。我想这将归结为将一些功能入侵到当前的 JS 中。
在小部件中 API 我可以看到这样的调用:
b = 0 == c.indexOf("https:") ? [c] : b.d ? [c.replace("http:", "https:")] : b.k ? [c] : [c, c.replace("http:", "https:")];
和
if (this.d = !!("https:" == document.location.protocol || a && 0 == a.src.indexOf("https:"))) {
a = [this.j, window.YTConfig || {}, this.defaults];
for (var b = 0; b < a.length; b++) a[b].host && (a[b].host = a[b].host.replace("http://", "https://"))
}
但我不知道在 YT
和 YT.Player
对象的上下文中在哪里覆盖它,或者我是否可以这样做。
对于那些想知道这在服务器端是否不可能的人:请注意,YouTube 确实 仅适用于 HTTP。如果您没有登录 YouTube 并转到 http://youtube.com
,您的视频播放将采用 HTTP,而不是 HTTPS。
YouTube 现在通过 301 重定向强制使用 https。前段时间情况并非如此。重定向只是存储在 cookie 中的用户设置。
您可以尝试在 m.youtube.com 上更改您的用户代理 and/or 测试,但流量测量可能不准确,因为它的域和协议不同,而且 youtube 可以有不同的优先级。
在 Chrome 开发工具中更改用户代理很简单(phone 图标在左上角)。
我打算在播放视频时测量网络流量。这当然只有在视频通过 HTTP 而不是 HTTPS 传输时才有效。
尽管我从 http://
加载 API 并使用 http://
指定 YouTube URL,但 YouTube iframe API 总是切换到 HTTPS 下载也。您可以使用 example here 来测试播放器。如您所见,它总是切换到 https://videoplayback...
,这是我想要禁用的。
如何强制它使用 HTTP 而不是 HTTPS?这有点像 inverse question of this。我想这将归结为将一些功能入侵到当前的 JS 中。
在小部件中 API 我可以看到这样的调用:
b = 0 == c.indexOf("https:") ? [c] : b.d ? [c.replace("http:", "https:")] : b.k ? [c] : [c, c.replace("http:", "https:")];
和
if (this.d = !!("https:" == document.location.protocol || a && 0 == a.src.indexOf("https:"))) {
a = [this.j, window.YTConfig || {}, this.defaults];
for (var b = 0; b < a.length; b++) a[b].host && (a[b].host = a[b].host.replace("http://", "https://"))
}
但我不知道在 YT
和 YT.Player
对象的上下文中在哪里覆盖它,或者我是否可以这样做。
对于那些想知道这在服务器端是否不可能的人:请注意,YouTube 确实 仅适用于 HTTP。如果您没有登录 YouTube 并转到 http://youtube.com
,您的视频播放将采用 HTTP,而不是 HTTPS。
YouTube 现在通过 301 重定向强制使用 https。前段时间情况并非如此。重定向只是存储在 cookie 中的用户设置。
您可以尝试在 m.youtube.com 上更改您的用户代理 and/or 测试,但流量测量可能不准确,因为它的域和协议不同,而且 youtube 可以有不同的优先级。
在 Chrome 开发工具中更改用户代理很简单(phone 图标在左上角)。