feat(huya): 整合 App 协议登录获取 Cookie 全链路并与 Web 登录解耦

- core/huya: 新增 app_login, wup_encoder, nonce_forge, cert_forge, envelope_forge, device_profile, udb_aes
- core/huya/__init__.py: 导出 login_huya_app_password 与 HuyaAppPasswordLogin
- web/backend: 新增 /accounts/app-password-login 与 /accounts/app-password-login/selected 路由及 Schema,与原 Web 密码登录独立分开
- web/frontend: 增加 App 登录 API 与前端界面“App 登录选中”操作,弹窗结果明确区分
- tests: 新增 test_huya_app_login.py 单元测试覆盖全链路
This commit is contained in:
yml2213
2026-08-26 15:51:30 +08:00
parent 4eec01568f
commit da2cf5a61d
22 changed files with 2572 additions and 11 deletions
+25
View File
@@ -12,11 +12,15 @@ __all__ = [
"HuyaLoginError",
"HuyaLoginResult",
"HuyaPasswordLogin",
"HuyaAppLoginError",
"HuyaAppQrAuthRequiredError",
"HuyaAppPasswordLogin",
"HuyaSmsCodeResult",
"HuyaSmsLogin",
"HuyaVerificationError",
"HuyaVerificationSolver",
"login_huya_password",
"login_huya_app_password",
"login_huya_sms",
"send_huya_sms_code",
"solve_huya_verification",
@@ -57,6 +61,27 @@ def __getattr__(name: str):
}
globals().update(values)
return values[name]
if name in {
"HuyaAppLoginError",
"HuyaAppQrAuthRequiredError",
"HuyaAppPasswordLogin",
"login_huya_app_password",
}:
from .app_login import (
HuyaAppLoginError,
HuyaAppQrAuthRequiredError,
HuyaAppPasswordLogin,
login_huya_app_password,
)
values = {
"HuyaAppLoginError": HuyaAppLoginError,
"HuyaAppQrAuthRequiredError": HuyaAppQrAuthRequiredError,
"HuyaAppPasswordLogin": HuyaAppPasswordLogin,
"login_huya_app_password": login_huya_app_password,
}
globals().update(values)
return values[name]
if name in {
"HuyaSmsCodeResult",
"HuyaSmsLogin",