ProxyPoolMaster 是一个面向免费 HTTP/HTTPS 代理的自动化代理池系统,负责收集、检测、存储和对外提供代理能力,并附带 Web UI、REST API 与 WebSocket 实时接口。
注意:该项目为vibe-coding产物,由于个人水平有限,难免会有没有注意到的问题,但主要功能已完全可用,尚在不断地打磨优化。
当前版本的默认运行方式是:
app:提供 Web UI、REST API、WebSocketcollector-worker:独立执行 Collector V2 收集任务redis:保存代理数据、调度索引和运行状态
如果你想先把系统跑起来,看“快速开始”;如果你准备改代码,看“本地开发”;如果你想了解当前质量问题,看“审计与已知问题”。
- 自动收集免费代理,内置站大爷大陆与海外收集器
- 支持 Collector V2,可通过 Web UI 配置、测试、发布与暂停收集器
- 异步检测代理质量,维护可用性、响应时间、失败次数和评分
- 使用 Redis 存储代理详情、索引、测试调度和部分运行状态
- 提供 REST API、Swagger / ReDoc 文档与 WebSocket 推送
- 提供 Vue 3 Web UI,覆盖仪表盘、代理列表、日志、配置和系统状态
Browser
└─> Nginx :8080
├─> Web UI 静态资源
├─> FastAPI :8000
│ ├─> REST API
│ ├─> WebSocket
│ └─> Tester
└─> Redis :6379
Collector Worker
└─> Collector V2 Runtime
└─> Redis
核心模块说明:
main.py:独立调度进程入口,主要用于本地开发或手动运行 Collector / Testersrc/api/:FastAPI 接口、WebSocket、系统状态、日志与配置管理src/collectors/:旧版收集器体系src/collectors_v2/:Collector V2 运行时、仓储、调度与执行引擎src/testers/:异步代理测试器与评分逻辑web-ui/:Vue 3 + TypeScript 前端
适合:
- 需要搭建一个可自托管的免费代理池
- 需要通过页面或 API 查看代理状态、日志和系统运行情况
- 需要以“可配置收集器”的方式扩展代理来源
不适合:
- 对稳定性、合规性、匿名性有强保证要求的生产流量场景
- 把“免费代理”当作高可用基础设施直接依赖
免费代理天然不稳定,项目目标是“自动化维护和可观测”,不是“保证任何代理一定可用”。 使用代理时推荐与本项目在同一网络环境下,避免代理可用性出现较大偏差。
cp env.example .env说明:
.env用于环境变量配置- 项目会在首次启动时自动创建运行时配置文件
- 仓库内提供受 Git 跟踪的
config.default.json作为镜像内默认模板 config.json是运行时生成文件,默认被 Git 忽略;本地默认路径为仓库根目录config.json- 容器默认把运行时配置持久化到
/app/data/config/config.json,请保留该文件给运行中的实例自行维护
建议至少检查这些变量:
API_TOKEN:必填;若未配置,服务会直接拒绝 API / WebSocket 访问(fail closed)COLLECTOR_RUNTIME_MODE:默认v2TIMEZONE:默认Asia/ShanghaiZDAYE_APP_ID/ZDAYE_AKEY:仅在legacy模式或启用内置站大爷收集器时需要,Collector V2 默认不需要APP_IMAGE_TAG:可选,侧边栏版本号优先显示它;CI/CD 自动构建时建议由工作流注入
docker compose up -d --build常用命令:
docker compose ps
docker compose logs -f app collector-worker
docker compose down- Web UI: http://localhost:8080
- Swagger: http://localhost:8080/docs
- ReDoc: http://localhost:8080/redoc
- Health: http://localhost:8080/health
- 打开 Web UI,先设置
API_TOKEN - 进入“系统状态”页,确认 Redis、API、Collector 状态正常
- 进入“收集器管理”页,确认 Collector V2 Worker 在线
- 如果这是首次部署,请先手动创建并测试至少一个收集器;系统不会自动内置默认站大爷收集器
- 等待收集和检测完成后,再到“代理列表”或 API 验证数据
如果你准备通过 Web UI 新增或调整收集器,建议按下面顺序操作:
- 先确认
COLLECTOR_RUNTIME_MODE=v2,并且“系统状态”页里 Collector Worker 在线 - 进入“收集器管理”页,新建或编辑收集器;首次部署时需要手动完成这一步
- 先保存配置,再执行一次“测试运行”
- 查看测试结果、错误摘要和运行日志
- 确认结果正常后再点击“发布”
README 里只保留快速入口,详细表单说明、JSONPath / CSS / XPath 示例、分页配置和站大爷实战示例请直接看:
| 模式 | 说明 |
|---|---|
legacy |
启用旧版 CollectorManager |
v2 |
启用 Collector V2 运行时与独立 Worker |
disabled |
不启动任何 Collector 调度 |
当前推荐模式是 v2。
- Python 3.9+
- Node.js 20+
- Docker 或本地 Redis
macOS / Linux:
./start_dev.sh allWindows PowerShell:
powershell -ExecutionPolicy Bypass -File .\start_dev.ps1先启动 Redis:
docker run -d --name redis-dev -p 6379:6379 redis:7-alpine再启动后端调度和 API:
export REDIS_HOST=localhost
export API_TOKEN=test
python main.py
python src/api/main.py --reload前端:
cd web-ui
npm install
npm run dev如果 main.py 和 src/api/main.py 同时运行,建议为 API 进程关闭内置 tester,避免重复检测:
export DISABLE_API_TESTER=1更多细节请看 docs/guides/development-guide.md。
| 接口 | 说明 |
|---|---|
GET /api/v1/random |
获取一个随机可用代理 |
GET /api/v1/get |
按条件筛选代理 |
GET /api/v1/dashboard/overview |
获取仪表盘概览 |
GET /api/v1/system/status |
获取系统状态 |
GET /api/v1/logs |
查询日志 |
GET /health |
健康检查 |
- HTTP Header:
X-API-Token: your_token - WebSocket:
ws://host/ws/dashboard?token=your_token
| 地址 | 说明 |
|---|---|
ws://host/ws/dashboard?token=... |
仪表盘与 Collector 实时更新 |
ws://host/ws/logs?token=... |
日志实时流 |
后端:
python -m unittest discover -s tests -v前端:
cd web-ui
npm run test:unit
npm run build.
├── main.py
├── src/
│ ├── api/
│ ├── collectors/
│ ├── collectors_v2/
│ ├── database/
│ ├── middleware/
│ ├── testers/
│ └── utils/
├── web-ui/
├── tests/
├── scripts/
├── docs/
│ ├── guides/
│ └── archive/
├── docker-compose.yml
├── docker-compose.dev.yml
├── env.example
└── AGENTS.md
| 文档 | 用途 |
|---|---|
| docs/README.md | 文档总入口 |
| docs/guides/usage-guide.md | 部署后使用说明 |
| docs/guides/development-guide.md | 本地开发与联调 |
| docs/guides/collector-v2-webui-guide.md | Collector V2 Web UI 教程 |
| docs/guides/logging-operations.md | 日志治理与排障 |
| README_DEV.md | 开发者快捷入口 |
本项目使用 MIT License。