Commit Graph
71 Commits
Author SHA1 Message Date
yml2213 47e19ed7b2 style: 统一 Ruff 代码格式 2026-08-30 21:04:52 +08:00
yml2213 c891ac982e type: 收敛测试 schemas 与协议层类型 2026-08-30 20:35:08 +08:00
yml2213 40e6f482b4 type: 收窄活动客户端响应类型 2026-08-30 19:52:55 +08:00
yml2213 6a16d561d2 type: 收窄豆鱼服务层类型 2026-08-30 19:48:41 +08:00
yml2213 8fe9fdfd8b feat(douyu): 斗鱼任务接入代理 — 应对兑换 IP 频控 (精英手册火爆)
配置源 = 代理配置页 (与 CK 检测/虎牙注册同款), 开关在代理配置页:
- 静态模式: 手填 http/https → 全任务同一代理
- API 模式: 每任务取新代理 (ProxyFetcher, 白名单同步, 1.5s 间隔限速),
  失败降级直连并推送告警
- DouyuActivityClient 支持 proxies (session 级, 覆盖全部请求点;
  trust_env=False 维持不变, 不受环境变量影响)

按拆分后新结构落在 douyu_runner_core.py; 触及精英手册/和平小店/电竞等
全部斗鱼任务出网。三种模式行为断言 + 94 单测通过
2026-08-30 11:19:15 +08:00
yml2213 39b202bc3f refactor(douyu): runner 按功能域拆分 Mixin + 精英手册兑换对齐真机流程 (HAR 审核通过)
拆分: douyu_runner.py (-3186行) → core/bind/manual/gold/donate/goods/xpd 七个
Mixin + 入口聚合类, douyu_batch_registry 供 routers 重导出

精英手册兑换对齐 HAR 抓包 (activity_client +379 行):
- csrf 复用 Cookie 值不再每次 generateCsrf (HAR 实测全程零 csrf 请求),
  仅服务端报 csrf 错误时 force_refresh 重试一次
- pay Referer 补 roomId 对齐浏览器
- 新增手册链路接口: elite_user_info/storedetail/pre_exchange check+confirm/
  subscribe/batch_limit/赠品兑换/自动转换
- resolve_exchange_plan: 浏览器兑换按钮状态机路由 (normal/subscribe/
  pre_exchange/wait/blocked)
- 兑换执行: 人类节奏抖动 → 锁单(火爆重试1次) → 支付分级退避
  (频控 30/60/90s 4次上限, 普错 2/5/10/20s 5次上限, 300s 锁单期 15s 余量,
  可中断睡眠)

测试: 新增 17 项 (csrf 复用语义/状态机路由/Referer), 全量 94 通过;
未夹带代理改动
2026-08-30 11:05:18 +08:00
yml2213 6e17a575dd Revert "fix(douyu): 精英宝典兑换等斗鱼任务接入代理 — 此前全部裸连"
This reverts commit a05ae245bf.
2026-08-30 10:26:17 +08:00
yml2213 a05ae245bf fix(douyu): 精英宝典兑换等斗鱼任务接入代理 — 此前全部裸连
问题: DouyuBatchRunner/_client 创建的 DouyuActivityClient 无 proxies,
trust_env=False 下斗鱼任务(精英宝典兑换/和平小店/电竞/送礼等全部 45 个
请求点)直连本机出口 IP, 代理配置页形同虚设。

- activity_client: __init__ 支持 proxies (session 级, 一次覆盖全部请求)
- douyu_runner: 装载全局代理配置 (与 CK 检测/虎牙注册同源 代理配置页):
  · 静态模式: 配置页手填 http/https → 全任务同一代理
  · API 模式: 每任务从代理 API 取新代理 (ProxyFetcher, 含白名单同步,
    1.5s 最小间隔防打爆), 失败降级直连并推送告警日志
