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* }
我试过的
- 尝试测试 Web 套接字连接并在 Brave Sheild 打开和关闭的两种情况下查看 'network' 选项卡。
当 Brave Shield 关闭时,出现连接并且 returns 状态代码 101 - 一切正常。
当 brave shield 开启时,连接根本不会出现在网络选项卡中 - 因此无法查看状态代码。
- 尝试使用 Brave Shield 设置,看看具体是什么阻止了我的连接。
- 我发现当我允许指纹识别时,可以建立连接并且网站可以按预期检索数据。
- 考虑到以上几点,Brave Browser 似乎由于指纹识别而阻止了我的 websocket。 Brave 认为我的 websocket 可能被用来跟踪用户,因此阻止了连接。
- 因此,在我的代码中,我尝试了以下操作:
const wss = new Server({server}, {clientTracking: false});
。正如 ws 文档所述,clientTracking 选项允许我指定我是否希望跟踪用户。这仍然没有用。
- 如果您看一下我上面的客户端代码片段 - 我添加了一个 .onopen 事件侦听器,纯粹是为了测试。
- 当 Brave Shield 关闭时,控制台日志 'testing for open' 将按预期记录。
- 当 Brave Shield 开启时,没有控制台日志 - 考虑到这一点,我知道 websocket 根本没有打开。
我想其他人以前也遇到过这个问题。一种解决方法是禁用 Brave Shield,但这不是一个可行的解决方案,因为我网站的访问者不必这样做,并且看到 Brave Shield 默认启用,这是一个很大的不便。
如果我遗漏了任何重要信息,请告诉我。
如果以后有人遇到这种情况 - 问题是我打开的 WebSockets 超过了 Brave Shield 开启时允许的数量,特别是指纹阻止。 Brave 的团队很快发现了与我的代码无关的问题。
当限制为 10 时,我同时打开 14 个 websockets。Brave 在即将发布的版本中将此限制增加到 30 (1.40.x)。
我遇到了一个恼人的问题,我一直在尝试在线搜索解决方案,但没有成功(如果我遗漏了什么,很高兴能找到资源)。
总结
我的问题特别与 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* }
我试过的
- 尝试测试 Web 套接字连接并在 Brave Sheild 打开和关闭的两种情况下查看 'network' 选项卡。
当 Brave Shield 关闭时,出现连接并且 returns 状态代码 101 - 一切正常。
当 brave shield 开启时,连接根本不会出现在网络选项卡中 - 因此无法查看状态代码。
- 尝试使用 Brave Shield 设置,看看具体是什么阻止了我的连接。
- 我发现当我允许指纹识别时,可以建立连接并且网站可以按预期检索数据。
- 考虑到以上几点,Brave Browser 似乎由于指纹识别而阻止了我的 websocket。 Brave 认为我的 websocket 可能被用来跟踪用户,因此阻止了连接。
- 因此,在我的代码中,我尝试了以下操作:
const wss = new Server({server}, {clientTracking: false});
。正如 ws 文档所述,clientTracking 选项允许我指定我是否希望跟踪用户。这仍然没有用。
- 如果您看一下我上面的客户端代码片段 - 我添加了一个 .onopen 事件侦听器,纯粹是为了测试。
- 当 Brave Shield 关闭时,控制台日志 'testing for open' 将按预期记录。
- 当 Brave Shield 开启时,没有控制台日志 - 考虑到这一点,我知道 websocket 根本没有打开。
我想其他人以前也遇到过这个问题。一种解决方法是禁用 Brave Shield,但这不是一个可行的解决方案,因为我网站的访问者不必这样做,并且看到 Brave Shield 默认启用,这是一个很大的不便。
如果我遗漏了任何重要信息,请告诉我。
如果以后有人遇到这种情况 - 问题是我打开的 WebSockets 超过了 Brave Shield 开启时允许的数量,特别是指纹阻止。 Brave 的团队很快发现了与我的代码无关的问题。
当限制为 10 时,我同时打开 14 个 websockets。Brave 在即将发布的版本中将此限制增加到 30 (1.40.x)。