# 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)
