Python爬取b站视频:通过扫描保存cookie信息

具体代码

import requests
import time
from qrcode import QRCode
from PIL import Image
url = 'https://passport.bilibili.com/x/passport-login/web/qrcode/generate?source=main-fe-header'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
    'Referer': 'https://www.bilibili.com/',
    'Origin': 'https://www.bilibili.com'
}

response = requests.get(url=url, headers=headers).json()
print(response)
qrcode_key = response['data']['qrcode_key']
print(qrcode_key)
# 创建二维码对象
qr = QRCode()
# 设置二维码的数据
qr.add_data(response['data']['url'])
# 生成二维码图片
img = qr.make_image()
img = img.resize((200, 200), resample=Image.BICUBIC)
# 展示图片
img.show()

check_login_url = f'https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key={qrcode_key}&source=main-fe-header'
# 创建一个Session对象
session = requests.Session()
while 1:
    data = session.get(url=check_login_url, headers=headers).json()
    print(data)
    if data['data']['code'] == 0:
        # 使用Session发起请求
        response = session.get('https://www.bilibili.com/', headers=headers)
        # Session会自动处理cookies
        print(session.cookies.get_dict())
        # 保存cookies
        with open('cookies.txt', 'w') as f:
            f.write(str(session.cookies.get_dict()))
            print('cookies保存成功')
        break

    time.sleep(1)

运行代码,会弹出一个二维码,扫码关闭后,就会保存B站登录的cookie了。

遇到的情况

之前测试的时候,是对的,但是我今天测试的时候发现,你二维码显示的时候,程序就阻塞了,如果你不关闭显示的二维码,程序就一直在运行。

  • 当你成功扫码后,你也需要关闭图片,此时程序才会往下运行,进行保存cookie。
  • 当你不扫码,直接关闭二维码图片,此时程序才会往下执行,然后没过一秒提示未扫描。

以上的情况,就很奇怪,照理来说,运行代码后,每过一秒会进行验证是否扫码成功,但是现在的实际情况是,会显示图片,然后程序阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knighthood2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值