前言
2024年,学校舍弃了使用多年的2018版方正教务系统,改用青果教务系统,该系统使用单点登陆实现单次登录使用教务系统多个功能,最初学校并未整合校内资源平台,故教务系统使用的是青果原版单点登陆。该系统的登陆以及教务系统操作可见仓库
2025年上半年,学校整合校内资源平台,所有功能统一接入学校单点登陆系统,教务系统也不例外,该文章以登陆教务系统,进行一次单点登陆实操。
网上原理已十分完善,该文章不再讲述,只记录实操过程。
准备
需要的软件
- 浏览器
- Python
- idea
抓包分析
首先进入浏览器,打开控制台,调至网络页,正常步骤进入教务系统
![1765614474473]()
![1765614837123]()
可见,进入教务系统https:/jw.zzife.cn,状态码302,重定向至https:/jw.zzife.edu.cn/caslogin,但是该URL,状态码200,并未直接重定向![1765615136032]()
在Python中用requests get一下,可见网页直接使用js重定向至https://authserver.zzife.edu.cn/authserver/login?service=https%3A%2F%2Fjw.zzife.edu.cn%2Fcaslogin![1765615374922]()
![1765615394932]()
跳转至校统一认证平台,但是浏览器 get 两遍,对比两次请求,可见是为了补全 cookies![1765615863106]()
![1765616014106]()
当输入错误的用户名或密码,状态码401,页面回到统一认证平台;而输入正确用户名和密码,状态码302,重定向至教务系统,并且携带ticket![1765616232872]()
打开请求,可见发送的数据有usernamepasswordcaptcha_eventIdclltdlltltexecution,对比可知usernamepasswordexecution这三个参数是变量,password为加密密码,execution可在html源码中找到,故需gethtml源码
加密解析
打开控制台,调至源代码页
![1765616713262]()
可以找到密码的加密js文件,分析该文件可知,密码使用AES加密,该加密需要一个密钥,即源码内的f参数(也称盐值)![1765617089413]()
![1765617155885]()
那么这个参数是什么呢?查看登陆按钮元素,可见点击事件会触发login.js里的startlogin函数,打上断点,跟踪事件可知,盐值为 ` html源码内的id为pwdEncryptSalt`的隐藏元素
结尾
大致流程即为此,使用python requests库session类即可完成登陆操作,需要代码可以访问仓库










