Files
ProxyPool/readme.md
2026-01-31 22:53:12 +08:00

129 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)