超星学习通自动签到
原理:
超星的接口做的很不完善,所以给了我们趁虚而入的机会
大概比较容易理解的意思就是:
绕过了签到的验证系统直接签到.
举个栗子:
疫情封校,学校不允许学生进出学校,门卫就充当了学习通签到的验证系统也就是我们看到的二维码签到/手势签到等验证方式,当我们有正式验证(比如假条)时,我们才可以出校门,也就是说当我们完成了验证(手势,二维码等),才可以成功签到.
那么这样来说,我们想要出校门,可以不通过门卫,这种方式就是-翻墙
这样就可以直接绕过门卫的验证,直接出校门.
https://github.com/PrintNow/ChaoxingSign
自行在服务器部署之后就可以愉快的实现远程签到了.
云函数实现自动签到
因为技术有限,所以代码写的比较简陋,也比较简单,大佬可以一笑而过.
云函数中需要两个文件:
index.py和config.json
import json
import requests
import threading
import time
with open('config.json', 'r', encoding='utf-8') as f:
conf = json.loads(f.read())
print('获取配置成功\n开始执行签到任务!')
def request(q,i):
url = 'http://chaoxing.doffchen.cn/main/main.php?account=' + i[q]["account"] + "&password=" + i[q]["password"]
print("index:%d"%q+"\n"+'用户:'+i[q]["account"]+'\n'+requests.get(url).text)
def main_handler(event, context):
for i in conf.values():
for q in range(len(conf["users"])):
therad = threading.Thread(target=request, args=(q,i))
therad.start()
#therad.join()
##time.sleep(5)
#$print("执行完毕")
return "success"
其中url参数可以根据上述的参考地址自行部署更换,我代码中提供的接口不一定可以长期使用.
代码中的一些代码显得比较蠢,大佬们也可以自己自行二次修改.
{
"users": [
{
"id":"陈多福",
"account": "11111111111",
"password": "11111111111"
},
{
"id":"index1",
"account": "11111111111",
"password": "11111111111"
},
{
"id":"index2",
"account": "11111111111",
"password": "11111111111"
},
{
"id":"index3",
"account": "111111111111",
"password": "11111111111"
}
]
}
json格式大概是这样,大家可以自行进行修改.添加自己的帐号
cron表达式
0 0/1 8-20 * * 1-5 *表示每周1-周5的每天8-20点的每分钟的第一秒执行一次签到.
具体更多发cron表达式可以参考:
https://baike.baidu.com/item/cron/10952601?fr=aladdin
大家可以根据自己的课表和老师签到的习惯来自定义触发云函数的时间段.
提示
因为不确定超星什么时候会修复,以及,异地登录过多是否对其它课程有影响,还是建议大家谨慎使用.
有条件的可以在宿舍搞一台没有用的机器来做服务器,然后内网刺穿给外网访问,效果其实的一样的,这样就可以解决异地登录的IP问题.
不过本人测试几个月以来,没有什么问题.
如果有问题,就大家自行负责8
感谢
本项目的实现参考:
https://github.com/PrintNow/ChaoxingSign
https://github.com/mkdir700/chaoxing_auto_sign