基于 Go 语言开发的 HTTP + SOCKS5 代理服务器,支持请求转发、限流控制和安全验证。
- HTTP 代理 - 9888 端口,路径前缀验证
- SOCKS5 代理 - 1080 端口,支持多用户认证
- 请求安全验证
- 流量控制(全局/IP 限流)
- 自动重试机制
- 访问日志
- 流式响应支持(AI API 代理)
| 变量名 | 说明 | 默认值 |
|---|---|---|
| KEY_PREFIX | HTTP 代理路径前缀 | 必填 |
| ENABLE_RATE_LIMIT | 是否启用限流 | true |
| ENABLE_SOCKS5 | 是否启用 SOCKS5 | false |
| SOCKS5_USERS | SOCKS5 用户列表,格式: user1:pass1,user2:pass2 | - |
# 启动 HTTP 代理
go run main.go
# 启动 HTTP + SOCKS5(多用户认证)
KEY_PREFIX=abc123 ENABLE_SOCKS5=true SOCKS5_USERS=user1:pass1,user2:pass2 go run main.godocker build -t proxy-server .
docker run -d -p 9888:9888 -p 1080:1080 \
-e KEY_PREFIX="your_key_prefix" \
-e ENABLE_SOCKS5=true \
-e SOCKS5_USERS="user1:pass1" \
proxy-serverhttp://localhost:9888/proxy/{KEY_PREFIX}/{target_url}
curl -x http://localhost:9888 http://localhost:9888/proxy/abc123/httpbin.org/getcurl -x socks5://user1:pass1@localhost:1080 http://httpbin.org/ip浏览器配置可使用 SwitchyOmega 插件。
const (
serverPort = ":9888" // HTTP 代理端口
socks5Port = ":1080" // SOCKS5 代理端口
rateLimit = 100 // 全局每秒请求限制
perIPLimit = 10 // 每IP每秒请求限制
maxRetries = 3 // 最大重试次数
timeout = 60 * time.Second // 请求超时
)- URL 安全性验证(协议、域名格式)
- 私有网络访问限制(10.x, 172.16-31.x, 192.168.x)
- 敏感端口拦截(22, 23, 25, 135, 139, 445 等)
- 路径遍历和注入检测
- 请求内容大小限制(100MB)
# SOCKS5 测试
cd tools
go run socks5.go [target_url] [proxy_addr] [username] [password]
# 示例
go run socks5.go http://httpbin.org/ip localhost:1080 user1 pass1- Go 1.23+
- github.com/armon/go-socks5