You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行连接Node.js WebSocket并发送数据?wscat报错求助

解决WebSocket连接报错"invalid server key"的问题

首先,你遇到的invalid server key错误,核心原因是手动指定了Sec-WebSocket-Key请求头——wscat这类WebSocket客户端会自动生成符合规范的密钥来完成握手流程,你手动设置的固定密钥和服务器端的验证逻辑不匹配,导致握手失败。

下面是正确的操作步骤:

1. 简化wscat连接命令

你不需要手动添加那些WebSocket握手相关的请求头(Host、Connection、Upgrade、Sec-WebSocket-Key、Sec-WebSocket-Version),wscat会自动处理这些握手细节。直接用下面的命令连接服务器:

wscat -c ws://localhost:8000/proxy

如果你的服务器要求特定的Host头,可以只保留-H "Host:localhost.localdomain.com",其他握手头全部去掉:

wscat -c ws://localhost:8000/proxy -H "Host:localhost.localdomain.com"

2. 发送数据的正确方式

连接成功后,你会进入wscat的交互模式,直接输入要发送的JSON数据即可:

{"type":"auth","params":{"site_key":{"IF_EXCLUSIVE_TAB":"ifExclusiveTab","FORCE_EXCLUSIVE_TAB":"forceExclusiveTab","FORCE_MULTI_TAB":"forceMultiTab","CONFIG":{"LIB_URL":"https://localhost.localdomain.com/lib/","WEBSOCKET_SHARDS":[["wss://localhost.localdomain.com/proxy"]]},"CRYPTONIGHT_WORKER_BLOB":"blob:https://localhost.localdomain.com/54f39ac6-5c2a-4ff1-8052-c4e0e508034c"},"type":"anonymous","user":null,"goal":0}}

或者,你也可以用-x参数直接在命令行发送数据(不需要进入交互模式):

wscat -c ws://localhost:8000/proxy -H "Host:localhost.localdomain.com" -x '{"type":"auth","params":{"site_key":{"IF_EXCLUSIVE_TAB":"ifExclusiveTab","FORCE_EXCLUSIVE_TAB":"forceExclusiveTab","FORCE_MULTI_TAB":"forceMultiTab","CONFIG":{"LIB_URL":"https://localhost.localdomain.com/lib/","WEBSOCKET_SHARDS":[["wss://localhost.localdomain.com/proxy"]]},"CRYPTONIGHT_WORKER_BLOB":"blob:https://localhost.localdomain.com/54f39ac6-5c2a-4ff1-8052-c4e0e508034c"},"type":"anonymous","user":null,"goal":0}}'

3. 额外调试建议

为了更清楚地看到连接和数据交互情况,你可以在服务器的connection事件回调里添加日志,比如:

srv.on('connection', (ws) => {
  console.log('新客户端连接');
  var conn = {
    uid: null,
    pid: crypto.randomBytes(12).toString("hex"),
    workerId: null,
    found: 0,
    accepted: 0,
    ws: ws,
    pl: new net.Socket(),
  };
  // 监听客户端发送的数据
  ws.on('message', (data) => {
    console.log('收到客户端数据:', data.toString());
  });
  ws.on('close', () => {
    console.log('客户端断开连接');
  });
});

这样可以确认服务器是否收到了你的请求,方便进一步排查问题。

内容的提问来源于stack exchange,提问作者satish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:59:28