Files
live-hub-py/README.md
T
2026-08-12 17:59:26 +08:00

152 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 斗鱼批量登录 Web 后台
全自动登录斗鱼账号、获取 Cookie 的 Web 管理平台。
## 功能特性
- 极验 v3 滑块自动识别
- 邮箱验证码自动获取(IMAP
- 批量登录 + 实时日志推送(WebSocket
- 代理 & 白名单自动管理
- 角色权限控制(超级管理员 / 运营 / 客服)
## 项目结构
```
douyu_login_py/
├── core/ # 核心业务逻辑
│ ├── models.py # Account, ProxyConfig 数据类
│ ├── douyu/ # 斗鱼登录模块
│ │ ├── login.py # 登录流程
│ │ ├── crypto.py # 密码加密
│ │ ├── email_verifier.py # 邮箱验证码
│ │ ├── proxy.py # 代理管理
│ │ └── whitelist.py # 白名单管理
│ └── geetest/ # 极验验证码求解
│ ├── common/ # 公共工具(网络/加密/图像/轨迹)
│ └── v3_slide/ # v3 滑块求解器
├── web/ # Web 后台
│ ├── backend/ # FastAPI 后端
│ │ ├── main.py # 入口
│ │ ├── routers/ # API 路由
│ │ ├── migrations/ # Alembic 数据库迁移
│ │ └── services/ # 业务服务
│ └── frontend/ # React + Ant Design 前端
├── utils/ # 通用工具
│ └── logger.py
├── data/ # 运行时数据(gitignore
├── deploy.sh # 部署/重置工具
└── pyproject.toml
```
## 快速开始
```bash
# Docker 部署(推荐)
./deploy.sh
```
访问 `http://localhost:8800`,默认账号 `admin / admin123`
### 应用宝充值 Worker
应用宝充值 Worker 已合并到 Web 应用容器中,内部仅监听 `127.0.0.1:8810`,不发布额外端口。任务数据与应用数据一起保存在 `data/yyb-worker-jobs/`
```bash
cd /opt/douyu_login_py
python3 -c 'import secrets; print(secrets.token_urlsafe(32))'
```
将生成的值写入项目 `.env`
```dotenv
YYB_WORKER_KEY=随机密钥
```
随后执行 `./deploy.sh`,它会构建并启动应用与 MySQL。Worker 不发布端口;扫码图片和支付二维码只经后台授权接口返回。服务器只需要此仓库,不需要部署 `js_reverse`
本机热更新调试使用 `./dev.sh`(或 `./deploy.sh dev`)。它会直接启动一个仅绑定 `127.0.0.1:8810` 的开发 Worker,后端自动使用该地址;Worker 动态数据写入 `data/yyb-worker-dev/`,按 `Ctrl+C` 会一并停止。
**常用命令:**
```bash
./deploy.sh # 构建并部署
./deploy.sh logs # 查看实时日志
./deploy.sh stop # 停止服务
./deploy.sh restart # 重启服务
./deploy.sh reset # 重置所有数据(需二次确认)
```
### 敏感数据加密
账号密码、邮箱密码、Cookie、代理密钥等敏感字段会以密文形式落盘。生产环境请在 `.env` 中设置稳定的 `APP_ENCRYPTION_KEY`,并长期保留;更换该密钥会导致历史密文无法解密。
```bash
python -c "import secrets; print(secrets.token_urlsafe(32))"
```
### 邮件验证码服务
验证码读取默认使用内置的 Roundcube 服务地址;如部署自己的邮件读取服务,可在 `.env` 中设置 `MAIL_ROUNDCUBE_URL` 覆盖。
## 角色权限
| 角色 | 权限 |
|---|---|
| 超级管理员 | 全部功能 + 用户管理 + 权限分配 |
| 运营 | 账号管理 + 批量登录 + 代理配置 + Cookie 导出 |
| 客服 | 仅查看分配给自己的账号(只显示用户名) |
## 登录流程
```
1. 获取极验参数 → 滑块验证 → 自动识别缺口
2. 获取邮箱验证 code → 发送验证邮件
3. IMAP 获取验证码 → 提交验证码 → 获取 Cookie
```
## 技术栈
- 后端:FastAPI + SQLAlchemy + SQLite + JWT
- 前端:React + Ant Design + Vite
- 核心:Python + OpenCV + pycryptodome
- 迁移:Alembic
## 许可证
MIT License
## 部署
### Docker 部署
```bash
# 一键部署(自动构建镜像 + 启动服务)
./deploy.sh
# 重置所有数据(删除数据库/Cookie/日志,需二次确认)
./deploy.sh reset
```
部署完成后访问 `http://服务器IP:8800`,默认账号 `admin / admin123`
**数据持久化:** 数据库和日志通过 volume 挂载到宿主机 `./data``./logs` 目录,容器重建后数据不丢失。
### 代理配置说明
在 Web 界面"代理配置"页面设置:
1. **API 代理**:填入代理 API 地址(支持返回 JSON 格式),系统自动获取并验证代理
2. **白名单**:如代理需要白名单,填入 UID 和 UKEY,系统自动同步出口 IP
3. **出口 IP 漂移**:移动网络出口 IP 频繁漂移时,系统会保留多个出口 IP 在白名单中
**代理 API JSON 格式:**
```json
// 正常返回
{"code":0,"success":"true","msg":"","data":[{"IP":"1.2.3.4","Port":8080}]}
// 白名单错误
{"code":-1,"msg":"51.请先添加白名单:1.2.3.4","data":""}
```