2 个不稳定版本

0.2.0 2021年9月13日
0.1.0 2021年9月12日

#8#netcat

MIT 协议

9KB
128 代码行

webcat - WebSocket 的 netcat

连接到 WebSocket 服务器

webcat ws://example.com:3000/

在端口 3000 上启动一个监听 WebSocket 服务器

webcat -l 3000

服务器一次只接受一个客户端。客户端会自动重新连接。

设置 MITM 调试代理

通过重定向 webcat 的标准输入/输出流,您可以将其转换为中间人代理,这对于在 WebSocket 上调试有状态的协议特别有用。

[some client] <-> [webcat server] <-> [webcat client] <-> [some server]
                                 FIFOs

设置此代理只需要四个命令,例如

mkfifo client-in server-in
webcat ws://example.com:3000/ < client-in > server-in
webcat -l 4000 < server-in > client-in
echo > server-in # unblock the FIFO deadlock

现在,您可以将您的客户端连接到 ws://localhost:4000/ 并通过写入命名管道来注入消息

echo "Hello from webcat" > client-in

Webcat 使用两个技巧使此设置更加方便

  • 当重定向 stdout 时,消息将自动打印到 stderr,因此您仍然可以观察到正在发生的事情。

  • 当客户端识别到服务器输出 accepted new client 时,它会自动断开连接并重新连接其服务器连接,以防止有状态的应用程序协议不同步。

限制

  • 不支持二进制消息

  • 不支持包含换行符的消息(无法发送它们,也无法将它们区分开来作为单独的消息)

  • 不支持 WebSocket 安全连接(wss://)(webcat 用于本地测试和调试,wss 不在范围内)

依赖关系

~6–16MB
~218K SLoC