Files
ProxyPool/README.md

254 lines
6.0 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 开发。
## 🌟 特性
- 🔮 **科技风设计** - 现代化的深色科技主题
- 📊 **实时监控** - WebSocket 实时推送任务进度
- 🎯 **智能管理** - 代理查询、筛选、排序、批量操作
- 📥 **多格式导出** - 支持 CSV、TXT、JSON 格式
-**定时任务** - 自动定期更新代理池
- 🚀 **高性能** - 异步爬取和验证,支持高并发
## 📦 技术栈
### 后端
- **框架**: FastAPI (端口 8923)
- **数据库**: SQLite + aiosqlite
- **异步**: asyncio
- **实时通信**: WebSocket
### 前端
- **框架**: Vue 3 + Vite (端口 6173)
- **UI库**: Element Plus
- **状态管理**: Pinia
- **图表**: ECharts
- **样式**: CSS Variables + 深色科技风
## 🚀 快速开始
### 1. 安装后端依赖
```bash
pip install -r requirements.txt
```
### 2. 安装前端依赖
```bash
cd frontend
npm install
```
### 3. 启动服务
#### 方式一:使用启动脚本(推荐)
```bash
cd script
start.bat
```
#### 方式二:手动启动
**启动后端服务**(终端 1
```bash
python api_server.py
```
**启动前端服务**(终端 2
```bash
cd frontend
npm run dev
```
#### 停止服务
```bash
cd script
stop.bat
```
### 4. 访问 WebUI
打开浏览器访问:**http://localhost:6173**
## 📁 项目结构
```
ProxyPool/
├── api_server.py # FastAPI 后端服务器
├── tasks_manager.py # 任务管理器
├── main.py # 爬虫主程序
├── config.py # 配置文件
├── requirements.txt # Python 依赖
├── .env.example # 环境变量示例
├── script/ # 启动脚本
│ ├── start.bat # Windows 启动脚本
│ ├── start.ps1 # PowerShell 启动脚本
│ ├── stop.bat # Windows 停止脚本
│ └── README.md # 脚本说明文档
├── core/ # 核心模块
│ ├── crawler.py # 爬虫基类
│ ├── validator.py # 代理验证器
│ ├── sqlite.py # 数据库管理
│ ├── plugin_manager.py # 插件管理器
│ ├── log.py # 日志配置
│ └── auth.py # 认证模块
├── plugins/ # 代理源插件
│ ├── fate0.py # Fate0 代理源
│ ├── ip3366.py # IP3366 代理源
│ ├── ip89.py # IP89 代理源
│ ├── kuaidaili.py # 快代理源
│ ├── yundaili.py # 云代理源
│ ├── speedx.py # SpeedX 代理源
│ └── proxylist_download.py # ProxyList 代理源
├── frontend/ # Vue3 前端
│ ├── src/
│ │ ├── api/ # API 封装
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── router/ # 路由配置
│ │ ├── components/ # 通用组件
│ │ ├── App.vue
│ │ ├── main.js
│ │ └── style.css # 全局样式
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
└── db/ # 数据存储目录
└── proxies.sqlite # 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:8923/ws
```
## 🐛 调试指南
### 任务进度不显示?
1. **检查 WebSocket 连接**
- 打开浏览器控制台F12
- 查看 Console 标签
- 应该看到 "WebSocket连接成功啦~"
- 应该看到 "收到WebSocket消息:" 日志
2. **检查后端任务**
- 查看后端终端输出
- 确认任务正在运行
- 查看是否有错误日志
3. **检查插件可用性**
- 确保 `plugins/` 目录下有插件文件
- 插件能正常抓取代理
### 数据不更新?
1. **检查数据库**
- 确认 `db/proxies.sqlite` 文件存在
- 使用 SQLite 客户端打开查看数据
2. **手动测试 API**
```bash
# 获取统计信息
curl http://localhost:8923/api/stats
# 获取代理列表
curl -X POST http://localhost:8923/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` 最后一行的端口号默认8923或 `frontend/vite.config.js` 中的端口号默认6173
### Q: 爬虫无法抓取代理?
A: 检查网络连接,确保能访问目标网站,或尝试更换代理源插件
### Q: 代理验证失败率高?
A: 增加验证超时时间,或减少并发验证数量
### Q: 数据库文件在哪里?
A: 默认在 `db/proxies.sqlite`,可在 `core/sqlite.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 - 强大的数据可视化库