fix(login): pcLogin协议真机修正(phone/loginType/companyCode)+secureKey换usercenter端点
浏览器实登抓包确认:POST /usercenter/login/getSecureKey(非newuc GET) +
body {phone,password(RSA-hex),loginType:'yunkecn',companyCode}
实测从500系统错误推进到10300密码错误=协议通,剩加密细节/密码核对(余5次重试暂停试错防锁号)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -144,6 +144,7 @@ async def pc_login(
|
|||||||
username: str,
|
username: str,
|
||||||
password: str,
|
password: str,
|
||||||
secure_key: dict[str, Any],
|
secure_key: dict[str, Any],
|
||||||
|
company_code: str = "",
|
||||||
) -> LoginResult:
|
) -> LoginResult:
|
||||||
"""Call ``POST {base}/usercenter/login/pcLogin`` and parse a LoginResult.
|
"""Call ``POST {base}/usercenter/login/pcLogin`` and parse a LoginResult.
|
||||||
|
|
||||||
@@ -164,9 +165,13 @@ async def pc_login(
|
|||||||
httpx client's cookie jar — ``pcLogin``'s ``Set-Cookie`` lands there
|
httpx client's cookie jar — ``pcLogin``'s ``Set-Cookie`` lands there
|
||||||
automatically.
|
automatically.
|
||||||
"""
|
"""
|
||||||
|
# 真机抓包(2026-08-20 浏览器实登)确认的字段:phone/loginType/companyCode
|
||||||
|
# (旧 account 变体一直被拒"缺少登录参数")
|
||||||
body = {
|
body = {
|
||||||
"account": username,
|
"phone": username,
|
||||||
"password": encrypt_password(password, secure_key),
|
"password": encrypt_password(password, secure_key),
|
||||||
|
"loginType": "yunkecn",
|
||||||
|
"companyCode": company_code,
|
||||||
}
|
}
|
||||||
resp = await client.post("/usercenter/login/pcLogin", json=body)
|
resp = await client.post("/usercenter/login/pcLogin", json=body)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
|
|||||||
@@ -211,8 +211,14 @@ class YunkeClient:
|
|||||||
" client was constructed from an existing session."
|
" client was constructed from an existing session."
|
||||||
)
|
)
|
||||||
secure_key = await get_secure_key(self._client)
|
secure_key = await get_secure_key(self._client)
|
||||||
|
from app.config import get_settings
|
||||||
|
|
||||||
result = await pc_login(
|
result = await pc_login(
|
||||||
self._client, self.username, self.password, secure_key
|
self._client,
|
||||||
|
self.username,
|
||||||
|
self.password,
|
||||||
|
secure_key,
|
||||||
|
company_code=get_settings().yk_company or "",
|
||||||
)
|
)
|
||||||
self.login_result = result
|
self.login_result = result
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user