3.7 KiB
3.7 KiB
ProxyRotator
ProxyRotator 是一个全栈应用程序,旨在管理、验证和轮换 HTTP/SOCKS 代理。它提供了一个高性能的 Go 后端用于处理代理逻辑,以及一个现代化的 React 前端用于直观的管理和监控。
✨ 功能特性
- 代理管理:支持批量导入、解析多种格式的代理。
- 健康检查:内置高性能测试器,验证代理的连通性、延迟和匿名度。
- 智能轮换:提供策略选择器,根据评分和状态分发最佳代理。
- 现代化 UI:基于 React 19 和 Tailwind CSS 构建的仪表盘,支持暗色模式。
- 持久化存储:使用 PostgreSQL 存储代理数据和历史记录。
🛠️ 技术栈
Backend (后端)
- 语言: Go (1.25+)
- 数据库: PostgreSQL
- 驱动/ORM: pgx/v5
- 核心模块:
importer: 代理导入与解析tester: 连通性测试selector: 代理选择策略store: 数据库持久化
Frontend (前端)
- 框架: React 19 + Vite
- 语言: TypeScript
- 样式: Tailwind CSS v4
- 组件库: Shadcn UI (基于 Radix UI)
- 图标: Lucide React
🚀 快速开始
前置要求
- Go 1.25 或更高版本
- Node.js & pnpm
- PostgreSQL 数据库
1. 数据库设置
首先,创建一个 PostgreSQL 数据库(例如 proxyrotator)。然后运行迁移脚本初始化表结构。
# 进入后端目录
cd backend
# 确保你有 psql 客户端,或者使用你喜欢的数据库工具执行 SQL
# 默认迁移文件位于 migrations/001_init.sql
psql "postgres://username:password@localhost:5432/proxyrotator" -f migrations/001_init.sql
2. 后端设置
配置环境变量并启动 API 服务器。
cd backend
# 复制示例环境变量文件
cp envexmaple .env
# 编辑 .env 文件,填入你的数据库连接信息和其他配置
# DATABASE_URL=postgres://postgres:psw@localhost:5432/proxyrotator
# ...
# 安装依赖
go mod tidy
# 启动服务器 (注意:Makefile 中的路径可能需要调整,直接使用 go run)
go run server/main.go
服务器默认监听在 0.0.0.0:9987。
3. 前端设置
启动 Web 界面。
cd front
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
访问终端中显示的地址(通常是 http://localhost:5173)即可进入控制台。
⚙️ 环境变量配置
在 backend/.env 中配置以下关键变量:
| 变量名 | 描述 | 示例 |
|---|---|---|
DATABASE_URL |
PostgreSQL 连接字符串 | postgres://user:pass@localhost:5432/db |
LISTEN_ADDR |
后端监听地址 | 0.0.0.0:9987 |
API_KEY |
API 访问密钥(如启用鉴权) | your-secret-key |
MAX_CONCURRENCY |
代理测试的最大并发数 | 200 |
LEASE_TTL |
代理租约/有效时间 | 60s |
📂 项目结构
proxyrotator/
├── backend/ # Go 后端代码
│ ├── internal/ # 核心业务逻辑
│ │ ├── api/ # HTTP API 处理
│ │ ├── importer/ # 代理导入器
│ │ ├── tester/ # 代理测试器
│ │ └── store/ # 数据库操作
│ ├── migrations/ # SQL 迁移文件
│ └── server/ # 入口文件
└── front/ # React 前端代码
├── src/
│ ├── components/ # UI 组件
│ └── lib/ # 工具函数与 API 客户端
📝 开发指南
- 后端开发: 核心逻辑位于
backend/internal。添加新功能时,请确保更新docs/developdoc.md(如果存在)。 - 前端开发: 组件位于
front/src/components。使用了 Shadcn UI 风格的组件架构。