python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)

文章目录

  • 一.前言
  • 二.预览
    • 1.产生二维码
    • 2.扫码
    • 3.登录成功
    • 4.本地cookie文件
  • 三.主要思路
    • 1.B站登录二维码获取流程
    • 2.扫码登录实现流程
  • 四.总结


一.前言

昨天收到了CSDN的博客之星礼物,在此感谢~
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第1张图片

本篇使用PyQt5模拟B站扫码登录,实现扫码登录二维码生成,二维码存活判断,登录Cookie处理。

二.预览

1.产生二维码

程序打开后会产生一个二维码,此二维码是有时效的。
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第2张图片

2.扫码

程序会在后台判断用户有没有扫描二维码,并且会给予提示。
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第3张图片

3.登录成功

登录成功后会显示用户昵称以及用户B站头像
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第4张图片

4.本地cookie文件

登录成功后会在本地产生一个cookies.txt文件,可以使用此文件登录到B站。
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第5张图片

三.主要思路

1.B站登录二维码获取流程

1.1确定二维码数据加载方式
首先打开登录页面

python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第6张图片
箭头所示位置为我们需要的二维码。
在开发者模式下看二维码为Base64编码,并且在一个属性alt为“Scan me!”的img标签中。
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第7张图片
但是在源代码中找不到这个属性
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第8张图片
目前可以确定登录二维码的加载方式为异步加载,即通过调用别的接口实现二维码的显示。
1.2确定二维码加载接口
在分析二维码加载过程时,二维码已经过期了,提示我“点击重新获取”,这时候切换选项卡到“Network”中,然后点击“刷新二维码”。
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第9张图片发现页面上刷新出新的二维码,并且产生了两个异步请求(xhr),点击箭头所示地址查看其响应内容,正是我们所需要的!

https://passport.bilibili.com/qrcode/getLoginUrl

向此接口发送get请求,即可获取到一个oauthKey,以及扫码登录地址(就是扫了二维码相当于访问了这个地址)

1.3确定判断二维码存活接口
根据观察发现,上图中红圈下面的接口正是判断二维码存活接口

https://passport.bilibili.com/qrcode/getLoginInfo

要向此接口轮询发送post请求,携带一个oauthKey,即可判断此oauthKey的状态,结果类似于:

{“status”:false,“data”:-4,“message”:“Can’t scan~”}

其中,值得一提的是响应中的“data”,此data很关键,据笔者观察,此data分四种:
1.-4,此状态为二维码未扫描
2.-5,此状态为二维码已扫描,但是未确认
3.字符串格式,此状态为二维码已扫描,并且已确认,为登录状态
4.-2,此状态为二维码已过期

2.扫码登录实现流程

python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第10张图片

四.总结

本次使用PyQt5模拟了B站扫码登录,登录成功后会保存cookie到本地可以用作爬虫,整体开发过程不难,UI设计组件不多,代码量也不大,主要还是扫码登录的思路,程序打包好放在了蓝奏云,仅供学习交流哦。觉得还行的话点个赞吧~
python3GUI--模拟B站扫码登录By:PyQt5(附下载地址)_第11张图片

你可能感兴趣的:(GUI-PyQt5,pyqt5,B站,扫码,二维码)