如何破解YouTube JavaScript API以始终使用HTTP

How do I hack the YouTube JavaScript API to always use HTTP?

本文关键字:HTTP API JavaScript 何破解 破解 YouTube      更新时间:2023-09-26

我打算在播放视频时对网络流量进行测量。当然,这只有在视频通过HTTP而不是HTTPS传输时才有效。

然而,YouTube iframe API 总是切换到 HTTPS 下载,尽管我从 http:// 加载 API 并指定了一个带有 http:// 的 YouTube URL。可以使用此处的示例来测试播放器。如您所见,它总是切换到 https://videoplayback... ,这就是我想禁用的。

如何强制它使用 HTTP 而不是 HTTPS?这有点像相反的问题。我想这将归结为将某些功能黑客入侵当前的 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://"))
}

但我不知道在YTYT.Player对象的上下文中在哪里覆盖它,或者我什至可以这样做。

对于那些想知道这在服务器端是否是不可能的人:请注意,YouTube确实仅适用于HTTP。如果您没有登录YouTube并转到http://youtube.com,您的视频播放将使用HTTP,而不是HTTPS。

YouTube现在通过301重定向强制https。前段时间情况并非如此。重定向只是存储在 cookie 中的用户设置。

您可以尝试更改用户代理和/或测试 m.youtube.com 但流量测量可能不准确,因为它是不同的域和协议,并且 youtube 可以有不同的优先级。

在 Chrome 开发工具(左上角的手机图标)中更改用户代理非常简单。