Skip to content

Slothtron/easyproxy-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyProxy - 多协议代理服务器 (Go 版本)

一个高性能的代理服务器,支持 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

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

🔧 CLI 命令

启动服务器

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 共享用户列表)
  • ✅ 认证失败自动拒绝连接
  • ✅ 详细的认证日志记录

📝 文档

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支(git checkout -b feature/amazing-feature
  3. 提交更改(git commit -m 'feat: add amazing feature'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 创建 Pull Request

请确保:

  • 代码通过所有测试
  • 遵循编码规范
  • 添加必要的测试
  • 更新相关文档

📄 许可证

MIT License - 详见 LICENSE 文件

🙏 致谢

本项目是 easyproxy-py 的 Go 语言重写版本,保持了相同的功能特性,但提供了更好的性能和部署便利性。

📧 联系方式

About

一个高性能的代理服务器,支持 HTTP/HTTPS/SOCKS5 协议,基于 Go 语言实现。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published