祀梦 25bfaf718e 修复 ValidationQueue 重启恢复:启动时唤醒 Worker 处理 pending 任务
问题:服务重启后,reset_processing() 将中断任务恢复为 pending,
但没有发送信号唤醒 Worker,导致任务永远挂起。

修复:在 start() 中,启动 Worker 后根据 pending 任务数量发送信号,
确保恢复的任务能被立即消费和验证。
2026-04-02 12:42:05 +08:00
2026-04-02 12:26:22 +08:00

代理池管理系统

现代化、科技风的代理池 WebUI 管理系统,基于 Python + Vue3 开发。

🌟 特性

  • 🔮 科技风设计 - 现代化的深色科技主题
  • 📊 实时监控 - 自动统计代理池状态
  • 🎯 智能管理 - 代理查询、筛选、排序、批量操作
  • 📥 多格式导出 - 支持 CSV、TXT、JSON 格式
  • 自动验证 - 自动验证代理可用性并评分
  • 🚀 高性能 - 异步爬取和验证,支持高并发

📦 技术栈

后端

  • 框架: FastAPI (端口 9949)
  • 数据库: SQLite + aiosqlite
  • 异步: asyncio

前端

  • 框架: Vue 3 + Vite (端口 9948)
  • 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:9948

📁 项目结构

ProxyPool/
├── api_server.py          # FastAPI 后端服务器
├── config.py              # 配置文件
├── requirements.txt       # Python 依赖
├── .env.example          # 环境变量示例
│
├── script/             # 启动脚本
│   ├── start.bat       # Windows 启动脚本
│   └── stop.bat       # Windows 停止脚本
│
├── core/             # 核心模块
│   ├── crawler.py     # 爬虫基类
│   ├── validator.py   # 代理验证器
│   ├── sqlite.py      # 数据库管理
│   ├── plugin_manager.py # 插件管理器
│   └── log.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/ # 通用组件
│   │   └── style.css  # 全局样式
│   ├── index.html
│   └── package.json
│
└── 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

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