Brave Browser Shields 阻止了我的 Websocket

Brave Browser Shields blocking my Websocket

我遇到了一个恼人的问题,我一直在尝试在线搜索解决方案,但没有成功(如果我遗漏了什么,很高兴能找到资源)。

总结

我的问题特别与 Brave 网络浏览器有关,它的本机 'Brave Shield' 阻塞了我的后端网络套接字,我怀疑这是由于 'fingerprinting'。

在所有其他浏览器上,我的网站将加载,并且可以毫无问题地连接到我的后端 websocket。但是,在打开 Brave Browser 和 Brave Shield 的情况下 - 客户端拒绝连接到我的 websocket,并且控制台中没有显示任何错误来指示问题。

我还有其他第 3 方网络套接字 运行,无论 Brave Shield 是否打开,它们似乎都能完美运行 - 让我相信这可能与我创建的方式有关我的网络套接字服务器?

网址:https://bitcoindashy.com 这与显示在 'rekt' 和 'chat' 选项卡下的数据有关。

我的代码(服务器)

const https = require('https');
const {server} = require('ws');
const app = require(./app.js);  // <-- app.js holds my express() server.

//ssl info//
const privateKey  = fs.readFileSync(*omitted for privacy*)
const certificate = fs.readFileSync(*omitted for privacy*)
const credentials = {*omitted for privacy*}

const server = https.createServer(credentials, app).listen(PORT, () => {
  console.log(`listening on port ${PORT}...`);
}

const wss = new Server({server}, {clientTracking: false});

我的代码(客户端)

const serverAddress = '***';
let liqWs = new WebSocket(serverAddress);

...
liqWs.onopen = (e) => console.log('testing for open') //<-- For testing

liqWs.onmessage = (e) => { *do something with the message* }

我试过的

  1. 尝试测试 Web 套接字连接并在 Brave Sheild 打开和关闭的两种情况下查看 'network' 选项卡。
  1. 尝试使用 Brave Shield 设置,看看具体是什么阻止了我的连接。
  1. 考虑到以上几点,Brave Browser 似乎由于指纹识别而阻止了我的 websocket。 Brave 认为我的 websocket 可能被用来跟踪用户,因此阻止了连接。
  1. 如果您看一下我上面的客户端代码片段 - 我添加了一个 .onopen 事件侦听器,纯粹是为了测试。

我想其他人以前也遇到过这个问题。一种解决方法是禁用 Brave Shield,但这不是一个可行的解决方案,因为我网站的访问者不必这样做,并且看到 Brave Shield 默认启用,这是一个很大的不便。

如果我遗漏了任何重要信息,请告诉我。

如果以后有人遇到这种情况 - 问题是我打开的 WebSockets 超过了 Brave Shield 开启时允许的数量,特别是指纹阻止。 Brave 的团队很快发现了与我的代码无关的问题。

当限制为 10 时,我同时打开 14 个 websockets。Brave 在即将发布的版本中将此限制增加到 30 (1.40.x)。