first commit

This commit is contained in:
祀梦
2026-01-27 21:17:36 +08:00
commit b06044c91c
57 changed files with 6714 additions and 0 deletions

225
README.md Normal file
View File

@@ -0,0 +1,225 @@
# 代理池管理系统
现代化、科技风的代理池 WebUI 管理系统,基于 Python + Vue3 开发。
## 🌟 特性
- 🔮 **科技风设计** - 现代化的深色科技主题
- 📊 **实时监控** - WebSocket 实时推送任务进度
- 🎯 **智能管理** - 代理查询、筛选、排序、批量操作
- 📥 **多格式导出** - 支持 CSV、TXT、JSON 格式
-**定时任务** - 自动定期更新代理池
- 🚀 **高性能** - 异步爬取和验证,支持高并发
## 📦 技术栈
### 后端
- **框架**: FastAPI (端口 3000)
- **数据库**: SQLite + aiosqlite
- **异步**: asyncio
- **实时通信**: WebSocket
### 前端
- **框架**: Vue 3 + Vite (端口 8080)
- **UI库**: Element Plus
- **状态管理**: Pinia
- **图表**: ECharts
- **样式**: CSS Variables + 深色科技风
## 🚀 快速开始
### 1. 安装后端依赖
```bash
pip install -r requirements.txt
```
### 2. 安装前端依赖
```bash
cd frontend
npm install
```
### 3. 启动服务
#### 方式一:使用启动脚本(推荐)
双击运行 `start.bat` 选择启动方式
#### 方式二:手动启动
**启动后端服务**(终端 1
```bash
python api_server.py
```
**启动前端服务**(终端 2
```bash
cd frontend
npm run dev
```
### 4. 访问 WebUI
打开浏览器访问:**http://localhost:8080**
## 📁 项目结构
```
ProxyPool/
├── api_server.py # FastAPI 后端服务器
├── tasks_manager.py # 任务管理器
├── main.py # 原始命令行入口
├── requirements.txt # Python 依赖
├── start.bat # 启动脚本
├── core/ # 核心模块
│ ├── crawler.py # 爬虫基类
│ ├── validator.py # 代理验证器
│ ├── sqlite.py # 数据库管理
│ ├── plugin_manager.py# 插件管理器
│ └── log.py # 日志配置
├── plugins/ # 代理源插件
│ ├── __init__.py
│ └── speedx.py # SpeedX 代理源
├── frontend/ # Vue3 前端
│ ├── src/
│ │ ├── api/ # API 封装
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── router/ # 路由配置
│ │ ├── App.vue
│ │ ├── main.js
│ │ └── style.css # 全局样式
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
└── data/ # 数据存储目录
└── proxy_pool.db # SQLite 数据库
```
## 🎨 主题切换
在设置页面可以切换三种科技风主题:
- **🔮 科技蓝** - 默认主题,蓝色霓虹风格
- **💜 星空紫** - 紫色星空风格
- **💚 矩阵绿** - 绿色黑客风格
## 📡 API 接口
### 统计信息
```
GET /api/stats
```
### 代理列表
```
POST /api/proxies
```
### 获取随机代理
```
GET /api/proxies/random
```
### 启动爬虫
```
POST /api/crawler/start
```
### 停止爬虫
```
POST /api/crawler/stop
```
### 定时任务
```
POST /api/scheduler
GET /api/scheduler
```
### WebSocket 连接
```
ws://localhost:3000/ws
```
## 🐛 调试指南
### 任务进度不显示?
1. **检查 WebSocket 连接**
- 打开浏览器控制台F12
- 查看 Console 标签
- 应该看到 "WebSocket连接成功啦~"
- 应该看到 "收到WebSocket消息:" 日志
2. **检查后端任务**
- 查看后端终端输出
- 确认任务正在运行
- 查看是否有错误日志
3. **检查插件可用性**
- 确保 `plugins/` 目录下有插件文件
- 插件能正常抓取代理
### 数据不更新?
1. **检查数据库**
- 确认 `data/proxy_pool.db` 文件存在
- 使用 SQLite 客户端打开查看数据
2. **手动测试 API**
```bash
# 获取统计信息
curl http://localhost:3000/api/stats
# 获取代理列表
curl -X POST http://localhost:3000/api/proxies \
-H "Content-Type: application/json" \
-d '{"page": 1, "page_size": 20}'
```
3. **查看浏览器网络请求**
- 打开开发者工具 Network 标签
- 刷新页面查看 API 请求
- 检查响应状态码和数据
## 📝 配置说明
### 爬虫配置
- **最大并发数**: 10-500默认 200
- **验证超时**: 3-30秒默认 5秒
- **验证线程数**: 10-200默认 50
### 定时任务
- **执行间隔**: 10-1440分钟默认 60分钟
- **自动清理**: 可选,清理无效代理
## 🔧 常见问题
### Q: 启动后端口被占用?
A: 修改 `api_server.py` 最后一行的端口号默认3000或 `frontend/vite.config.js` 中的端口号默认8080
### Q: 爬虫无法抓取代理?
A: 检查网络连接,确保能访问目标网站,或尝试更换代理源插件
### Q: 代理验证失败率高?
A: 增加验证超时时间,或减少并发验证数量
### Q: 数据库文件在哪里?
A: 默认在 `data/proxy_pool.db`,可在 `core/sqlite.py` 中修改 `db_path`
## 📄 License
MIT License
## 🙏 致谢
- FastAPI - 高性能 Python Web 框架
- Vue 3 - 渐进式 JavaScript 框架
- Element Plus - 优秀的 Vue 3 UI 库
- ECharts - 强大的数据可视化库