斗鱼批量登录 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
├── start_web.sh                # 一键启动
└── pyproject.toml

快速开始

# 一键启动(自动检查依赖)
./start_web.sh

或手动启动:

# 后端
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

敏感数据加密

账号密码、邮箱密码、Cookie、代理密钥等敏感字段会以密文形式落盘。生产环境请在 .env 中设置稳定的 APP_ENCRYPTION_KEY,并长期保留;更换该密钥会导致历史密文无法解密。

python -c "import secrets; print(secrets.token_urlsafe(32))"

角色权限

角色 权限
超级管理员 全部功能 + 用户管理 + 权限分配
运营 账号管理 + 批量登录 + 代理配置 + Cookie 导出
客服 仅查看分配给自己的账号(只显示用户名)

登录流程

1. 获取极验参数 → 滑块验证 → 自动识别缺口
2. 获取邮箱验证 code → 发送验证邮件
3. IMAP 获取验证码 → 提交验证码 → 获取 Cookie

技术栈

  • 后端:FastAPI + SQLAlchemy + SQLite + JWT
  • 前端:React + Ant Design + Vite
  • 核心:Python + OpenCV + pycryptodome
  • 迁移:Alembic

许可证

MIT License

部署

Docker 部署(推荐,生产环境)

# 一键部署(自动构建镜像 + 启动服务)
./deploy.sh

# 或手动操作:
docker compose up -d --build

部署完成后访问 http://服务器IP:8000,默认账号 admin / admin123

Docker 常用命令:

docker compose logs -f        # 查看实时日志
docker compose restart        # 重启服务
docker compose down           # 停止服务
docker compose up -d --build  # 重新构建并启动(代码更新后)

数据持久化: 数据库和日志通过 volume 挂载到宿主机 ./data./logs 目录,容器重建后数据不丢失。

本地开发

# 一键启动(自动检查依赖,前后端分离开发模式)
./start_web.sh

# 或手动启动:
# 后端
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

代理配置说明

在 Web 界面"代理配置"页面设置:

  1. API 代理:填入代理 API 地址(支持返回 JSON 格式),系统自动获取并验证代理
  2. 白名单:如代理需要白名单,填入 UID 和 UKEY,系统自动同步出口 IP
  3. 出口 IP 漂移:移动网络出口 IP 频繁漂移时,系统会保留多个出口 IP 在白名单中

代理 API JSON 格式:

// 正常返回
{"code":0,"success":"true","msg":"","data":[{"IP":"1.2.3.4","Port":8080}]}

// 白名单错误
{"code":-1,"msg":"51.请先添加白名单:1.2.3.4","data":""}
S
Description
No description provided
Readme
161 MiB
Languages
Python 74.2%
TypeScript 22.5%
JavaScript 1.9%
Shell 1.1%
Dockerfile 0.2%