javascript - 即使我更改了 src 属性,视频仍然通过 https 加载?

标签 javascript ssl video

我写了一个小的 JS 代码,它将 src 属性 url 从 https 更改为 http。 我这样做是因为我的公司调整 SSL 流量以防止 SSTP 和 SSL 隧道到外部,这导致网页出现故障,特别是通过 https 提供的视频和流。 这是代码:

function changeSrc(){
var srclist = document.getElementsByTagName('source'); //find all source tags

for (var i = 0; i < srclist.length; i++) {
    src = srclist[i].getAttribute("src"); //get current https source
    newsrc = src.replace("https", "http"); //change https to http
    srclist[i].setAttribute("src", newsrc); // replace src attrib. with new url
}
}

这个函数运行得很好(作为一个 tampermonkey 扩展),但问题是视频仍然通过 https 播放,即使它们的 src 被改变了。
我怀疑可能是播放器记住了第一个视频 url(https 一个)并且在更改 url 之后,它需要某种刷新或缓冲并通过新的 http url 播放?
任何帮助将不胜感激。

最佳答案

不起作用,我不认为你可以用音频/视频标签来做到这一点

没有使用 tampermonkey 的经验,但使用了多年的 greasemonkey

但是我要问,为什么要把https改成http呢?

无论如何,您可能想要做的是从 DOM 中删除包含视频/音频的元素,更改已删除片段中的源 src,然后将视频/音频片段元素重新插入到它来自的位置

我认为这可能会像我描述的那样(未测试)

function changeSrc(){
    var mmlist = document.body.querySelectorAll('video,audio'); //find all video/audio tags

    for (var i=0; i<mmlist.length; i++) {
        var mm = mmlist[i];
        var par = mm.parentElement;
        var sib = mm.nextSibling;
        par.removeChild(mm);
        var srclist = mm.querySelectorAll('source');
        for (var j = 0; j < srclist.length; j++) {
            var src = srclist[j].getAttribute('src');
            var newsrc = src.replace("https", "http");
            srclist[j].setAttribute('src', newsrc);
        }
        // par.removeChild(mm); could do it here instead, maybe?
        par.insertBefore(mm, sib);
    }
}

老实说,你可能根本不需要删除音频/视频标签.. par.insertBefore(mm, sib) 可能就足够了

关于javascript - 即使我更改了 src 属性,视频仍然通过 https 加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514673/

相关文章:

javascript - 永远不会调用回调

javascript - 用于多台打印机的 Testcafe .presskey

python - 我想在 python 代码中添加 ssl 证书,但我不知道如何在代码中添加它

video - 来自多个文件的 FFmpeg hls

amazon-web-services - FFMPEG 转码的 AWS Lambda 执行时间

ios - Swift:视频以一种尺寸录制,但以错误的尺寸呈现

javascript - Electron 获胜.unmaximize();不工作

javascript - 如何解决 Google Chrome 中的 Roboto 字体加载问题?

java - 错误 :0c0890ba:ASN. 1 编码例程:asn1_check_tlen:WRONG_TAG

ssl - Arch 上的 Owncloud/Nginx - 无法访问站点