彻底优化项目结构,使用 web

This commit is contained in:
yml2213
2026-06-22 13:39:03 +08:00
parent 347edb8103
commit 63c1ffa046
46 changed files with 127 additions and 3077 deletions
+53 -113
View File
@@ -1,144 +1,84 @@
# 斗鱼自动登录工具 - Python版
# 斗鱼批量登录 Web 后台
全自动登录斗鱼账号获取Cookie。
全自动登录斗鱼账号获取 Cookie 的 Web 管理平台
## 功能特性
- ✅ 自动过极验v3滑块验证
- ✅ 自动获取邮箱验证码(IMAP
- ✅ 批量账号登录
- ✅ Cookie持久化存储
- ✅ 代理支持
- ✅ GUI导入账号、自动保存配置、代理测试
- 极验 v3 滑块自动识别
- 邮箱验证码自动获取IMAP
- 批量登录 + 实时日志推送(WebSocket
- 代理 & 白名单自动管理
- 角色权限控制(超级管理员 / 运营 / 客服)
## 项目结构
```
douyu_login_py/
├── main.py # 主入口
├── config.yaml # 配置文件
├── pyproject.toml # uv项目配置
├── douyu/ # 斗鱼登录模块
│ ├── config.py # 配置管理
│ ├── crypto.py # 加密工具
│ ├── email_verifier.py # 邮箱验证
│ └── login.py # 登录核心
── geetest/ # 极验滑块破解(复用geetest-v3-silde-crack
├── solver.py
├── network.py
│ ├── crypto.py
│ ├── imaging.py
└── trajectory.py
├── utils/ # 工具模块
├── logger.py
│ └── helpers.py
── data/
── accounts.json # 账号配置
└── cookies/ # Cookie存储
├── 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 路由
│ └── services/ # 业务服务
│ └── frontend/ # React + Ant Design 前端
── utils/ # 通用工具
── logger.py
├── data/ # 运行时数据(gitignore
├── start_web.sh # 一键启动
└── pyproject.toml
```
## 安装依赖
## 快速开始
```bash
uv sync
# 一键启动(自动检查依赖)
./start_web.sh
```
## GUI使用
GUI不再依赖 `config.yaml` 启动,账号数据在界面里导入,代理、极验重试、日志等级和账号列表会自动保存到 `data/gui_state.json`
或手动启动:
```bash
uv run python main.py --gui
# 后端
uv pip install -e .
.venv/bin/python -m uvicorn web.backend.main:app --reload --port 8000
# 前端
cd web/frontend && npm install && npm run dev
```
支持导入格式:
访问 `http://localhost:5173`,默认账号 `admin / admin123`
```text
用户名|密码|邮箱|邮箱密码
```
## 角色权限
也可以导入 `txt``csv``json``yaml` 文件。旧版 `config.yaml` 可直接在 GUI 中作为 YAML 文件导入,用来迁移账号数据。
代理区域支持 API 获取和静态代理,填写后可以点击“测试代理”验证出口连通性。开始批量登录时也会先进行代理预检,只有拿到可用出口后才会继续登录流程。
## 命令行配置
命令行模式仍使用 `config.yaml`
```yaml
accounts:
- username: "your_username"
password: "your_password"
email: "your_email@bdhg.xyz"
email_password: "your_email_password"
email_imap_server: "mail.bdhg.xyz"
email_imap_port: 993
```
## 使用方法
### 单账号登录
```bash
# 登录第一个账号
uv run python main.py
# 登录指定索引的账号
uv run python main.py -i 0
```
### 批量登录
```bash
uv run python main.py --batch
```
### 详细日志
```bash
uv run python main.py -v
```
| 角色 | 权限 |
|---|---|
| 超级管理员 | 全部功能 + 用户管理 + 权限分配 |
| 运营 | 账号管理 + 批量登录 + 代理配置 + Cookie 导出 |
| 客服 | 仅查看分配给自己的账号(只显示用户名) |
## 登录流程
```
1️⃣ 第一次登录 → 获取极验参数
2️⃣ 极验滑块验证 → 自动识别缺口位置
3️⃣ 第二次登录 → 获取邮箱验证code
4️⃣ 发送邮箱验证邮件
5️⃣ IMAP获取验证码
6️⃣ 提交验证码
7️⃣ 完成登录获取Cookie
1. 获取极验参数 → 滑块验证 → 自动识别缺口
2. 获取邮箱验证 code → 发送验证邮件
3. IMAP 获取验证码 → 提交验证码 → 获取 Cookie
```
## Cookie使用
## 技术栈
登录成功后,Cookie会保存到 `data/cookies/` 目录。
可以使用以下方式读取Cookie
```python
from utils.helpers import load_cookie
cookie = load_cookie("your_username")
print(cookie)
```
## 极验滑块破解
本项目复用了 `geetest-v3-silde-crack` 的滑块破解方案,包含:
- RSA/AES加密
- 轨迹生成
- 图像识别(OpenCV
- 性能数据伪造
## 注意事项
1. 请确保邮箱支持IMAP协议
2. 邮箱需要开启IMAP访问权限
3. 部分邮箱需要使用应用专用密码
4. 建议使用代理避免IP限制
- 后端:FastAPI + SQLAlchemy + SQLite + JWT
- 前端:React + Ant Design + Vite
- 核心:Python + OpenCV + pycryptodome
## 许可证