Python中如何实现MOOC扫码登录
作者:_ccd_yuan_ 发布时间:2021-10-08 14:24:50
标签: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']# 提取token
else:
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)
来源:https://blog.csdn.net/m0_66230497/article/details/122911269
0
投稿
猜你喜欢
- 最简单的方法:取整后判断是否和原值相等!javascript的取整函数是:parseIntif(parseInt(value)==value
- 关于导航栏的设计有很多特效,但你浏览过这样一种导航栏特效吗?当鼠标移到导航栏目上时,导航栏目会被一层“
- 人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包。但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很
- 一段非常简单代码普通调用方式def console1(a, b): print("进入函数")
- 下面的各种屏蔽网页鼠标或键盘的代码都是我以前收集的,挺实用的,防一般的访客还是很有用的。1.禁止鼠标选中捕捉网页文字图片等元素在<bo
- 我们可用如下代码进行监控:函数中使用了fso对象来读取文件属性。Function File_GetLastModifi
- 用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“
- 公布到网页上的Email经常会被一些工具自动提取,一些非法用户就会利用所提取的Email大肆发送垃圾邮件。这些工具大多都是查找链接中“mai
- 用Dreamweaver制作网页时,如果插入的图片、GIF动画、声音、视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来。以
- 一、问题的提出随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场
- 大致功能:$() 取得所有元素$("div") 取得所有DIV$("#a1") 取得ID为a1的元素
- 常见的双倍边距类问题都遇到过,但很少遇到这种有意思的,所以记录一下。这个BUG是发生在Standards模式下(就是包含XHTML或者HTM
- 1、类变量、实例变量概念类变量:类变量就是定义在类中,但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例
- 目录前言🎪 一、Python 关键字🎢 二、Python标识符🎠 2.1 在 Python 中创建标识符的指南🎡 2.2 测试标识符是否有效
- 流动网页设计有很多好处,但也只有在正确使用的时候。合适的技巧会使页面在大屏幕、小屏幕抑、PDA小屏幕上都能得到良好的呈现。但是,糟糕的代码结
- 在最近一次项目有一个需求,点击按钮——异步提交——异步响应返回——根据响应返回值新开窗口。这有两个要点:异步响应之前不知道要打开窗口的URL
- Windows环境下一、开启 Imagick 扩展1、安装PHP扩展:Imagick,下载地址 https://pecl.php.net/p
- 这几天做了一个专题,放到服务器后发现从首页链接到专题页面正常,但是从专题页面跳转到首页就会出现乱码。很是蹊跷,专题页面和首页没有共同的文件,
- 自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法对于div,
- 本文实例讲述了Python验证码识别的方法。分享给大家供大家参考。具体实现方法如下:#encoding=utf-8import Image,