Commit Graph
147 Commits
Author SHA1 Message Date
yml2213 d3005478a9 feat(huya): 支持四段式账号导入接码及旋转/文本点选多级验证码闭环过验
- 账号导入:支持'账号----密码----手机号----接码链接'四段式解析与持久化存储
- 旋转验证码 (rotate_auth / xz):逆向分析官方协议,基于圆周边界采样互相关算法秒级计算旋转还原角度
- 文本点选验证码 (dx_auth):内置成语与古诗名句语料,支持题干菜名提取与古诗/成语挖空正则求解及小图动态合成
- 短信二次验证 (sms_auth2):结合 sms_url 自动轮询接码链接并 Hex 编码提交官方过验
- 前端交互:增加接码标签、在线查询短信验证码、一键自动短信登录与测试接码链接功能
- 回归测试:新增旋转验证、短信接码流与文本点选测试用例(173 passed)
2026-09-06 13:56:44 +08:00
yml2213 4f9a6864eb 优化验证码展示 2026-09-06 13:02:37 +08:00
yml2213 8309072120 统一推送前Python代码格式 2026-09-05 19:25:46 +08:00
yml2213 230d6c1918 虎牙人工兑换改用本机浏览器并新增扩展自动注入登录态
移除服务器浏览器方案(容器/Xvfb/noVNC/CDP 会话管理),后端仅下发
兑换材料;新增内置 Chrome/Edge 扩展一键写入 huya.com 登录态,
未安装扩展时回退控制台脚本手动注入,兑换始终由用户手动完成。
2026-09-05 17:55:31 +08:00
yml2213 95ad900ef0 统一推送前Python代码格式 2026-09-02 18:11:41 +08:00
yml2213 aaaa568916 修正活动WSS会话guid一致性 2026-09-02 18:07:31 +08:00
yml2213 92ba6cbc62 闭合QIMEI h38兼容键 2026-09-02 17:51:12 +08:00
yml2213 1f3773de28 修正QIMEI UUID42随机段生成 2026-09-02 17:15:06 +08:00
yml2213 17ee943753 复刻QIMEI UUID42并默认使用无头浏览器 2026-09-02 16:59:46 +08:00
yml2213 c62c025ced 整理虎牙文档并接入设备画像指纹 2026-09-02 13:42:32 +08:00
yml2213 2a1b1e642c 优化虎牙精英宝典工作台与Cookie生成 2026-09-02 12:48:41 +08:00
yml2213 8fef04d0af web_cookie_fields 用逆向算法替换随机:__yamid_new=UUIDv1时间戳复刻、game_did=35位63字符集、_yasids同源、_qimei_uuid42=1a前缀、guid回退加固定段 2026-09-01 23:48:00 +08:00
yml2213 61eb434138 双份cookie存储:raw_cookie 保存App原始凭据,与网页运行ck分离
网页运行ck(cookie列)含本地随机生成的网页设备字段,若被风控标记
无法还原纯净登录凭据;新增 raw_cookie 保存16字段App原始态,供
设备态重建/审计/复核登录有效性。

- HuyaAccount 加 raw_cookie 列(alembic 0034,MySQL TEXT nullable)
- HuyaLoginResult 加 raw_cookie 字段;App登录链补齐前快照原始凭据
- upsert_huya_cookie 支持双写;app-password-login 路由透传 raw_cookie
- 存量行 raw_cookie 为 NULL(老账号无快照),新登录自动填充
2026-09-01 23:15:20 +08:00
yml2213 45da352668 登录链补齐网页设备字段并修正udb_appid为5002
App模拟扫码登录只产出16个udb_*认证字段且udb_appid=5008(App渠道);
真实网页登录态是41字段+udb_appid=5002,缺字段注入浏览器会导致
UDB SDK判定设备态不完整。登录成功返回前用 fill_web_cookie_fields
补齐guid/qimei/yamid/game_did等字段并强制udb_appid=5002。

实测:16字段App ck -> 41字段网页形态,checkLogin=isLogined:true、
cookie/verify returnCode:0,与8.31真实扫码登录抓包一致
2026-09-01 22:44:42 +08:00
yml2213 5dc736516f 补齐网页Cookie缺失字段并接入会话自动预取guid
- 新增 core/huya/web_cookie_fields.py:4 核心设备字段(guid 取自 wsLaunch 会话、
  _qimei_uuid42/__yamid_new/game_did 随机对齐格式)+ qimei 皮肤 + 22 个统计/会话字段
