一个高性能的代理服务器,支持 HTTP/HTTPS/SOCKS5 协议,基于 Go 语言实现。
- ✅ HTTP 代理 - 支持标准 HTTP 代理协议
- ✅ HTTPS 代理 - 支持 CONNECT 隧道(端到端加密)
- ✅ SOCKS5 代理 - 完整的 SOCKS5 协议支持(IPv4/IPv6/域名)
- ✅ 协议自动检测 - 自动识别 HTTP/HTTPS/SOCKS5 协议
- ✅ Basic Auth 认证 - 支持 HTTP 和 SOCKS5 认证
- ✅ 高性能 - 基于 Go 原生 goroutine,支持 10,000+ 并发连接
- ✅ 结构化日志 - 使用 zap 提供详细的访问日志和统计信息
- ✅ 灵活配置 - 支持 YAML 配置文件和命令行参数
- ✅ 单一二进制 - 无需依赖,开箱即用
# 克隆仓库
git clone https://github.com/Slothtron/easyproxy.git
cd easyproxy/easyproxy-go
# 下载依赖
make deps
# 构建
make build
# 安装到系统(可选)
make install
go install github.com/Slothtron/easyproxy/cmd/easyproxy@latest
从 Releases 页面下载对应平台的二进制文件。
使用默认配置:
easyproxy start
使用配置文件:
# 生成默认配置文件
easyproxy init config.yaml
# 使用配置文件启动
easyproxy start -c config.yaml
使用命令行参数:
# 自定义端口和日志级别
easyproxy start -p 8080 --log-level DEBUG
# 自定义监听地址
easyproxy start -H 127.0.0.1 -p 7899
# 指定日志文件
easyproxy start --log-file /var/log/easyproxy/proxy.log
服务器默认在 0.0.0.0:7899
上启动。
HTTP 代理:
curl -x http://127.0.0.1:7899 http://www.example.com
HTTPS 代理:
curl -x http://127.0.0.1:7899 https://www.example.com
SOCKS5 代理:
curl --socks5 127.0.0.1:7899 http://www.example.com
curl --socks5 127.0.0.1:7899 https://www.example.com
带认证的代理:
# HTTP/HTTPS
curl -x http://username:password@127.0.0.1:7899 http://www.example.com
# SOCKS5
curl --socks5 username:password@127.0.0.1:7899 http://www.example.com
配置文件使用 YAML 格式,支持以下选项:
# 服务器配置
host: 0.0.0.0 # 监听地址
port: 7899 # 监听端口
# 协议配置
protocols:
- http # HTTP 代理
- https # HTTPS 代理
- socks5 # SOCKS5 代理
# 连接配置
max_connections: 10000 # 最大并发连接数
connection_timeout: 30 # 连接超时(秒)
idle_timeout: 300 # 空闲超时(秒)
buffer_size: 8192 # 缓冲区大小(字节)
# 日志配置
log:
level: INFO # 日志级别:DEBUG, INFO, WARNING, ERROR
access_log: true # 是否记录访问日志
file: "" # 日志文件路径(空表示控制台)
# 认证配置(可选)
auth:
enabled: false # 是否启用认证
type: basic # 认证类型:basic
realm: EasyProxy # 认证域名
users: # 用户名密码映射
admin: admin123
user1: password1
easyproxy start [OPTIONS]
选项:
-c, --config PATH 配置文件路径
-H, --host TEXT 监听地址(覆盖配置文件)
-p, --port INTEGER 监听端口(覆盖配置文件)
--log-level LEVEL 日志级别(覆盖配置文件)
--log-file PATH 日志文件路径(覆盖配置文件)
easyproxy init <output_path>
easyproxy validate -c <config_path>
easyproxy version
- Go 1.21+
- Make
# 下载依赖
make deps
# 运行测试
make test
# 生成测试覆盖率报告
make test-cover
# 运行代码检查
make lint
# 格式化代码
make fmt
# 开发模式运行
make run-dev
# 构建所有平台版本
make build-all
easyproxy-go/
├── cmd/easyproxy/ # 命令行入口
├── internal/ # 内部包
│ ├── proxy/ # 代理服务器核心
│ ├── config/ # 配置管理
│ ├── auth/ # 认证模块
│ ├── protocol/ # 协议处理
│ └── logger/ # 日志系统
├── pkg/ # 公共包
└── config/ # 配置示例
详细的项目结构说明请参考 docs/architecture/source-tree.md。
基于 Go 的高性能特性:
- 并发连接数: 10,000+
- 吞吐量: 1GB/s+
- 内存占用: < 100MB(空闲状态)
- 启动时间: < 100ms
- 二进制大小: 10-15MB(静态编译)
EasyProxy 支持 Basic Auth 认证,可以保护代理服务器免受未授权访问:
启用认证:
auth:
enabled: true
type: basic
realm: MyProxy
users:
admin: secret123
user1: pass456
认证特性:
- ✅ HTTP/HTTPS 使用 Proxy-Authorization 头认证
- ✅ SOCKS5 使用 RFC 1929 用户名/密码认证
- ✅ 统一的用户管理(HTTP 和 SOCKS5 共享用户列表)
- ✅ 认证失败自动拒绝连接
- ✅ 详细的认证日志记录
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支(
git checkout -b feature/amazing-feature
) - 提交更改(
git commit -m 'feat: add amazing feature'
) - 推送到分支(
git push origin feature/amazing-feature
) - 创建 Pull Request
请确保:
- 代码通过所有测试
- 遵循编码规范
- 添加必要的测试
- 更新相关文档
MIT License - 详见 LICENSE 文件
本项目是 easyproxy-py 的 Go 语言重写版本,保持了相同的功能特性,但提供了更好的性能和部署便利性。
- GitHub: @Slothtron
- Email: lolioycmd@foxmail.com