129 lines
3.7 KiB
Markdown
129 lines
3.7 KiB
Markdown
# 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)
|