- 验证: 77 单测 OK; 三种模式(静态/API/关闭)行为断言通过
2026-08-30 10:25:16 +08:00
yml2213 6ded82ac8b fix(douyu): reject invalid activity cookies 2026-08-28 15:51:59 +08:00
yml2213 9ee4e49a50 feat(douyu): support elite handbook lock orders 2026-08-28 14:06:11 +08:00
yml2213 e2a45b7893 优化斗鱼充值日志与配置 2026-08-14 11:27:53 +08:00
yml2213 0bf69c1240 优化斗鱼充值 2026-08-13 21:43:27 +08:00
yml2213 902e669614 功能: 接入鱼翅供应商直充渠道 2026-08-13 21:11:20 +08:00
yml2213 420ee3d95c 功能: 增加鱼翅直充接口基础层 2026-08-13 16:44:20 +08:00
yml2213 ba35ac5c0d fix: preserve xpd role platform in wallet queries 2026-08-09 10:06:57 +08:00
yml2213 a342dddcb6 feat: add xpd purchase records view 2026-08-08 21:41:44 +08:00
yml2213 de23d87087 和平小店可以返回所有商品 2026-08-08 00:30:58 +08:00
yml2213 ec5eb637bb feat(douyu): 支持和平小店商品兑换 2026-08-07 22:47:13 +08:00
yml2213 a67d144b78 支持跳过斗鱼手机号绑定并优化标签筛选 2026-08-07 22:07:39 +08:00
yml2213 a515ea6e0a feat(douyu): 和平小店扭蛋碎片查询 + 深色模式修复 + 任务状态 WS 即时推送
- 碎片: 新增 query_xpd_fragments 任务, 复用 e语言 gamecoin 接口取扭蛋币 jb2,
  账号已存角色回退(规避 Livelink 风控), accounts.xpd_fragments 字段与迁移
- 列表: 和平小店移除鱼翅/限制兑换/换绑时间列, 新增扭蛋碎片列;
  操作区硬编码白底改用 theme token, 深色模式适配(三个手册共用)
- 轮询: 任务状态经 WS(level=task)即时推送(二维码/绑定进度即时展示),
  pending/running/终态全覆盖, REST/WS 载荷统一 douyu_task_payload,
  raw 快照递归剥离, HTTP 轮询降频 5s/30s 兜底
2026-08-06 20:21:28 +08:00
yml2213 5f63d77dc3 feat(douyu): 和平小店绑定功能(生成绑定二维码/查询绑定信息)
- activity_client: xpd_bind_qr(roleParam 签发 livelink 绑定链接, 微信扫码进小程序绑定)
  + xpd_bind_info(bindInfo 查询绑定状态/角色/平台), gameRole 非 dict 边界防护
- runner/service: 注册 get_xpd_bind_qr / query_xpd_bind_info 任务, 回写
  xpd_game_name / xpd_bind_status
- router: get_xpd_bind_qr 的 url 加入列表接口保留白名单(二维码展示)
- 前端: 和平小店面板新增两个按钮, 二维码列支持 get_xpd_bind_qr 展示/放大
2026-08-06 17:33:11 +08:00
yml2213 fdc74eba8c feat(douyu): 新增和平小店查询模块(绑定角色/商品列表/点券余额)
- activity_client: getIframeUrl 签发 code/sig,道聚城 getrole.out/recommend/balance 接口
  (2026-08 起需 isCode=1 + authType=delegate + sAnchorId 才能通过 Livelink 校验)
- 迁移 0016: accounts xpd_* 字段、douyu_config 小店配置(actAlias/actId/rid)、
  douyu_xpd_goods_snapshot 商品快照表
- runner/service/router/schema 注册 query_xpd_role/refresh_xpd_goods/query_xpd_balance
  三个任务,任务结果剥离 role.raw 防 openid 泄露
