Skip to content

一键完成本学期所有课的智慧教室打卡

Notifications You must be signed in to change notification settings

hbswcsyzx/BUAA-iClassSignIn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

BUAA-iClassSignIn

远程智慧教室打卡

仅作为代码学习交流用,请不要用我的代码做不好的事🥰

虽然代码逻辑写的是一次打完所有课,但建议接近上课时间再运行代码以防打卡时间太怪被判定无效
在小程序的课表查询里显示为“多节课”的课程无法通过这个仓库打卡

使用方法

建议先尝试main.py
student_id里填自己的学号,当然别人的学号也不是不行(
运行main.py即可进行打卡。

如果main.py无法正常使用,请使用password_ver.py,在文件开头的stu_id填入学号,stu_pwd填入统一认证密码,然后运行password_ver.py

控制台会输出打卡进度:

一些更新日志

25.4.4

如前两天更新所说,登录接口的加强并没有影响原来那个接口的正常使用,因此正常用main.py就可以了,但姑且写了一个使用账号密码登录的版本,如果仅用学号登录的接口失效,这个版本应该能顶上。

25.4.2

众所周知因为被举报了所以网页做出了部分调整,但截至这次readme更新,网站实际上的加强似乎只是把登录接口换成了一个需要更多验证的接口,而以前的登录接口还能正常运行,也就是说目前这个仓库是能完全正常运行的。
如果你发现用不了了&&有一定代码能力&&想接着用的话可以阅读后续内容。

原理

众所周知,智慧教室扫码签到的原理是用自己登陆后的账号向签到链接(这个签到链接包含课程id和时间戳两个参数,课程id顾名思义是用来区分给哪节课签到的,时间戳则是签到二维码会不停变化的原因)发请求,请求把账号信息一起发过去从而实现签到人身份的识别

那么这个仓库的代码做了什么呢?

  • 通过login获取唯一确定学生身份的userId,在后续查询课表和签到里,这个参数用来识别用户。此外登陆会产生sessionId,这个被ban了我就不知道怎么办了(
  • 通过get_stu_course_sched查询课表,这个请求返回唯一确定一堂课的courseSchedId,在签到里,这个参数用来识别节次。
  • 通过stu_scan_sign真正进行签到。用userIdcourseSchedIdtimestamp几个参数get了一下签到请求,这一步和手机扫码的行为是一样的。

以上,代码修改可以参考这些内容。

替代方案

如果这个仓库已经完全失效了,考虑到我写这个的时候其实就已经没什么课了并且马上就离开aubb了所以肯定是不会维护仓库了,简单分享两个替代方案:

  1. 扫码签到的二维码其实是一个链接,想要扫描二维码就是访问这个链接。最自然的想法应该是自己复刻一个二维码出来,然后拿着app去扫描。相关尝试,仓库里介绍了如何通过其他手段获取要打卡的课程id,我个人感觉这个一时半会是不会ban的。
  2. 手机浏览器登录之后抓一下sessionid填进后续代码里。但是我个人感觉都开手机了不如直接扫下码

About

一键完成本学期所有课的智慧教室打卡

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%