diff --git a/backend/api_service/app/routers/accounts.py b/backend/api_service/app/routers/accounts.py index df0b9be..4aec281 100644 --- a/backend/api_service/app/routers/accounts.py +++ b/backend/api_service/app/routers/accounts.py @@ -218,7 +218,12 @@ async def _verify_weibo_cookie(cookie_str: str) -> dict: headers=WEIBO_HEADERS, cookies=cookies, ) - data = resp.json() + try: + data = resp.json() + except Exception: + # 非 JSON 响应(可能是 GBK 编码的登录页),视为 Cookie 失效 + return {"valid": False, "uid": None, "screen_name": None} + if data.get("ok") != 1: return {"valid": False, "uid": None, "screen_name": None} @@ -237,7 +242,7 @@ async def _verify_weibo_cookie(cookie_str: str) -> dict: uid = str(user.get("idstr", user.get("id", ""))) screen_name = user.get("screen_name", "") except Exception: - pass # profile info is optional, login check already passed + pass return {"valid": True, "uid": uid, "screen_name": screen_name} @@ -336,7 +341,10 @@ async def _get_super_topics(cookie_str: str, weibo_uid: str = "") -> List[dict]: headers=headers, cookies=cookies, ) - data = resp.json() + try: + data = resp.json() + except Exception: + break if data.get("ok") != 1: break @@ -413,7 +421,10 @@ async def _do_signin(cookie_str: str, topic_title: str, containerid: str) -> dic headers=headers, cookies=cookies, ) - data = resp.json() + try: + data = resp.json() + except Exception: + return {"status": "failed", "message": f"非JSON响应: {resp.text[:100]}"} code = str(data.get("code", "")) msg = data.get("msg", "")