- elite_session 活动通道初始化时若缺网页字段,先 wsLaunch 预取服务端认可 guid,
  补齐 cookie 后重建会话;业务 RPC 统一走补齐后的 cookie
- 实测:账号 id=58(原始 16 字段登录态)checkUserBindGameAccount status=200
  (和平精英已绑定/收麦季)、getUserScore status=200(积分 4880)
- 附补齐方案与浏览器实测来源记录 docs/HUYA_CHAT_缺失字段补齐方案.md
2026-09-01 22:12:58 +08:00
yml2213 61ce0c9672 WSS连接不信任环境代理避免SOCKS劫持 2026-09-01 20:30:01 +08:00
yml2213 9f3e3a74ce 修正活动WSS AUTH帧对齐9.1抓包字节 2026-09-01 20:25:31 +08:00
yml2213 727c32a5f5 接入匿名设备态协议补齐Cookie字段并放宽保存 2026-09-01 19:29:56 +08:00
yml2213 8447ca82ed 真实浏览器抓包与匿名设备态协议生成器 2026-09-01 19:17:36 +08:00
yml2213 48c37bb8d7 虎牙网页Cookie来源驱动合并与WSS传输门禁 2026-09-01 19:17:32 +08:00
yml2213 8e3c0e69bc 修正虎牙活动wsLaunch包封装 2026-09-01 12:56:37 +08:00
yml2213 5a1456e3cb 修正虎牙活动WSS初始化序列 2026-09-01 12:52:26 +08:00
yml2213 26514b332d 完成虎牙宝典WSS绑定与快照隔离重构 2026-09-01 12:40:22 +08:00
yml2213 2fca1210bb 切换虎牙宝典活动任务到WSS会话 2026-09-01 12:23:43 +08:00
yml2213 17e72d40a5 支持虎牙活动WSS自定义连接来源 2026-09-01 12:21:09 +08:00
yml2213 aab84e0fb5 切换虎牙宝典开通任务到WSS会话 2026-09-01 12:20:58 +08:00
yml2213 3aca102741 补齐虎牙宝典活动与商城WSS协议 2026-09-01 11:46:40 +08:00
yml2213 eb065a7c77 接入虎牙精英宝典最新商城前置流程 2026-09-01 11:42:52 +08:00
yml2213 684e16a07a 重构虎牙精英宝典协议与支付状态链路 2026-09-01 11:31:15 +08:00
yml2213 d391e2ce3e 移除二维码信封历史数据依赖 2026-08-31 17:43:55 +08:00
yml2213 05b1325a04 清理虎牙登录旧数据依赖并统一动态环境 2026-08-31 17:27:18 +08:00
yml2213 76b14b69b7 修复虎牙手机号登录并统一部署项目名 2026-08-31 16:11:08 +08:00
yml2213 09ab80e062 完成 Ruff 全量清理 2026-08-31 10:55:44 +08:00
yml2213 840af3108e 清理未使用导入和局部变量 2026-08-31 10:31:32 +08:00
yml2213 b58c6b4357 执行 Ruff 安全自动修复 2026-08-31 10:28:14 +08:00
yml2213 2a1d27f953 补充设备画像兜底说明 2026-08-30 23:05:20 +08:00
yml2213 f4ed518b50 统一虎牙 App 登录设备画像 2026-08-30 23:04:28 +08:00
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 92dc461e52 type: 收窄虎牙 OCR 与登录类型 2026-08-30 20:24:25 +08:00
yml2213 3f97dbe525 type: 收窄虎牙验证与设备注册类型 2026-08-30 20:07:12 +08:00
yml2213 563477fde8 type: 修复虎牙信封解析偏移类型 2026-08-30 20:05:06 +08:00
yml2213 6439dc1942 type: 收窄虎牙 HTTP 与 WSS 客户端类型 2026-08-30 20:04: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 239ef91c56 fix(web): 设备绑定页『最后登录』修复 — 登录时间记录下沉到 App 登录本体
- device_profile.record_login(): 登录成功/失败均写 last_login (bound_at 首次绑定)
- HuyaAppPasswordLogin.login() 包装 _login_impl, GUI 批量/行内/CLI 全覆盖
  (此前只有 account_env CLI 路径写元数据, GUI 登录该列全为 '-')
- 修复 _enrich_profile 原地修改导致回写判断失效 (存量 hebe/guid32 被旧代码
  整体回写冲掉后无法自动补齐) — 改为返回新字典
- 存量 6 账号画像已全部补齐 hebe/guid32
2026-08-29 16:59:16 +08:00