高性能多协议代理服务,基于 WebSocket + Smux 多路复用实现网络流量转发。
-F 参数串联多个代理节点,构建多跳转发链路go build -o muxProxy main.go
muxProxy -L {监听地址} [-F {代理链节点}]...
参数说明:
| 参数 | 说明 | 示例 |
|---|---|---|
-L | 本地监听地址(必填) | s5://0.0.0.0:1081 |
-F | 代理链上游节点,可多次指定 | mws://proxy1:1081/ws |
# SOCKS5 代理(无认证)
./muxProxy -L "s5://0.0.0.0:1081"
# SOCKS5 代理(用户名密码认证)
./muxProxy -L "s5://user:pass@0.0.0.0:1081"
# SOCKS5 + 代理链转发
./muxProxy -L "s5://0.0.0.0:1081" -F "mws://proxy1:1081/ws"
# SOCKS5 + 多跳代理链
./muxProxy -L "s5://0.0.0.0:1081" -F "mws://hop1:1081/ws" -F "mws://hop2:1082/ws"
# 多路复用 WebSocket 服务端
./muxProxy -L "mws://0.0.0.0:1081/ws"
# 安全 WebSocket 服务端
./muxProxy -L "wss://0.0.0.0:1082/secure"
| 协议 | 说明 | 可用于 -L | 可用于 -F |
|---|---|---|---|
s5 | SOCKS5 代理 | ✅ | ❌ |
ws | WebSocket | ✅ | ✅ |
wss | 安全 WebSocket (TLS) | ✅ | ✅ |
mws | 多路复用 WebSocket (Smux) | ✅ | ✅ |
mwss | 安全多路复用 WebSocket (Smux + TLS) | ✅ | ✅ |
muxProxy 提供实例化 API,可嵌入到第三方 Go 项目中:
import "muxProxy/proxyPkg"
// 创建实例
p := proxyPkg.NewProxy()
// 设置代理链(可选,运行时可动态修改)
p.SetChain([]string{"mws://proxy1:1081/ws"})
// 启动监听
go p.Listen("s5://0.0.0.0:1081")
// 运行时切换代理链
p.SetChain([]string{"mws://proxy2:1082/ws"})
// 获取当前代理链
chain := p.GetChain()
// 优雅关闭
p.Close()
主要 API:
| 方法 | 说明 |
|---|---|
NewProxy() | 创建代理实例 |
SetChain([]string) | 设置代理链(仅允许 ws/wss/mws/mwss) |
GetChain() | 获取当前代理链副本 |
Listen(url) | 解析 URL 并启动服务 |
Close() | 优雅关闭所有服务和连接池 |
BuildChainHeader(...) | 构造链式二进制协议头(导出纯函数) |
muxProxy/ ├── main.go # 程序入口,CLI 参数解析(-L/-F) ├── configPkg/ # 配置结构定义 ├── copyPkg/ # 双向数据转发(32KB 内存池) ├── proxyPkg/ # 代理核心 │ ├── proxy.go # Proxy 结构体 + 公共 API │ ├── HandleConnectionProxy.go # 协议头解析 + 链式构造 + 连接管理 │ ├── socks5.go # SOCKS5 服务端 │ ├── cert.pem / key.pem # TLS 证书(嵌入编译) │ └── *_test.go # 自动化测试 ├── logconfig1.yaml # 日志配置 └── docs/ # 项目知识库
-L 启动指定协议的服务(SOCKS5 / WebSocket / 多路复用 WebSocket)-F),将目标信息封装为嵌套协议头,逐跳转发| 库 | 用途 |
|---|---|
| gorilla/websocket | WebSocket 协议 |
| xtaci/smux | 连接多路复用 |
| txthinking/socks5 | SOCKS5 协议 |
| cnb.cool/accbot/goTool | 日志 / 同步原语 / WS 封装 |
| rs/zerolog | 结构化日志 |
| natefinch/lumberjack | 日志轮转(10MB / 30天) |
./tem/logs/,目录需可写权限-F)仅支持 ws/wss/mws/mwss 协议