558bd8153ffa4b0c7815ded730cbff860414d458
架构: - engine/server.py: asyncio SOCKS5 服务器引擎(含隧道/认证/限速) - engine/instances.py: 多实例管理器(独立事件循环/热启动/热停止) - services/user_service.py: 用户认证/流量统计/IP白名单/防爆破 - services/stats_service.py: 实时监控/流量趋势/连接追踪 - services/backup_service.py: 数据库备份与恢复 - api/v1.py: 完整 RESTful API - web/routes.py: Web 管理面板(暗色 Bootstrap 5 主题) 功能覆盖: ✅ 多实例 SOCKS5 管理(创建/启动/停止/重启/热加载) ✅ 用户认证(无认证/账号密码/流量上限/限速/并发限制) ✅ IP 白名单/黑名单/防爆破 ✅ 实时仪表盘(CPU/内存/网络/活跃连接) ✅ 流量统计(30天趋势图/用户排名/实例统计) ✅ 活跃连接追踪 ✅ 审计日志(事件/用户/IP 筛选) ✅ 数据库备份与恢复 ✅ 管理员密码保护 ✅ 16 项功能测试全部通过
SOCKS Manager — SOCKS5 代理管理系统
基于 Flask + SQLite + Bootstrap 5 的 SOCKS5 代理管理平台,提供 Web 界面和 RESTful API。
功能
- 仪表盘 — 代理总数 / 在线 / 离线统计,最近活跃代理,操作日志
- 代理管理 — 添加 / 编辑 / 删除 SOCKS5 代理(支持用户名密码认证),启用 / 禁用
- 分组管理 — 按颜色分组组织代理,分组筛选
- 健康检测 — SOCKS5 隧道连通性检测(测试 URL httpbin.org),单代理 / 批量检测,延迟统计
- 操作日志 — 增删改操作记录,分页查询
- RESTful API — 全套 CRUD + 健康检测 + 统计接口
- 管理员登录 — 密码保护后台
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.11 + Flask 3.0 + Flask-SQLAlchemy |
| 数据库 | SQLite(零配置,文件存储) |
| 前端 | Jinja2 模板 + Bootstrap 5 + Bootstrap Icons(暗色主题) |
| SOCKS5 | PySocks |
快速开始
cd /root/socks-manager
# 安装依赖
pip install -r requirements.txt --break-system-packages
# 设置管理员密码(首次启动生效)
export SM_ADMIN_PASSWORD=***
# 启动
python3 run.py
# 或: ./run.sh
访问 http://你的IP:5000,默认用户 admin,密码为 SM_ADMIN_PASSWORD 的值。
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
SM_ADMIN_USER |
admin |
管理员用户名 |
SM_ADMIN_PASSWORD |
"" |
管理员密码(必须设置,否则无法登录) |
SM_DB_URI |
sqlite:///socks_manager.db |
数据库连接串 |
SM_HEALTH_TIMEOUT |
10 |
健康检测超时(秒) |
SM_HEALTH_INTERVAL |
300 |
建议的健康检测间隔(秒) |
SM_LOG_LEVEL |
INFO |
日志级别 |
目录结构
socks-manager/
├── app.py # 启动入口
├── config.py # 配置 + 工厂函数
├── auth.py # 登录认证
├── models.py # 数据模型 (Proxy/Group/Log)
├── health.py # SOCKS5 健康检测
├── extensions.py # SQLAlchemy 实例
├── run.py # 直接运行脚本
├── run.sh # 启动 shell 脚本
├── requirements.txt # Python 依赖
├── routes/
│ ├── main.py # Web 路由(页面)
│ └── api.py # RESTful API
└── templates/
├── base.html # 基础布局(侧边栏 + 导航)
├── dashboard.html # 仪表盘
├── proxies.html # 代理列表
├── proxy_form.html # 添加 / 编辑代理
├── groups.html # 分组管理
└── logs.html # 日志
API 参考
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/proxies |
代理列表(支持 ?group=N 筛选) |
| POST | /api/proxies |
创建代理 |
| PUT | /api/proxies/<id> |
更新代理 |
| DELETE | /api/proxies/<id> |
删除代理 |
| POST | /api/proxies/<id>/check |
检测单个代理 |
| POST | /api/proxies/<id>/toggle |
启用/禁用 |
| GET | /api/groups |
分组列表 |
| GET | /api/stats |
统计摘要 |
| GET | /health/check-all |
批量检测全部代理 |
注意事项
- 健康检测通过建立 SOCKS5 隧道连接 httpbin.org 来验证代理可用性,会产生真实网络流量
- 开发服务器不适合生产环境,生产请使用 gunicorn/uwsgi
- SQLite 适合中小型部署(数千代理),超大规模建议切换到 PostgreSQL
Description