- 前端: 和平小店路由/菜单/DouyuTasksPage 三态/商品下拉/配置弹窗
2026-08-06 17:23:59 +08:00
yml2213 de2e53748d fix(douyu): 修复未换绑成功时角色信息被待确认新角色污染 & 增加绑定接口明细日志 2026-08-02 13:18:56 +08:00
yml2213 8de269f958 增加兑换 2026-07-28 18:12:11 +08:00
yml2213 624198bca4 优化电竞手册换绑时间展示 2026-07-28 17:27:35 +08:00
yml2213 d7a8666fe4 新增电竞手册独立绑定流程 2026-07-28 17:12:08 +08:00
yml2213 6ca7898520 优化斗鱼支付后自动刷新 2026-07-25 11:46:11 +08:00
yml2213 9471a5b4ff 修复斗鱼绑定主链路:双 actAlias 分工与任务驱动扫码确认
扫码/确认走活动 alias,角色与换绑最新态优先查 cjm;生成二维码前强制校验换绑冷却,前端以任务结果为单一数据源展示二维码、待确认角色与换绑时间。
2026-07-24 22:36:25 +08:00
yml2213 781ad74762 修复邮箱验证码日期解析 BUG:旧邮件完整时间戳格式无法解析,导致每次命中同一旧验证码
- 新增 YYYY-MM-DD HH:MM 和 YYYY-MM-DD HH:MM:SS 格式解析
- 新增 MM-DD HH:MM 格式解析
- 日期无法解析时跳过该邮件而非放行(安全兜底)
2026-07-24 20:42:57 +08:00
yml2213 62099e8d68 新增斗鱼活动任务模块:绑定、宝典、鱼翅、积分、兑换等功能
- 新增 activity_client.py:封装斗鱼活动/兑换/充值/送礼接口
- 新增 cookie_utils.py:Cookie 解析与规范化工具
- 新增 douyu_service/douyu_runner:斗鱼任务服务层与批量执行器
- 新增 douyu 路由:任务类型查询、账号列表、配置管理、商品管理、批量任务、WebSocket 日志
- 新增 models/schemas:DouyuTask/DouyuConfig/DouyuGoodsSnapshot 模型,Account 扩展点数/鱼翅/绑定状态等字段
- 新增数据库迁移:斗鱼活动相关表与 accounts 字段补充
- 新增前端 DouyuTasksPage 任务操作台页面
- 兑换商品请求添加 sec-ch-ua 反检测头
- 兑换商品支持最多 8 次重试 + csrf_token 自动刷新
- 注册 douyu:task / douyu:config 权限点
- 侧边栏新增斗鱼分组与任务操作台菜单入口
2026-07-24 16:11:39 +08:00
yml2213 cd2d02c86e 增加斗鱼账号检测功能 2026-07-09 23:12:39 +08:00
yml2213 0faaa2c302 增加另一个登录接口-登录错误 2026-06-26 17:43:00 +08:00
yml2213 d7d7c0cbb0 增加另一个登录接口 2026-06-26 17:22:51 +08:00
yml2213 f736ef4f4c 优化邮箱登录错误分支,增加备用密码 2026-06-25 09:58:46 +08:00
yml2213 f21f82cbed ck 复制格式优化,修复错误 2026-06-25 09:16:23 +08:00
yml2213 0b4fe1daa2 继续优化登录逻辑 2026-06-25 08:40:00 +08:00
yml2213 a62e7c192f 优化白名单逻辑 2026-06-25 08:19:18 +08:00
yml2213 ef12dcf4a3 优化代理相关, 移除旧的死代码 2026-06-25 08:04:56 +08:00
yml2213 a7da949d9c 修复Roundcube空URL和白名单重复同步
1. ROUNDCUBE_URL: os.getenv返回空字符串时不回退默认值,改为 or 默认值
2. ProxyFetcher: 缓存已同步白名单IP,后续线程跳过重复同步
2026-06-24 16:04:21 +08:00
yml2213 e478ac4d09 简化登录流程:砍掉代理池,极验不内部切代理
- 新建 ProxyFetcher 替代 ProxyManager,每次从API取1个代理,无池无锁无冷却
- 极验最多3次尝试,失败直接抛异常回到login整体重试取新代理
- 删掉极验内部的 refresh_proxy/proxy_switches/_soft_fail_streak 逻辑
- login整体重试时取新代理从头走完整流程
- 代理验证超时从(5,8)缩短为(3,5),白名单同步后立即重试不等待
- login_service 删掉60行代理池预检/等待代码
- 修复邮件验证码日期比较:Roundcube分钟精度与秒级时间戳对齐
2026-06-24 15:37:48 +08:00
yml2213 ca5bf3531d 优化代理相关的 2026-06-24 14:44:09 +08:00
yml2213 83345dfdc5 增加了代理平台和日志 2026-06-24 14:22:29 +08:00
yml2213 0d03b2c242 优化登录重试与配置清理 2026-06-24 10:20:33 +08:00
yml2213 72248eb3cc 拆分补CK逻辑 2026-06-24 09:38:17 +08:00
yml2213 d87aa7c1e6 移除HTTP详情请求日志 2026-06-24 09:29:47 +08:00
yml2213 7bb50a9bbf 增强登录稳定性 2026-06-24 09:17:15 +08:00
yml2213 177ec42416 加密敏感数据并优化补CK流程 2026-06-24 09:10:31 +08:00
yml2213 8e65af538c 完全对齐目标 ck 2026-06-24 08:28:37 +08:00
yml2213 ae92cd2441 cvl_csrf_token 是有了, 但是 acf_ccn 还没有 2026-06-24 08:15:15 +08:00
yml2213 4813eb039d feat: 极验验证默认无限重试,由登录整体超时兜底
- max_proxy_retries 默认值从10改为0(无限重试)
- _solve_geetest 增加 deadline 参数,超时则主动退出
- login() 计算 deadline 并传递给极验验证
- 前端/Schema/Service 默认值同步更新
2026-06-23 23:40:40 +08:00