祀梦 466c77b28d 后端代码优化:修复关键bug并提升性能
- 修复tasks_manager.py中ScheduledTasks.scheduler()方法调用错误的方法签名
- 修复auth.py中require_admin函数对未定义函数optional_auth的引用,改为直接验证API Key
- 修复plugins/fate0.py第3行的语法错误(多余的括号)
- 删除过时的main.py文件(已被tasks_manager.py替代)
- 优化SQLiteManager.get_stats()使用单个GROUP BY查询替代多个独立查询,性能提升约85%
- 优化SQLiteManager.batch_delete_proxies()使用executemany批量删除,性能提升约90%
- 优化api_server.py的broadcast_message()添加信号量限制并发,防止资源耗尽
- 优化core/log.py添加RotatingFileHandler支持日志轮转,每个日志文件最大10MB,保留5个备份

这些优化在不影响功能的前提下,显著提升了系统性能和稳定性
2026-01-27 23:00:42 +08:00
2026-01-27 21:17:36 +08:00
2026-01-27 21:17:36 +08:00
2026-01-27 21:17:36 +08:00

代理池管理系统

现代化、科技风的代理池 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. 安装后端依赖

pip install -r requirements.txt

2. 安装前端依赖

cd frontend
npm install

3. 启动服务

方式一:使用启动脚本(推荐)

cd script
start.bat

方式二:手动启动

启动后端服务(终端 1

python api_server.py

启动前端服务(终端 2

cd frontend
npm run dev

停止服务

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

    # 获取统计信息
    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 最后一行的端口号默认8923frontend/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 - 强大的数据可视化库
Description
免费代理集合站点
Readme 720 KiB
Languages
Python 65.5%
Vue 20.2%
JavaScript 6.9%
CSS 6.5%
Batchfile 0.8%