Python扫码登录B站账号获取cookie和csrf
·
import pprint
import time
import qrcode
import requests
class Login:
"""
B站登录账号\n
保存登录cookie
"""
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0"
}
def __init__(self):
self.cookie, self.csrf = self.run()
@staticmethod
def get_qrcode_info():
"""获取二维码关键信息"""
url_get_qrcode_key = "https://passport.bilibili.com/x/passport-login/web/qrcode/generate?source=main-fe-header&go_url=https:%2F%2Fwww.bilibili.com%2F&web_location=333.1007"
res = requests.get(url=url_get_qrcode_key, headers=Login.headers).json()
# print(res)
qrcode_key = res["data"]["qrcode_key"]
qrcode_url = res["data"]["url"]
return qrcode_key, qrcode_url
@staticmethod
def make_qrcode_img(qrcode_url):
"""制作获取二维码图片"""
im = qrcode.make(data=qrcode_url)
im.save("login_code.png")
im.show()
def get_cookie(self, qrcode_key):
"""根据二维码扫描情况获取cookie"""
url_scan_code = f"https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key={qrcode_key}&source=main-fe-header&web_location=333.1007"
cookie_data = []
n = 1
while True:
time.sleep(5)
response = requests.get(url=url_scan_code, headers=Login.headers)
res = response.json()
# pprint.pprint(res)
code = res["data"]["code"]
msg = res["data"]["message"]
if code == 86038:
print(n, msg)
n += 1
if code == 86101:
print(n, msg)
n += 1
if code == 86090:
print(n, msg)
n += 1
if code == 0:
cookie = response.cookies.get_dict()
print(n, "二维码已扫码确认,cookie:", cookie)
cookie_data.append(cookie)
break
cookie_text = cookie_data[0]
csrf = cookie_text["bili_jct"]
cookie = self.cookie_into_header(cookie_text)
return cookie, csrf
@staticmethod
def cookie_into_header(cookie):
cookie_in_header = str(cookie).replace("{", "").replace("}", "").replace(",", ";").replace(":", "=").replace('"', '').replace("'", "").replace(" ", "")
# print("cookie:", cookie_in_header)
return cookie_in_header
@staticmethod
def save_cookie(cookie):
with open("login_cookie.txt", mode="w", encoding="utf-8") as f:
f.write(cookie)
def run(self):
qrcode_key, qrcode_url = self.get_qrcode_info()
self.make_qrcode_img(qrcode_url)
cookie, csrf = self.get_cookie(qrcode_key)
self.save_cookie(cookie)
return cookie, csrf
def main():
user = Login()
cookie = user.cookie
csrf = user.csrf
print("cookie:", cookie)
print("csrf:", csrf)
if __name__ == '__main__':
main()
pass
#
#
#
# 1. 获取二维码关键信息:get_qrcode_info() "https://passport.bilibili.com/x/passport-login/web/qrcode/generate?source=main-fe-header&go_url=https:%2F%2Fwww.bilibili.com%2F&web_location=333.1007"
# 2. 制作获取二维码图片 get_qrcode_img(qrcode_url)
# 3. 根据二维码扫描情况获取cookie get_cookie(qrcode_key) :f"https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key={qrcode_key}&source=main-fe-header&web_location=333.1007"
# 4. 保存cookie save_cookie(cookie)
#
更多推荐


所有评论(0)