一.引言

由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统V-8.1.3)早已深恶痛绝,因此,去年用python模拟登陆(selenium)写了个网课捡漏的脚本(当有同学退课时,由于脚本一直运行,因此可以迅速选上)。本以为这学期我的脚本就可以大展身手,哪知道今年学校突然说改变选课方案,改为分年级分时段选课只允许选课不允许退课,这就代表了,我的捡漏脚本被宣判死刑了。

但只要思想不滑坡,方法总比困难多,经过我的不懈努力,最终成功实现如下效果:

  • 当只允许高年级选课时,低年级可突破限制,与高年级一同选课
  • 突破不允许退课限制,自由退课

二.前提条件

  1. 有一个可以正常进行通识选修课选课的账号A

  2. 有一个可以进行主修课选课,但不允许选修课选课的账号B(简易版教程需要,进阶版教程不需要)

    ps:限制还是挺多的,但是事实上只要知道了选修课对应的xkkz_id,就可以直接通过Postman为所欲为了

三.使用到的工具

  • Postman
  • Chrome浏览器
  • 高年级的账号(允许进行网课选取的账号)
  • 低年级的账号(不允许进行网课选取的账号)
  • 正方教务系统选课接口文档说明

四.教程

简易版

1.登陆高年级账号,进入选课界面,点击通识选修课

2.F12打开开发者工具,复制xkkz_idvalue

3.登录低年级账号,进入选课界面,F12打开开发者工具,将代码中的xkkz_idvalue值替换为上面复制的值

4.将kklxdmvalue值改为10

5.将njdm_idvalue值改为 允许进行选课的年级,如现在允许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则表示选课成功


教程结束,总的流程差不多就是这个样子,总体而言可玩性非常高,太刑了

正方教务系统——用Postman优雅的选课相关推荐

  1. 用 Python 实现模拟登录正方教务系统抢课

    (点击上方蓝字,快速关注我们) 作者:小苏打 https://vhyz.me/2018/06/12/用Python实现模拟登录正方教务系统抢课/ 最近学校开始选课,但是如果选课时间与自己的事情冲突,这 ...

  2. 用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  3. asp 退出登录修改cookie能进入后台_用Python实现模拟登录正方教务系统抢课

    6月23日更新:由于国内高校正方教务系统或多或少都会有所不同,所以细节地方还是需要自己修改的,我这个过程也只是一个案例,但这其中的本质上是不变的,即是抓包分析. 如果有什么不懂的,可以在评论区评论,或 ...

  4. python抢课脚本 验证码_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  5. python模拟登录教务系统_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  6. ZUCC 正方教务系统 抢课脚本 抢课流程实现

    ZUCC 正方教务系统 抢课脚本 抢课流程实现 新版ZUCC正方教务系统抢课脚本的流程分析与实现,文章结尾有完整项目的所有代码. 个人博客文章链接 流程分析 账号登录进入首页 模拟请求进入计划内选课界 ...

  7. python爬虫学校正方教务系统获取全部成绩

    python爬虫正方教务系统许昌学院 来自许昌学院的大四小菜鸡,疫情封在宿舍,闲来无事在宿舍爬了一下之前没成功的教务系统爬虫,当时觉得挺难的,今天发现这个还是挺简单的,这个程序参考了很多前辈大佬们的程 ...

  8. php模拟登陆青果教务系统,模拟登录 - php CURL模拟登陆正方教务系统

    代码如下 $cookie_file = tempnam('./temp','cookie'); $login_url = 'http://211.64.47.129/default_ysdx.aspx ...

  9. 基于Python 3.11.0版本模拟登录并爬取西安理工大学正方教务系统的学分绩点并计算

    目录 使用软件以及运行环境 对于环境的搭建 代码思路 需要导入的包 模拟登录 爬取数据 绩点计算器 功能一 功能二 完整代码 使用软件以及运行环境 win10系统,Vs Code软件,Python 3 ...

最新文章

  1. JPA学习(6)JPQL
  2. 23种设计模式的有趣见解 .
  3. VISIO2010界面介绍
  4. 日期/时间格式/解析,Java 8样式
  5. Windows10下手工强制清理删掉安装版的JRE8导致java.exe无法运行的解决办法
  6. eoLinker-AMS接口管理系统
  7. 别双击闪存盘 惊醒病毒就不得了
  8. python学生信息管理
  9. 以mysql为例的数据字典_建立数据字典
  10. 如何将JavaScript中的JSON字符串转换为JSON对象数组?
  11. 在苹果Mac中如何修改图片格式?
  12. 一文学会Maven私服的搭建
  13. 树莓派智能小车资料整理
  14. 校园助手APP--简介及框架
  15. eclipse快捷键——复制当前行到上一行或者下一行
  16. python学习笔记_week14
  17. 五、settings 文件
  18. 学完Python的7大就业方向,哪个赚钱多?
  19. 欺骗的艺术——第二部分(2)
  20. 如何让Fresco支持HEIF/HEIC图片格式

热门文章

  1. C语言/C++常见习题问答集锦之哆啦A梦
  2. 【进村记】电子产品实体店的几大骗术分析
  3. Colab 上使用shutil.copytree()复制整个文件夹到另一个文件夹
  4. Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)...
  5. Kubernetes(K8s)基本概念:HPA(Pod横向自动扩容)、StatefulSet
  6. multisim仿真 74LS147D芯片
  7. 福禄克LinkIQ™智能链路通线缆网络测试仪功能介绍
  8. 腾讯云服务器地域怎么选?地域可用区选择四大因素
  9. Matlab谐波搭建
  10. 计算机桌面上的软件是内存上吗,电脑软件运行提示内存不足,占内存小的游戏-...