近期在家无聊,又因为网课烦人,所以写了一系列网课相关的小工具,有兴趣的胖友可以多看看哦,这次先给大家带来超星学习通自动签到,再也不怕错过签到啦,现在小编就来说说关于超星学习自动签到?下面内容希望能帮助到你,我们来一起看看吧!

超星学习自动签到(超星学习通自动签到)

超星学习自动签到

近期在家无聊,又因为网课烦人,所以写了一系列网课相关的小工具,有兴趣的胖友可以多看看哦,这次先给大家带来超星学习通自动签到,再也不怕错过签到啦!

程序演示

这篇文章可以让你做出自己的自动签到小程序,我会尽力讲解详细的

如下图是完整的程序流程

打开抓包软件在登陆界面执行完整的登录流程即可获得所需的接口

创建二维码

http://passport2.chaoxing.com/createqr

获取扫描状态

http://passport2.chaoxing.com/getauthstatus

在签到过程中最基本的就是用户的Cookie,相当于用户的身份证,在最初写的python版本中,我直接将Cookie作为参数保存在代码中,缺点是Cookie需要自己抓包获取,比较麻烦。

为了方便使用,划分了一个登陆模块,可以使用账号和密码登录接口,也可以使用二维码登录,这里详细的说明一下二维码登录流程

    生成uuid(通用唯一识别码),简单来说就是一串随机的字符串,网上有很多在线接口可以生成,也可以自己写程序实现

    createqr生成登录二维码

    按固定间隔访问状态API即可获取二维码状态信息,状态分为【未登录】【已扫描】【取消扫描】【验证通过】【已过期】,每种状态都有自己ID,所以很好判断,当状态为【验证通过】的时候,在API的返回Cookie即为用户登录成功的Cookie,保存下来

    在下次启动软件的时候读取Cookie,判断是否过期,若没有过期就进入主界面,否则重新登录

然后就是自动签到的流程了

这里用到的API是在APP下执行完整的签到流程获取的(因篇幅原因,参数都忽略)

获取课程列表

http://mooc-api.chaoxing.com/mycourse/backclazzdata

获取活动列表

http://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist

签到

http://mobilelearn.chaoxing.com/pptSign/stuSignajax

【流程】

整体的流程简单的概括就是一个时钟,按一定频率获取课程下的活动列表,如果发现未签到的任务就执行签到

【信息模块】

在用户登录后,首先获取所有课程,由用户选定要监控的课程后,将课程的id传入到下一个模块,启动时钟开始获取活动列表,如果判断到typeid=2,状态id=1即为未签到活动,然后执行签到

【签到模块】

签到模块需要的参数有【activeId】【uid】,用户id在登录时可以获取,活动id在上面活动列表中间接获取,在活动列表中有一个key是活动的url,在url中即可看到【activeId】,分离出来即可作为参数

原理很简单,有兴趣大家也可以自己实现一下,如果大家想学习,我还是推荐看看python的代码,我会把用到的API和python代码打包发布,(python代码没有加登陆模块,有能力的的可以自己实现一下),以下是核心的代码

def taskactivelist(courseId,classId): global activeList url="http://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist?courseId=" str(courseId) "&classId=" str(classId) "&uid=" uid res=requests.get(url,headers=headers) data=json.loads(res.text) activeList=data['activeList'] #print(activeList) for item in activeList: if("nameTwo" not in item): continue if(item['activeType']==2 and item['status']==1): signurl=item['url'] aid = getvar(signurl) if(aid not in activates): print("【签到】查询到待签到活动 活动名称:%s 活动状态:%s 活动时间:%s aid:%s"%(item['nameOne'],item['nameTwo'],item['nameFour'],aid)) sign(aid,uid) def sign(aid,uid): global status,activates url="http://mobilelearn.chaoxing.com/pptSign/stuSignajax?activeId=" aid "&uid=" uid "&clientip=&latitude=-1&longitude=-1&appType=15&fid=0" res=requests.get(url,headers=headers) if(res.text=="success"): print("用户:" uid " 签到成功!") activates.append(aid) status=2 else: print("签到失败") activates.append(aid)

理解清楚上述原理以后,不管使用什么语言相信都可以制作出自己的自动签到工具!

自力更生!不怕网课 哈哈哈

如果只是想用一下成品,那也是欢迎的啦

在公众号回复【学习通】即可获取