- ✅ 多协议支持 - HTTP/HTTPS/SOCKS5 代理完整支持
- ✅ 双入口服务 - 同时提供 HTTP 和 SOCKS5 代理入口
- ✅ 上游代理认证 - 支持 Basic Auth 认证的上游代理
- ✅ 智能负载均衡 - 轮询算法自动分配请求
- ✅ 连接池管理 - 高效的连接复用机制
git clone https://github.com/Rfym21/ProxyFlow.git
cd ProxyFlow编辑 proxy.txt 文件,每行一个代理:
# 代理列表文件 # 支持格式: # HTTP/HTTPS: http://username:password@ip:port # SOCKS5: socks5://username:password@ip:port # 空行和以#开头的行将被忽略 # HTTP 代理 http://user1:pass1@192.168.1.100:8080 http://user2:pass2@192.168.1.101:8080 # SOCKS5 代理 socks5://user3:pass3@192.168.1.102:1080 socks5://192.168.1.103:1080
编辑 .env 文件:
# HTTP 代理服务监听端口 PROXY_PORT=8282 # SOCKS5 代理服务监听端口 SOCKS5_PORT=8281 # 代理文件路径 PROXY_FILE=proxy.txt # 总的最大空闲连接数 MAX_IDLE_CONNS=1000 # 每个主机的最大空闲连接数 MAX_IDLE_CONNS_PER_HOST=100 # 请求超时时间(秒) REQUEST_TIMEOUT=30 # 代理服务器认证(留空则不需要认证,HTTP和SOCKS5共用) AUTH_USERNAME=admin AUTH_PASSWORD=123456
# 安装依赖 go mod tidy # 编译 go build -o proxyflow ./cmd/proxyflow # 运行 ./proxyflow
将你的客户端代理设置为:
HTTP 代理入口:
- 无认证模式:
http://localhost:8282 - 认证模式:
http://admin:123456@localhost:8282
SOCKS5 代理入口:
- 无认证模式:
socks5://localhost:8281 - 认证模式:
socks5://admin:123456@localhost:8281
| 配置项 | 说明 | 默认值 | 示例 |
|---|---|---|---|
PROXY_PORT |
HTTP 代理服务监听端口 | 8282 |
8080 |
SOCKS5_PORT |
SOCKS5 代理服务监听端口 | 8281 |
10800 |
PROXY_FILE |
代理列表文件路径 | proxy.txt |
proxies.txt |
MAX_IDLE_CONNS |
总的最大空闲连接数 | 1000 |
2000 |
MAX_IDLE_CONNS_PER_HOST |
每个主机的最大空闲连接数 | 100 |
200 |
REQUEST_TIMEOUT |
请求超时时间(秒) | 30 |
60 |
AUTH_USERNAME |
认证用户名 | 空(无认证) | admin |
AUTH_PASSWORD |
认证密码 | 空(无认证) | 123456 |
- 创建项目目录
mkdir proxy-flow && cd proxy-flow
- 创建代理列表文件
cat > proxy.txt << EOF # 代理列表文件 # 支持 HTTP 和 SOCKS5 代理 http://user1:pass1@proxy1.example.com:8080 socks5://user2:pass2@proxy2.example.com:1080 EOF
- 创建 docker-compose.yml
version: '3.8' services: proxy-flow: image: ghcr.io/rfym21/proxy-flow:latest container_name: proxy-flow ports: - "8282:8282" # HTTP 代理端口 - "8281:8281" # SOCKS5 代理端口 volumes: - ./proxy.txt:/app/proxy.txt environment: - PROXY_PORT=8282 - SOCKS5_PORT=8281 - PROXY_FILE=proxy.txt - MAX_IDLE_CONNS=1000 - MAX_IDLE_CONNS_PER_HOST=100 - REQUEST_TIMEOUT=30 # 认证配置(可选,HTTP和SOCKS5共用) - AUTH_USERNAME= - AUTH_PASSWORD= restart: unless-stopped
- 启动服务
# 启动服务 docker compose up -d # 查看日志 docker compose logs -f proxy-flow # 停止服务 docker compose down
# 创建代理列表文件 echo "http://user:pass@proxy.example.com:8080" > proxy.txt # 运行容器 docker run -d \ --name proxyflow \ -p 8282:8282 \ -p 8281:8281 \ -v $(pwd)/proxy.txt:/app/proxy.txt \ -e PROXY_PORT=8282 \ -e SOCKS5_PORT=8281 \ -e PROXY_FILE=/app/proxy.txt \ -e MAX_IDLE_CONNS=1000 \ -e MAX_IDLE_CONNS_PER_HOST=100 \ -e REQUEST_TIMEOUT=30 \ -e AUTH_USERNAME= \ -e AUTH_PASSWORD= \ --restart unless-stopped \ ghcr.io/rfym21/proxy-flow:latest
# HTTP 代理 - HTTP 请求 curl -v -x http://127.0.0.1:8282 http://httpbin.org/ip # HTTP 代理 - HTTPS 请求 curl -v -x http://127.0.0.1:8282 https://httpbin.org/ip # SOCKS5 代理 - HTTP 请求 curl -v -x socks5://127.0.0.1:8281 http://httpbin.org/ip # SOCKS5 代理 - HTTPS 请求 curl -v -x socks5://127.0.0.1:8281 https://httpbin.org/ip
项目提供了Go语言编写的跨平台测试工具,用于验证代理服务是否正常工作:
# 直接运行 go run scripts/test-proxy.go # 或编译后运行 go build -o test-proxy scripts/test-proxy.go ./test-proxy # Windows go build -o test-proxy.exe scripts/test-proxy.go test-proxy.exe
ProxyFlow/
├── cmd/
│ └── proxyflow/
│ └── main.go # 程序入口点,负责初始化和启动服务
├── internal/ # 内部包,不对外暴露
│ ├── auth/
│ │ └── auth.go # HTTP Basic认证处理
│ ├── client/
│ │ └── client.go # HTTP客户端连接池管理
│ ├── config/
│ │ └── config.go # 环境变量配置加载
│ ├── models/
│ │ └── proxy.go # 代理信息数据结构
│ ├── pool/
│ │ └── pool.go # 代理池轮询管理
│ └── server/
│ └── server.go # TCP代理服务器核心实现
├── scripts/ # 测试工具
│ └── test-proxy.go # Go语言测试工具 (跨平台)
├── docs/
│ └── README.en.md # 英文文档
├── .github/
│ └── workflows/
│ ├── docker-build-push.yml # Docker镜像构建发布
│ └── release.yml # 版本发布流程
├── proxy.txt # 代理列表配置文件
├── .env # 环境变量配置文件
├── docker-compose.yml # Docker Compose部署配置
├── go.mod # Go模块依赖管理
└── README.md # 项目文档