一个功能强大的 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 |
详细使用指南、架构说明、协议参考见 docs/guide.md。
