# 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`)。然后运行迁移脚本初始化表结构。 ```bash # 进入后端目录 cd backend # 确保你有 psql 客户端,或者使用你喜欢的数据库工具执行 SQL # 默认迁移文件位于 migrations/001_init.sql psql "postgres://username:password@localhost:5432/proxyrotator" -f migrations/001_init.sql ``` ### 2. 后端设置 配置环境变量并启动 API 服务器。 ```bash 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 界面。 ```bash 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 风格的组件架构。 ## 📄 License [MIT](LICENSE)