# 代理池管理系统 现代化、科技风的代理池 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 - 强大的数据可视化库