diff --git a/bilibili_api/login.py b/bilibili_api/login.py index 3ad19958..9af172f3 100644 --- a/bilibili_api/login.py +++ b/bilibili_api/login.py @@ -9,6 +9,9 @@ """ import json +import webbrowser + +import requests from bilibili_api.utils.Credential import Credential from bilibili_api.utils.utils import get_api from bilibili_api.utils.sync import sync @@ -173,8 +176,22 @@ def login_with_password(username: str, password: str): "validate": geetest_data['validate'], "seccode": geetest_data['seccode'] } - print(sync(sess.request("POST", login_api['url'], params=params, headers={ + login_data = json.loads(sync(sess.request("POST", login_api['url'], params=params, headers={ 'content-type': 'application/x-www-form-urlencoded', 'user-agent': 'Mozilla/5.0', "referer": "https://passport.bilibili.com/login" })).text) + url = login_data['data']['url'] + if 'https://passport.bilibili.com/account/mobile/security/managephone/phone/verify' in url: + pass + else: + cookies_list = url.split("&") + sessdata = "" + bili_jct = "" + for cookie in cookies_list: + if cookie[:8] == "SESSDATA": + sessdata = cookie[9:] + if cookie[:8] == "bili_jct": + bili_jct = cookie[9:] + c = Credential(sessdata, bili_jct) + return c diff --git a/requirements.txt b/requirements.txt index 056f95f5..84d6f2aa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,5 +11,5 @@ httpx~=0.22.0 qrcode~=7.3.1 pycryptodome~=3.15.0 pillow~=9.1.1 -requests~=2.24.0 +requests~=2.28.1 # ffmpeg-python~=0.2.0