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

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

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


一.前言

昨天收到了CSDN的博客之星礼物,在此感谢~

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


二.预览 1.产生二维码

程序打开后会产生一个二维码,此二维码是有时效的。



2.扫码

程序会在后台判断用户有没有扫描二维码,并且会给予提示。



3.登录成功

登录成功后会显示用户昵称以及用户B站头像

4.本地cookie文件

登录成功后会在本地产生一个cookies.txt文件,可以使用此文件登录到B站。



三.主要思路 1.B站登录二维码获取流程

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


箭头所示位置为我们需要的二维码。



在开发者模式下看二维码为Base64编码,并且在一个属性alt为“Scan me!”的img标签中。




但是在源代码中找不到这个属性

目前可以确定登录二维码的加载方式为异步加载,即通过调用别的接口实现二维码的显示。



1.2确定二维码加载接口
在分析二维码加载过程时,二维码已经过期了,提示我“点击重新获取”,这时候切换选项卡到“Network”中,然后点击“刷新二维码”。



发现页面上刷新出新的二维码,并且产生了两个异步请求(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.扫码登录实现流程

四.总结

本次使用PyQt5模拟了B站扫码登录,登录成功后会保存cookie到本地可以用作爬虫,整体开发过程不难,UI设计组件不多,代码量也不大,主要还是扫码登录的思路,程序打包好放在了蓝奏云,仅供学习交流哦


觉得还行的话点个赞吧~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/567458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存