如何在不属于您的站点上的浏览器中处理 WebSockets?

问题描述

我正在开发一个 Chrome 扩展程序,我希望能够处理数据,因为它们是通过我不拥有的网站上的 WebSocket 连接来的。 不知何故,我想挂上 .onmessage 事件,以便我可以在该站点上使用这些数据做一些事情。但我不知道如何挂钩这个事件。该网站使用 webpack 进行了缩小,并且没有可用于重用某些全局 websocket 对象的全局变量

我尝试过但没有奏效的方法

  1. 找到带有 websocket 连接的全局窗口变量(没有这样的变量)
  2. 通过分析开发人员工具中的“网络”选项卡,重现与服务器的连接。 (服务器没有响应代码 101,但本机 websocket 连接会。我认为服务器可能会阻止相同类型的第二个 websocket 通道)

这是我尝试重现连接的代码

var websocket;
createWebSocketConnection();

function createWebSocketConnection() {


    if('WebSocket' in window) {
        websocket = new WebSocket(host);
        console.log("======== websocket ===========",websocket);

        websocket.onopen = function() {
            websocket.send("o");
        };

        websocket.onmessage = function (event) {
            var received_msg = JSON.parse(event.data);
            console.log(received_msg)
        };

        websocket.onclose = function() { alert("==== web socket closed ======"); };
}
}

所以我认为最好的解决方案是连接到网站上的现有代码。 我在想,也许我可以重写原生的 WebSocket .onmessage 函数,这样它就可以做它应该做的事情,而且还会调用我的自定义函数?有没有更好的办法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)