利用Python实现MOOC扫码登录
利用Python实现MOOC扫码登录
1、基本原理
- 访问网站扫码登录页,网站给浏览器返回一个二维码和一个唯一标志KEY
- 浏览器开启定时轮询服务器,确认KEY对应的扫码结果
- 用户使用app扫码二维码,app获取KEY并告知服务器已扫码
- App确认登陆(包含个性化校验过程),服务器更新KEY的校验结果
- 浏览器轮询结果成功,获得一次性token
- 带上token请求资源,获得有效cookie,正常访问资源。
2、代码实现
我们以MOOC为例
1、访问网站扫码登录页,并下载二维码
session = requests.session()
url = 'https://www.icourse163.org/logonByQRCode/code.do?width=182&height=182' # 扫码登录url
header = {'referer': 'https://www.icourse163.org/','user-agent': ua
}
resp = session.get(url,headers = header).json() # 拿到相应的json数据
codeUrl = resp['result']['codeUrl'] # 提取二维码url及唯一标志key
pollKey = resp['result']['pollKey']
codejpg = session.get(codeUrl) # 请求二维码
with open('text.jpg','wb') as f: # 下载二维码f.write(codejpg.content)
2、模拟轮询
利用已得的唯一标志key对服务器发起定时轮询,获得相应数据
通过分析,codeStatus的值为0是表示,等待扫码;codeStatus的值为1是表示,已扫码,等待确认登录;codeStatus的值为2是表示,扫码成功,此时服务器会返回token,这个对我们很有用
checkUrl = f'https://www.icourse163.org/logonByQRCode/poll.do?pollKey={pollKey}'
os.system('start text.jpg')
token = None
for i in range(20): # 模拟轮询checkResp = session.get(checkUrl,headers = header).json()if checkResp['result']['codeStatus'] == 2:token = checkResp['result']['token'] # 提取tokenelse:time.sleep(1) # 每秒一次
3、弹出二维码,扫码登录
os.system('start text.jpg')
4、带上token请求资源,获得有效cookie,正常访问资源。
vaildateUrl = f'https://www.icourse163.org/passport/logingate/mocMobChangeCookie.htm?token={token}&returnUrl=aHR0cHM6Ly93d3cuaWNvdXJzZTE2My5vcmcvaW5kZXguaHRt' # returnUrl指MOOC网
session.get(vaildateUrl,headers = header)
利用Python实现MOOC扫码登录相关推荐
- python钉钉扫码登录程序_钉钉扫码登录网站(两种方式实现)
钉钉扫码登录网站(两种方式实现) 效果: 动手敲代码! 第一步,钉钉后台配置 点击进入钉钉开发者平台 的页面,点击左侧菜单的[移动接入应用-登录],然后点击右上角的[创建扫码登录应用授权],创建用于免 ...
- python钉钉扫码登录程序_使用python+django集成钉钉三方扫码登陆
使用python+django集成钉钉三方扫码登陆 \(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\) 1. 进入钉钉开放平台--->点击左下角 ...
- 怎样用python模拟微信扫码登录_十一、模拟扫码登录微信(用Django简单的布置了下页面)发送接收消息...
importreimporttimeimportjsonimportrequestsfrom bs4 importBeautifulSoupfrom django.shortcuts importre ...
- python模拟支付宝扫码登录_GitHub - Jaccorot/alipay_python: 支付宝 alipay python接口,支持担保交易,即时到帐和自动发货接口...
介绍 alipay_python 是支付宝接口的python版本,提供了担保交易,即时到帐和自动发货的接口. fork自这个版本 alipay. 增加了担保交易,确认发货和简单的测试站点(django ...
- Python获取Csdn扫码登录每日一句
实验环境:python3.8 第三方库:requests 实验步骤: 1.进入csdn登录界面 https://passport.csdn.net/login?code=public 2.F12查看 ...
- Python扫码登录保存和验证cookies值——快手篇(二)
python实现扫码登录快手网页版 一.找到生成登录二维码地址获取参数 二.找到第二个确认链接地址 三.最后保存cookies值并进行验证 完整代码 四.更多文章 一.找到生成登录二维码地址获取参数 ...
- Python扫码登录保存和验证cookies值——微信公众号篇(四)
python实现扫码登录微信公众号 一.通过研究观察找到相关链接地址 二.通过上面两个值再运行访问二维码链接地址 三.找到扫码后确认链接地址 四.找到最后访问链接地址获取真正登录信息 五.最后保存co ...
- Python扫码登录保存和验证cookies值——视频号篇(七)
python实现扫码登录微信视频号网页版 一.找到相关链接网址 1.找出需要的网址和参数 2.接着在小编在index.a2de8d0b.js找到这一段代码 3.利用python的import qrco ...
- Python扫码登录保存和验证cookies值——抖音篇(一)
python实现扫码登录抖音网页版 一.通过抓包找到二维码生成地址 二.通过链接获取参数token和qrcode 三.分析二维码图片的信息 方法1 方法2 四.逐步获取登录cookies值 五.保存c ...
最新文章
- NSNotificationCenter
- [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)
- 【LeetCode笔记】2. 两数相加(JAVA、链表)
- 无法检测或故障_大众朗境挡位偶发缺失且无法启动
- python tkinter小项目
- Visual Studio调试时失去响应的解决办法
- Codeforces蓝名紫名黄名纪念贴
- Windows 10连接打印机提示网路“指定的网络名已不再可用”
- GIS等级考试知识集锦
- 【读书笔记】《M型社会》大前研一
- ESP8266编译提示:undefined reference to `app_main‘
- 打印插件Lodop响应慢、卡顿问题分析与解决方案以及常见问题
- 魏吉英:IPONE5越狱
- 毫米波技术入局智能家居,是大材小用还是技术革命?
- 三冲IPO,独角兽唱吧能成为“K歌第一股”吗?
- cos三次方积分_COS分之一三次方积分
- unity3d 锁定鼠标
- ofo小黄车仍在自动续费!如何关闭微信自动扣费?
- 为什么前端UI设计师给750PX的2倍设计稿?
- 达达,不想跳出京东舒适圈
热门文章
- Fast RCNN论文学习
- Linux安装Mysql5.7详细过程(源码安装)
- Outlook for Mac Beta现在支持共享日历和.ics文件
- 我的产品经理入门之路
- module ‘gast‘ has no attribute ‘Num‘ 警告
- Web安全 Acunetix漏洞扫描工具.
- Android获取本机IP地址,绝对可行
- proteus仿真duplicate part reference 报错
- Unicode汉字编码表-转
- Unity简单树状结构