Skip to content

Commit

Permalink
更好的获取login_ticket的方式
Browse files Browse the repository at this point in the history
  • Loading branch information
Womsxd committed Sep 20, 2023
1 parent fda7ca6 commit 9f72466
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions login.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,36 @@ def login():
config.clear_cookies()
raise CookieError('No cookie')
# 判断Cookie里面是否有login_ticket 没有的话直接退了
if "login_ticket" in config.config["account"]["cookie"]:
temp_cookies = config.config["account"]["cookie"].split(";")
for i in temp_cookies:
if i.split("=")[0] == " login_ticket":
config.config["account"]["login_ticket"] = i.split("=")[1]
break
uid = get_uid()
if uid is not None:
config.config["account"]["stuid"] = uid
data = http.get(url=setting.bbs_cookie_url2.format(config.config["account"]["login_ticket"], uid)).json()
config.config["account"]["stoken"] = data["data"]["list"][0]["token"]
log.info("登录成功!")
log.info("正在保存Config!")
config.save_config()
else:
log.error("cookie已失效,请重新登录米游社抓取cookie")
config.clear_cookies()
raise CookieError('Cookie expires')
else:
login_ticket = get_login_ticket()
if login_ticket is None:
log.error("cookie中没有'login_ticket'字段,请重新登录米游社,重新抓取cookie!")
config.clear_cookies()
raise CookieError('Cookie lost login_ticket')
config.config["account"]["login_ticket"] = login_ticket
uid = get_uid()
if uid is not None:
config.config["account"]["stuid"] = uid
data = http.get(url=setting.bbs_cookie_url2.format(login_ticket, uid)).json()
config.config["account"]["stoken"] = data["data"]["list"][0]["token"]
log.info("登录成功!")
log.info("正在保存Config!")
config.save_config()
else:
log.error("cookie已失效,请重新登录米游社抓取cookie")
config.clear_cookies()
raise CookieError('Cookie expires')


def get_login_ticket() -> str:
ticket_match = re.search(r'login_ticket=(.*?)(?:;|$)', config.config["account"]["cookie"])
return ticket_match.group(1) if ticket_match else None


def get_uid() -> str:
uid = None
uid_match = re.search(r"(account_id|ltuid|login_uid)=(\d+)", config.config["account"]["cookie"])
if uid_match is None:
# 这里获取Stuid,但是实际是可以直接拿cookie里面的Uid
# stuid就是uid,先搜索cookie里面的,搜不到再用api获取
data = http.get(url=setting.bbs_cookie_url.format(config.config["account"]["login_ticket"])).json()
if "成功" in data["data"]["msg"]:
uid = str(data["data"]["cookie_info"]["account_id"])
Expand Down

0 comments on commit 9f72466

Please sign in to comment.