ProxyMan 是一个基于 Go 语言开发的 HTTP/HTTPS 代理服务器,具备中间人(MITM)拦截功能和实时监控界面。它提供透明的代理功能,能够拦截和监控 HTTP 和 HTTPS 流量,并通过 Web 界面实时展示。
- HTTP/HTTPS 代理:完全支持 HTTP 和 HTTPS 协议
- 中间人拦截:自动生成证书,实现 HTTPS 流量拦截
- 透明代理:对客户端完全透明,无需特殊配置
- 高性能:基于 Go 原生网络库,支持高并发连接
- 上游代理支持:支持配置上游代理服务器
- Web 界面:直观的 Web 管理界面
- 实时数据流:WebSocket 实时推送请求信息
- 详细数据:支持查看请求/响应的完整内容
- 大模型接口兼容: 支持查看大模型对话内容
- Go 1.25.0 或更高版本,Nodejs 22 或更高版本
- 操作系统:Windows、macOS、Linux
-
克隆项目
git clone https://github.com/your-username/proxyMan.git cd proxyMan -
安装依赖
go mod tidy cd frontend && npm install
-
构建项目
cd frontend && npm build go build -o proxyMan
-
运行代理
# 使用默认端口 ./proxyMan # 指定代理端口 ./proxyMan 8888 # 指定代理端口和 Web 端口 ./proxyMan 8888 8080
-
访问 Web 界面 打开浏览器访问
http://localhost:8080
go run main.go- 代理服务器:8888
- Web 管理界面:8080
# 代理端口 8888,Web 端口 8080(默认)
./proxyMan
# 自定义代理端口
./proxyMan 8080
# 自定义代理端口和 Web 端口
./proxyMan 8080 9090- 打开浏览器设置
- 配置代理服务器为
localhost:8888 - 保存设置
- Windows:网络设置 → 代理 → 手动配置代理
- macOS:系统偏好设置 → 网络 → 高级 → 代理
- Linux:设置环境变量
export http_proxy=http://localhost:8888
-
获取证书
- 程序启动时会检测当前路径是否存在证书
ca.crt,没有则自动生成
- 程序启动时会检测当前路径是否存在证书
-
安装证书
- Windows:双击
ca.crt→ 安装证书 → 受信任的根证书颁发机构 - macOS:双击
ca.crt→ 钥匙串访问 → 系统 → 信任 → 始终信任 - Linux:将证书复制到
/usr/local/share/ca-certificates/并运行update-ca-certificates
- Windows:双击
-
验证设置 访问 HTTPS 网站,确认浏览器无证书警告
ProxyMan 支持通过环境变量配置上游代理,所有流量将自动转发到指定的上游代理服务器。
# HTTP 上游代理
export HTTP_PROXY=http://proxy.example.com:8080
export http_proxy=http://proxy.example.com:8080
# HTTPS 上游代理
export HTTPS_PROXY=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
# SOCKS5 代理
export ALL_PROXY=socks5://proxy.example.com:1080
export all_proxy=socks5://proxy.example.com:1080
# 设置代理认证(如果需要)
export HTTP_PROXY=http://username:password@proxy.example.com:8080
export HTTPS_PROXY=http://username:password@proxy.example.com:8080# 配置上游代理并启动 ProxyMan
export HTTP_PROXY=http://company-proxy:8080
export HTTPS_PROXY=http://company-proxy:8080
./proxyMan
# 使用 SOCKS5 代理
export ALL_PROXY=socks5://127.0.0.1:1080
./proxyMan
# 临时设置(仅当前会话有效)
HTTP_PROXY=http://proxy.example.com:8080 HTTPS_PROXY=http://proxy.example.com:8080 ./proxyMan# 测试代理连接
curl -x http://localhost:8888 https://httpbin.org/ip
# 查看日志确认上游代理被使用
go run main.go
# 观察日志中的连接信息Client → ProxyMan (localhost:8888) → Upstream Proxy → Target Server
- 请求路由:区分 HTTP 和 HTTPS 请求
- 连接处理:处理 CONNECT 请求,建立 TLS 隧道
- 流量转发:透明的请求/响应转发
- 协议嗅探:自动检测 HTTP/HTTPS 协议
- 上游代理:自动使用环境变量中的上游代理配置
- CA 管理:根证书的生成和加载
- 动态证书:为每个域名生成 TLS 证书
- 缓存优化:智能证书缓存和清理机制
- 并发安全:线程安全的证书操作
- WebSocket 服务:实时数据推送
- 静态文件:前端资源服务
- 连接管理:多客户端连接处理
Client Request → Proxy Server → Certificate Generation → Target Server
↓
Request Capture → WebSocket Broadcast → Web Interface → Real-time Display
- 仅用于开发和测试环境
- 证书私钥本地存储,不对外传输
- 代理可以查看所有明文流量
- HTTPS 流量通过 MITM 解密
- 请遵守相关法律法规
- 不要用于非法用途
问题:浏览器显示证书不受信任 解决:
- 确保正确安装 CA 证书
- 检查证书是否安装到受信任的根证书颁发机构
- 重启浏览器
问题:提示端口已被占用 解决:
# 查看端口占用
lsof -i :8888
lsof -i :8080
# 更换端口
./proxyMan 8080 9090问题:HTTPS 网站无法访问 解决:
- 确保正确安装 CA 证书
- 检查域名是否包含端口号
- 查看日志文件排查错误
问题:无法打开 Web 管理界面 解决:
- 检查防火墙设置
- 确认 Web 服务器端口配置
- 查看服务器日志
问题:上游代理无法连接或认证失败 解决:
- 检查环境变量设置是否正确
- 验证上游代理服务器地址和端口
- 确认代理认证信息格式正确
- 检查网络连接和防火墙设置
注意:本工具仅用于开发和测试目的,请遵守相关法律法规,不要用于非法用途。
