利用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扫码登录相关推荐

  1. python钉钉扫码登录程序_钉钉扫码登录网站(两种方式实现)

    钉钉扫码登录网站(两种方式实现) 效果: 动手敲代码! 第一步,钉钉后台配置 点击进入钉钉开发者平台 的页面,点击左侧菜单的[移动接入应用-登录],然后点击右上角的[创建扫码登录应用授权],创建用于免 ...

  2. python钉钉扫码登录程序_使用python+django集成钉钉三方扫码登陆

    使用python+django集成钉钉三方扫码登陆 \(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\) 1. 进入钉钉开放平台--->点击左下角 ...

  3. 怎样用python模拟微信扫码登录_十一、模拟扫码登录微信(用Django简单的布置了下页面)发送接收消息...

    importreimporttimeimportjsonimportrequestsfrom bs4 importBeautifulSoupfrom django.shortcuts importre ...

  4. python模拟支付宝扫码登录_GitHub - Jaccorot/alipay_python: 支付宝 alipay python接口,支持担保交易,即时到帐和自动发货接口...

    介绍 alipay_python 是支付宝接口的python版本,提供了担保交易,即时到帐和自动发货的接口. fork自这个版本 alipay. 增加了担保交易,确认发货和简单的测试站点(django ...

  5. Python获取Csdn扫码登录每日一句

    实验环境:python3.8 第三方库:requests 实验步骤: 1.进入csdn登录界面 https://passport.csdn.net/login?code=public 2.F12查看 ...

  6. Python扫码登录保存和验证cookies值——快手篇(二)

    python实现扫码登录快手网页版 一.找到生成登录二维码地址获取参数 二.找到第二个确认链接地址 三.最后保存cookies值并进行验证 完整代码 四.更多文章 一.找到生成登录二维码地址获取参数 ...

  7. Python扫码登录保存和验证cookies值——微信公众号篇(四)

    python实现扫码登录微信公众号 一.通过研究观察找到相关链接地址 二.通过上面两个值再运行访问二维码链接地址 三.找到扫码后确认链接地址 四.找到最后访问链接地址获取真正登录信息 五.最后保存co ...

  8. Python扫码登录保存和验证cookies值——视频号篇(七)

    python实现扫码登录微信视频号网页版 一.找到相关链接网址 1.找出需要的网址和参数 2.接着在小编在index.a2de8d0b.js找到这一段代码 3.利用python的import qrco ...

  9. Python扫码登录保存和验证cookies值——抖音篇(一)

    python实现扫码登录抖音网页版 一.通过抓包找到二维码生成地址 二.通过链接获取参数token和qrcode 三.分析二维码图片的信息 方法1 方法2 四.逐步获取登录cookies值 五.保存c ...

最新文章

  1. NSNotificationCenter
  2. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)
  3. 【LeetCode笔记】2. 两数相加(JAVA、链表)
  4. 无法检测或故障_大众朗境挡位偶发缺失且无法启动
  5. python tkinter小项目
  6. Visual Studio调试时失去响应的解决办法
  7. Codeforces蓝名紫名黄名纪念贴
  8. Windows 10连接打印机提示网路“指定的网络名已不再可用”
  9. GIS等级考试知识集锦
  10. 【读书笔记】《M型社会》大前研一
  11. ESP8266编译提示:undefined reference to `app_main‘
  12. 打印插件Lodop响应慢、卡顿问题分析与解决方案以及常见问题
  13. 魏吉英:IPONE5越狱
  14. 毫米波技术入局智能家居,是大材小用还是技术革命?
  15. 三冲IPO,独角兽唱吧能成为“K歌第一股”吗?
  16. cos三次方积分_COS分之一三次方积分
  17. unity3d 锁定鼠标
  18. ofo小黄车仍在自动续费!如何关闭微信自动扣费?
  19. 为什么前端UI设计师给750PX的2倍设计稿?
  20. 达达,不想跳出京东舒适圈

热门文章

  1. Fast RCNN论文学习
  2. Linux安装Mysql5.7详细过程(源码安装)
  3. Outlook for Mac Beta现在支持共享日历和.ics文件
  4. 我的产品经理入门之路
  5. module ‘gast‘ has no attribute ‘Num‘ 警告
  6. Web安全 Acunetix漏洞扫描工具.
  7. Android获取本机IP地址,绝对可行
  8. proteus仿真duplicate part reference 报错
  9. Unicode汉字编码表-转
  10. Unity简单树状结构