admin管理员组文章数量:1130349
一.引言
由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统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:教程仅供开发交流使用,禁止用于个人盈利!
一.引言
由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统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:教程仅供开发交流使用,禁止用于个人盈利!
版权声明:本文标题:正方教务系统——用Postman优雅的选课(含正方教务系统接口文档) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754285766a2667479.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论