XMU-Check 自动打卡API。地址:https://f5soft.site/app/xmu-check/
需要Python3运行环境。通过requests
发送HTTP请求,通过pycryptodome
进行密码的AES加密,通过pillow
解析图片验证码。
sudo apt install python3
python3 -m pip install requests pycryptodome pillow
位于web.py
的checkin
函数中,调用方法为:
import web
status, msg = web.checkin('学号', '密码')
或
import web
status, msg = web.checkin('学号', '密码', 'VPN用户名', 'VPN密码')
参数:VPN用户名和VPN密码可为空,用于 xmuxg.xmu.edu.cn 仅限校内访问时的情况。
返回值:status
为打卡成功标志True
或False
,msg
在打卡失败时为错误信息,在打卡成功时为用户的cookie。
本应用的原理为获取前一天的打卡信息,并据此自动更新当日的打卡信息。
首先进行人工打卡操作,在浏览器的开发人员工具的Networks中查看每个请求头,记下关键的请求头字段,如User-Agent
、Referrer
等,使用requests
模块构造相同的HTTP请求。
系统通过Cookie同用户维持会话,因此还需要记下服务器响应头的Set-Cookie
字段,并在之后的请求中附上这些Cookie。这可以用requests
模块中的Session
类实现。
当 xmuxg.xmu.edu.cn 仅限校内访问时,系统将使用VPN用户名和VPN密码登陆 applg.xmu.edu.cn,进行校内资源访问的认证,并通过pillow
解析图片验证码。
登录是通过POST方法提交表单实现,可以在Networks中看到提交的表单数据,包括用户名和密码。值得注意的是,这里的密码是加密后的密码,因此为了能够成功模拟登录,需要手动实现加密算法,或者直接通过JS的运行环境,根据前端的加密代码得到返回值。
因为加密方式较为简单,可以直接手动实现。原理具体可以参考前端密码AES-CBC加密方式的分析
您点使用本应用,则表明您同意该免责声明。
您在使用本应用前应当了解,本应用的目的在于简化每日健康信息申报流程,促进同学进行健康申报的积极性,提高学院的打卡率。本应用的原理为获取前一天的打卡信息,并据此自动更新当日的打卡信息。如果您的所在地址、体温、身体状况、旅居史等其他信息发生改变,需要您自行前往学工系统进行更新。
如果因为没有自行更新信息而导致瞒报等后果,需要您自行承担。本应用的开发者不会承担您的任何恶意使用本应用造成的后果的责任。