Files
ProxyPool/README.md
祀梦 38bd66128b 重构: 迁移后端代码到 app 目录,前端移动到 WebUI,添加完整测试套件
主要变更:
- 后端代码从根目录迁移到 app/ 目录
- 前端代码从 frontend/ 重命名为 WebUI/
- 更新所有导入路径以适配新结构
- 提取公共 API 响应函数到 app/api/common.py
- 精简验证器服务代码
- 更新启动脚本和文档

测试:
- 新增完整测试套件 (tests/)
- 单元测试: 模型、仓库层
- 集成测试: 覆盖所有 22+ API 端点
- E2E 测试: 4个完整工作流场景
- 添加 pytest 配置和测试运行脚本
2026-04-04 13:32:36 +08:00

256 lines
5.8 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.

# 代理池管理系统
现代化、科技风的代理池 WebUI 管理系统,基于 Python + Vue3 开发。
## 🌟 特性
- 🔮 **科技风设计** - 现代化的深色科技主题
- 📊 **实时监控** - 自动统计代理池状态
- 🎯 **智能管理** - 代理查询、筛选、排序、批量操作
- 📥 **多格式导出** - 支持 CSV、TXT、JSON 格式
-**自动验证** - 自动验证代理可用性并评分
- 🚀 **高性能** - 异步爬取和验证,支持高并发
## 📦 技术栈
### 后端
- **框架**: FastAPI (端口 9949)
- **数据库**: SQLite + aiosqlite
- **异步**: asyncio
### 前端
- **框架**: Vue 3 + Vite (端口 9948)
- **UI库**: Element Plus
- **状态管理**: Pinia
- **图表**: ECharts
- **样式**: CSS Variables + 深色科技风
## 🚀 快速开始
### 1. 安装后端依赖
```bash
pip install -r requirements.txt
```
### 2. 安装前端依赖
```bash
cd WebUI
npm install
```
### 3. 启动服务
#### 方式一:使用启动脚本(推荐)
```bash
cd script
start.bat
```
#### 方式二:手动启动
**启动后端服务**(终端 1
```bash
python api_server.py
```
**启动前端服务**(终端 2
```bash
cd WebUI
npm run dev
```
#### 停止服务
```bash
cd script
stop.bat
```
### 4. 访问 WebUI
打开浏览器访问:**http://localhost:9948**
## 📁 项目结构
```
ProxyPool/
├── main.py # 项目入口
├── requirements.txt # Python 依赖
├── .env.example # 环境变量示例
├── app/ # 后端代码
│ ├── api/ # FastAPI 路由
│ │ ├── main.py # 应用工厂
│ │ ├── routes/ # API 路由
│ │ ├── deps.py # 依赖注入
│ │ └── ...
│ ├── core/ # 核心模块
│ │ ├── config.py # 配置管理
│ │ ├── db.py # 数据库连接
│ │ ├── log.py # 日志配置
│ │ ├── plugin_system/ # 插件系统
│ │ └── tasks/ # 任务队列
│ ├── models/ # 数据模型
│ ├── repositories/ # 数据访问层
│ ├── services/ # 业务逻辑层
│ └── plugins/ # 代理源插件
│ ├── fate0.py # Fate0 代理源
│ ├── ip3366.py # IP3366 代理源
│ ├── ip89.py # IP89 代理源
│ ├── kuaidaili.py # 快代理源
│ ├── yundaili.py # 云代理源
│ ├── speedx.py # SpeedX 代理源
│ └── proxylist_download.py # ProxyList 代理源
├── WebUI/ # Vue3 前端
│ ├── src/
│ │ ├── api/ # API 封装
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── router/ # 路由配置
│ │ ├── components/ # 通用组件
│ │ └── style.css # 全局样式
│ ├── index.html
│ └── package.json
├── script/ # 启动脚本
│ ├── start.bat # Windows 启动脚本
│ └── stop.bat # Windows 停止脚本
└── db/ # 数据存储目录
└── proxies.sqlite # SQLite 数据库
```
## 🎨 主题切换
在设置页面可以切换三种科技风主题:
- **🔮 科技蓝** - 默认主题,蓝色霓虹风格
- **💜 星空紫** - 紫色星空风格
- **💚 矩阵绿** - 绿色黑客风格
## 📡 API 接口
### 统计信息
```
GET /api/stats
```
### 代理列表
```
POST /api/proxies
```
### 获取随机代理
```
GET /api/proxies/random
```
### 导出代理
```
GET /api/proxies/export/{format}
# format: csv, txt, json
```
### 删除代理
```
DELETE /api/proxies/{ip}/{port}
```
### 批量删除代理
```
POST /api/proxies/batch-delete
```
### 清理无效代理
```
DELETE /api/proxies/clean-invalid
```
### 插件列表
```
GET /api/plugins
```
### 切换插件状态
```
PUT /api/plugins/{plugin_id}/toggle
```
### 执行插件爬取
```
POST /api/plugins/{plugin_id}/crawl
```
### 系统设置
```
GET /api/settings
POST /api/settings
```
## 🐛 调试指南
### 数据不更新?
1. **检查数据库**
- 确认 `db/proxies.sqlite` 文件存在
- 使用 SQLite 客户端打开查看数据
2. **手动测试 API**
```bash
# 获取统计信息
curl http://localhost:9949/api/stats
# 获取代理列表
curl -X POST http://localhost:9949/api/proxies \
-H "Content-Type: application/json" \
-d '{"page": 1, "page_size": 20}'
```
3. **查看浏览器网络请求**
- 打开开发者工具 Network 标签
- 刷新页面查看 API 请求
- 检查响应状态码和数据
## 📝 配置说明
### 代理验证配置
- **验证超时**: 3-30秒默认 5秒
- **验证并发数**: 10-200默认 50
### 评分机制
- **验证成功**: +10 分
- **验证失败**: -5 分
- **分数为 0**: 自动删除
## 🔧 常见问题
### Q: 启动后端口被占用?
A: 修改 `config.py` 中的端口号默认9949或 `frontend/vite.config.js` 中的端口号默认9948
### Q: 爬虫无法抓取代理?
A: 检查网络连接,确保能访问目标网站,或尝试更换代理源插件
### Q: 代理验证失败率高?
A: 增加验证超时时间,或减少并发验证数量
### Q: 数据库文件在哪里?
A: 默认在 `db/proxies.sqlite`,可在 `config.py` 中修改 `DB_PATH`
### Q: 如何清空数据库?
A: 运行命令 `python -c "from core.sqlite import SQLiteManager; import asyncio; asyncio.run(SQLiteManager().clear_all())"`
## 📄 License
MIT License
## 🙏 致谢
- FastAPI - 高性能 Python Web 框架
- Vue 3 - 渐进式 JavaScript 框架
- Element Plus - 优秀的 Vue 3 UI 库
- ECharts - 强大的数据可视化库