一个功能强大的 Go 代理客户端库,支持多种代理协议,统一的 Dial 接口,可无缝集成到任何基于 net.Conn 的应用中。
本项目重构自 github.com/RouterScript/ProxyClient。
Blog: https://chainreactors.github.io/wiki/blog/2025/02/14/proxyclient-introduce/
- 统一接口 — 所有协议返回
proxyclient.Dial,与http.Transport.DialContext完全兼容 - 代理链 —
NewClientChain支持任意协议组合的多级代理链 - 插件式注册 —
RegisterScheme+init()自动注册,import _按需引入 - 独立 Module — extra/ 每个协议独立 go.mod,按需引入不污染依赖
- 负载均衡 — Round-Robin / Random / Hash / Adaptive + 死节点检测
- Clash 订阅 — 解析订阅、GeoIP 过滤、健康检查、自动负载均衡
- SOCKS5 UDP — 完整 RFC 1928 UDP ASSOCIATE 支持
proxy, _ := url.Parse("socks5://127.0.0.1:1080")
dial, _ := proxyclient.NewClient(proxy)
client := &http.Client{
Transport: &http.Transport{DialContext: dial},
}
resp, _ := client.Get("https://example.com")使用扩展协议只需 import _ 对应的包:
import _ "github.com/chainreactors/proxyclient/extra/trojan"
proxy, _ := url.Parse("trojan://password@server:443?sni=example.com")
dial, _ := proxyclient.NewClient(proxy)| 协议 | Scheme |
|---|---|
| Direct / Reject / Blackhole | direct://, reject://, blackhole:// |
| HTTP/HTTPS | http(s)://[user:pass@]host:port |
| SOCKS4/4A/5 | socks4(a)://, socks5://[user:pass@]host:port (TCP+UDP) |
| SOCKS5+TLS | socks5+tls://host:port |
| 协议 | Package | Scheme |
|---|---|---|
| SSH | extra/ssh |
ssh://user:pass@host:port |
| Shadowsocks | extra/shadowsocks |
ss://method:password@host:port |
| Trojan | extra/trojan |
trojan://password@host:port |
| VMess | extra/vmess |
vmess://host:port?id=uuid |
| VLess | extra/vmess |
vless://uuid@host:port |
| AnyTLS | extra/anytls |
anytls://password@host:port |
| Hysteria2 | extra/hysteria2 |
hysteria2://password@host:port |
| Suo5 | extra/suo5 |
suo5(s)://host:port/path |
| Neoreg | extra/neoreg |
neoreg(s)://key@host:port/path |
| Clash 订阅 | extra/clash |
clash://?url=<subscribe-url> |
| TUN 透明代理 | extra/tun |
runner API, 使用 proxyclient.Dial 作为出站 |
详细使用指南、架构说明、协议参考见 docs/guide.md。