如何暂时禁用Google Chrome中的websocket?

Cyg*_*gan 40 google-chrome websocket

我想暂时禁用Google Chrome中的websocket来调试javascript,以确保它适用于没有websocket支持的任何浏览器.

Mik*_*est 21

首先,我要说有更好的机制来测试你在无网页环境中的JavaScript.例如,你可以在IE9中运行你的JavaScript,它没有实现协议.如果这更像你的风格,它们在Firefox 4中仍然暂时被禁用.

假设有一个很好的理由需要在无网页Chromium中进行测试,我认为你运气不好.在Chromium中禁用WebSockets没有一个简单的机制.它不是作为命令行开关内置的,也没有可配置的标志.由于没有机制让这种情况本身发生,我不建议花时间测试这种情况.您的用户使用的每个版本的Chromium(例如9+)都启用了websockets.

总而言之,如果你真的需要禁用websockets,那么在不重新编译浏览器的情况下最接近的就是删除测试代码中的相关变量:

WebSocket = undefined;
Run Code Online (Sandbox Code Playgroud)

会相对蛮力,但应该工作.您甚至可以创建一个扩展,将JavaScript注入您访问的每个页面,以获得真正无websocket的体验(再次假设,这对您的用例来说有点宝贵).

  • 让websockets"支持"并让它们"正常工作"并不是一回事.支持ws的浏览器会退回到另一个传输上有多种原因.想要在Chromium上测试这种情况并非毫无用处. (19认同)
  • / Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome --disable-web-socket (18认同)
  • 使用http://demos.kaazing.com/echo/进行测试时,使用Chrome 61 for Windows`-- disable-web-socket`的FYI无法正常工作 (3认同)

csa*_*ato 14

在看到 @user3661841对另一个问题的回答后,我创建了一个 GreaseMonkey/TamperMonkey 脚本,它允许您以类似的方式禁用 WebSockets。

以下是基于 Chromium 的浏览器(Chrome、Brave、Sidekick 等)的说明:

  1. 从 Chrome 商店下载TamperMonkey 扩展程序
  2. 从 GreasyFork安装此脚本。默认情况下,安装此脚本将禁用您访问的每个站点上的 WebSockets。如果您不想立即阻止 WebSocket,请单击 TamperMonkey 图标和切换开关以禁用阻止。
  3. 当您想要关闭 WebSockets 时,请单击 TamperMonkey 图标和切换开关以启用阻止。刷新页面。
  4. 当您不想再阻止 WebSocket 时,请禁用该脚本。

这是您要单击以禁用/启用 WebSocket 阻止的开关:

在此输入图像描述

注意 1:您应该能够在控制台中看到输出,标记 WebSocket 连接已尝试打开,但被阻止。

注意 2:当您完成禁用 WebSockets 进行开发时,请确保禁用此功能。如果您只使用 TamperMonkey 来禁用 WebSocket,您会希望 TamperMonkey 大多数时候看起来像这样:

不测试时篡改猴子

当你想阻止时就像这样:

测试时的篡改猴


Deb*_*dez 7

我能够用Fiddler阻止WebSockets .

在Fiddler菜单中转到规则/自定义规则....

将此代码添加到类处理程序(我将其放在现有的RulesOption项之后):

    // Block Websockets
public static RulesOption("Block Websockets")
BindPref("fiddlerscript.rules.BlockWebsockets")
var m_BlockWebsockets: boolean = false; 
Run Code Online (Sandbox Code Playgroud)

在OnBeforeRequest中添加此代码:

    if (m_BlockWebsockets && oSession.oRequest.headers.Exists("Connection") && oSession.oRequest["Connection"] == "Upgrade") {
                oSession.oRequest.FailSession(502, "Blocked", "Fiddler blocked websocket connection");
                return;
            }
Run Code Online (Sandbox Code Playgroud)

这会在"规则"菜单中添加一个菜单选项" 阻止Websockets ".切换时,应根据Connection:Upgrade标头阻止ws连接.