2 个不稳定版本
0.2.0 | 2021年9月13日 |
---|---|
0.1.0 | 2021年9月12日 |
#8 在 #netcat
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