diff --git a/ArknightsUID/arknightsuid_login/__init__.py b/ArknightsUID/arknightsuid_login/__init__.py index fec09c0..17334f5 100644 --- a/ArknightsUID/arknightsuid_login/__init__.py +++ b/ArknightsUID/arknightsuid_login/__init__.py @@ -27,11 +27,11 @@ async def get_resp_msg(bot: Bot, ev: Event): if not phone_number.isdigit(): return await bot.send("你输入了错误的格式!") resp = await bot.receive_resp( - f"请确认你的手机号码: {phone_number}." "如果正确请回复'确认', 其他任何回复将取消本次操作." + f"请确认你的手机号码: {phone_number}. 如果正确请回复'确认', 其他任何回复将取消本次操作." ) if resp is not None and resp.text == "确认": login = SklandLogin(phone_number) - login.send_phone_code() + _ = login.send_phone_code() code = await bot.receive_resp("请输入验证码:") if code is None or not code.text.isdigit(): return await bot.send("你输入了错误的格式!") @@ -39,7 +39,7 @@ async def get_resp_msg(bot: Bot, ev: Event): login.token_by_phone_code(code.text) login.post_account_info_hg() login.user_oauth2_v2_grant() - (skland_cred, skland_token, skland_userId) = login.generate_cred_by_code() + login.generate_cred_by_code() uid = login.ark_uid skd_uid = login.skland_userId @@ -62,19 +62,19 @@ async def get_resp_msg(bot: Bot, ev: Event): _ = await ArknightsUser.insert_data( ev.user_id, ev.bot_id, - cred=skland_cred, + cred=login.skland_cred, uid=uid, skd_uid=skd_uid, - token=skland_token, + token=login.skland_token, ) else: _ = await ArknightsUser.update_data( ev.user_id, ev.bot_id, - cred=skland_cred, + cred=login.skland_cred, uid=uid, skd_uid=skd_uid, - token=skland_token, + token=login.skland_token, ) if not push_data: await ArknightsPush.insert_push_data(ev.bot_id, uid=uid, skd_uid=skd_uid) diff --git a/ArknightsUID/arknightsuid_login/constant.py b/ArknightsUID/arknightsuid_login/constant.py index 52501c9..70031c6 100644 --- a/ArknightsUID/arknightsuid_login/constant.py +++ b/ArknightsUID/arknightsuid_login/constant.py @@ -5,5 +5,5 @@ ZONAI_SKLAND_URL = "https://zonai.skland.com/" ARK_LOGIN_SEND_PHONE_CODE = ARK_ACCOUNT_SERVER + "general/v1/send_phone_code" ARK_TOKEN_BY_PHONE_CODE = ARK_ACCOUNT_SERVER + "user/auth/v2/token_by_phone_code" ARK_USER_OAUTH2_V2_GRANT = ARK_ACCOUNT_SERVER + "user/oauth2/v2/grant" -ARK_ACCONUT_INFO_HG = SKLAND_WEB_API + "account/info/hg" +ARK_ACCONUT_INFO_HG = "https://web-api.hypergryph.com/account/info/hg" GENERATE_CRED_BY_CODE = ZONAI_SKLAND_URL + "web/v1/user/auth/generate_cred_by_code" diff --git a/ArknightsUID/arknightsuid_login/login.py b/ArknightsUID/arknightsuid_login/login.py index 780114c..88097e3 100644 --- a/ArknightsUID/arknightsuid_login/login.py +++ b/ArknightsUID/arknightsuid_login/login.py @@ -52,8 +52,8 @@ class SklandLogin: _HEADER: ClassVar[Dict[str, str]] = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36", # noqa: E501 "content-type": "application/json;charset=UTF-8", - "origin": "https://www.skland.com", - "referer": "https://www.skland.com", + "origin": "https://ak.hypergryph.com", + "referer": "https://ak.hypergryph.com", } def __init__(self, phone: str, geetest_token: Union[str, None] = None): @@ -63,6 +63,9 @@ class SklandLogin: verify=False, ) self.geetest_token = geetest_token + self.token = None + self.hg_token = None + self.ark_uid = None def send_phone_code( self, @@ -105,7 +108,7 @@ class SklandLogin: "_pass_API", geetest_pass_data.info, ) - self.send_phone_code( + _ = self.send_phone_code( override_geetest=GeneralGeetestData( geetest_challenge=geetest_pass_data.data.challenge, geetest_validate=geetest_pass_data.data.validate, @@ -137,42 +140,14 @@ class SklandLogin: def post_account_info_hg(self): if self.token is None: raise SklandLoginError(ARK_ACCONUT_INFO_HG, "token not set!") - data = AccountInfoHGRequest( - content=self.token, - ) response = self.client.post( ARK_ACCONUT_INFO_HG, - json=mscjson.decode(mscjson.encode(data)), + json={"content": self.token}, ) - set_cookie = response.headers.get("set-cookie") + set_cookie: str = response.headers.get("set-cookie") matches = re.findall(r"ACCOUNT=([^;]+)", set_cookie) - account_cookie = matches[0] - self.client = httpx.Client( - headers=self._HEADER, - verify=False, - cookies={"ACCOUNT": account_cookie}, - ) - response.raise_for_status() - result = convert(response.json(), AccountInfoHGResponse) - if result.code != 0: - raise SklandLoginError(ARK_ACCONUT_INFO_HG, result.msg) - self.get_account_info_hg() - - def get_account_info_hg(self): - if self.token is None: - raise SklandLoginError(ARK_ACCONUT_INFO_HG, "token not set!") - data = AccountInfoHGRequest( - content=self.token, - ) - response = self.client.post( - ARK_ACCONUT_INFO_HG, - json=mscjson.decode(mscjson.encode(data)), - ) - response.raise_for_status() - result = convert(response.json(), AccountInfoHGResponse) - if result.code != 0: - raise SklandLoginError(ARK_ACCONUT_INFO_HG, result.msg) - self.hg_token = result.data["content"] + account_cookie: str = matches[0] + self.hg_token = account_cookie self.get_ark_uid() def user_oauth2_v2_grant(self): @@ -215,11 +190,13 @@ class SklandLogin: ) response.raise_for_status() result_data = response.json() - self.ark_uid = result_data["data"]["uid"] + self.ark_uid: str = result_data["data"]["uid"] def generate_cred_by_code(self): self.client.headers["platform"] = "3" self.client.headers["vName"] = "1.0.0" + self.client.headers["origin"] = "https://zonai.skland.com/" + self.client.headers["referer"] = "https://zonai.skland.com/" self.client.headers["timestamp"] = str(int(datetime.now().timestamp())) self.client.headers["dId"] = get_d_id() response = self.client.post( @@ -237,4 +214,3 @@ class SklandLogin: self.skland_cred = result.data.cred self.skland_token = result.data.token self.skland_userId = result.data.userId - return (self.skland_cred, self.skland_token, self.skland_userId)