导引:每逢新学期到来,各大高校陆续公布新课表、定时开放抢课,但高校的网络一向是一言难尽。我相信各个大学学生,都会有这种苦恼,那就是在选课时无法选到自己心仪的课程,我也曾在csdn上寻找过,可是未尽人意,因此今天想分享一下我制作抢课脚本的流程,能给大家提供一个好的思路。

 *温馨提示:请各位遵守学校的各项规定,请勿通过重复发包等操作干扰教务系统的正常运行。*

该思路是由PYTHON实现的,所有的逻辑其实都是模拟真实的选课,只不过用代码实现比手动确实有优势,步骤梳理:

  1. 实现账号登录(寻找账号、密码的加密方式以及验证码获取验证)
  2. 保持登陆状态
  3. 寻找选择各科所提交的信息
  4. 向服务器发出请求
    **

正文

**
一、解决登录:
首先用一个登陆界面作为例子:

调用开发者工具,寻找post请求的信息:

可以看出密码是被加密的,账号没有加密,还有验证码和不知道从哪儿冒出来的uuid。
先解决密码加密的问题,一开始我以为这是一个简单的base64加密方式,没想到是我自己给想简单了,后来经高人指点才知道是经典AES加密,由于直接向服务器请求的就是加密过后的数字,所以密匙key一定就在页面中,结果很容易就能找到

loginVue.loginForm.aesKey = "7XxrXD3ycISDK15O";

有了密匙,密码加密算是解决了,可是还有验证码。刚开始我想通过将验证码图片下载来,调用tessacrt OCR光学识别识别出验证码,后来发现识别率并不高,就算训练出自己的库,对上面的图片的识别还是差强人意。最后不得已调用了打码平台。。。。。。
那么验证码图片如何得到呢:
还是开发者工具:
可见login为登录请求,剩下的两个里面肯定有验证码的地址:
captcha:
而这里面的captcha和下面的请求好像有关系经过分析它就是验证码图片的二进制经base64编码得到的数据,由此我们得到了uuid的来源和验证码:

将base64编码的图片变成真正的图片:

def acq_PIN():url='验证码网址'headers={'Referer': '请求头部分可由自己的电脑上查看','User-Agent': '请求头部分可由自己的电脑上查看'}reponse=requests.post(url=url,headers=headers).text#print(reponse)url2=re.findall('"captcha": "(.*)",',reponse)[0]uuid=re.findall('"uuid": "(.*)"',reponse)[0]#print(url2)#print(uuid)a=url2.split(',')[1]#print(len(a))imagedata = base64.b64decode(a)#print(imagedata)file = open('1.jpg',"wb")file.write(imagedata)file.close()

至此账号、密码、验证码、uuid已解决,开始登录:

        s=requests.Session()headers={'Host': '请求头部分可由自己的电脑上查看','Origin': 请求头部分可由自己的电脑上查看','Referer': 请求头部分可由自己的电脑上查看','User-Agent': '请求头部分可由自己的电脑上查看'}PIN,uuid=acq_PIN()url='登陆网址'data={'loginname': Account,'password': PS,'captcha': PIN,'uuid': uuid}#reponse=requests.post(url=url,data=data,headers=headers).textreponse=s.post(url=url,data=data,headers=headers).text

二、实现选课
实现登录后接下来的操作就简单了,剩下的都可以用post和get请求堆积而成

分析选择每一个课程所提交的数据,然后抢课的时候可以抢到心仪的课程(每个课程的数据,要么是固定的,要么就是可以从页面获得的)。
结果展示:

     *至此,就跟大家分享到这里如果大家有什么想法,可以在评论区里提出,这篇文章就相当于抛砖引玉了。*

高校抢课脚本实现思路相关推荐

  1. python 正方教务管理系统抢课脚本(仅供学习)

    正方教务管理系统抢课脚本 (仅供学习请勿它用!!!) 正方教务管理系统抢课脚本 进入正题 正方教务管理系统抢课脚本 该脚本使用python代码模拟发包实现.教务管理系统版本可能有所不同.请根据实际情况 ...

  2. 中科大研究生信息平台抢课脚本低级版本

    中科大研究生信息平台抢课脚本低级版本 一.引言 二.思路 三.程序编写 四.测试 四.总结 一.引言 源于科大的某些开课学院对非本院的学生开课有限制,原则是本院学生优先选课,之后才会给别的学院的学生开 ...

  3. 游戏脚本开发思路总结

    初级版 1 看见屏幕的某个位置有某个图片,点它 2 看见屏幕上某个位置有有些字,我要去点某个位置或图片 3 看见屏幕上某个位置进度满了(空了),我该点屏幕上某个图片或某个位置了 4 屏幕上某个位置一直 ...

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

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

  5. S(神)T(通)E约课系统-抢课脚本实现

    最近正在驾校学习,学生通过一个约课系统进行选课学习.每天只能抢课两次,因为只有周六周日有时间学习,所以每到星期四放课时的时候就要进行抢课,手慢了可能就会浪费一周的时间.基于此,我想通过Python实现 ...

  6. 简单实现大学选修课抢课脚本(Python)

    大学选修课抢课 需要准备的 Python环境 完善代码在:抢课脚本 实现步骤 1.实现登录功能 首先进入教务系统,按下F12键进入浏览器的开发者模式,输入账号.密码.验证码后进行抓包.通过抓包,可以发 ...

  7. 亲测可用,利用Python实现自动抢课脚本

    借助pyautogui库,我们可以轻松地控制鼠标.键盘以及进行图像识别,实现自动抢课的功能 1.准备工作 我们在仓库里提供了2个必须的文件,包括: auto_get_lesson_pic_recogn ...

  8. selenium 自动抢课——电子科大自动抢课脚本

    前言: 又到了一学期一度的渣电的退补选,退补选这东西 谁退了谁抢到就是本事,闲着没事,写一个自动化抢课脚本. 使用方法:` 安装selenium username改成自已的学号 pwd改成自已的密码 ...

  9. 抢课脚本从想写到放弃

    最近想写一个抢课脚本,但是会的东西还不够,等我学会了这些技术,可能我已经不需要抢课了(留下来无助的泪水) 抢课脚本最基础的就是按键精灵了 首先要弄明白的是服务器,HTTP协议,然后还要用C++,pyt ...

最新文章

  1. 如何培养一个搞垮团队的Leader?
  2. Windows10 + VS2015 环境下对gdal2.0.1进行64bit编译小结
  3. 数据科学自动化_数据科学会自动化吗?
  4. tcp 协议中发送窗口的大小应该是_面试必备--TCP协议中的窗口机制滑动窗口详解...
  5. 7.SOA架构:服务和微服务分析及设计--- REST服务及微服务的服务API于契约设计
  6. html 下载 txt 文件
  7. 5种常见的网络欺骗方式
  8. 免费网络视频监控软件cmsclient
  9. pc端分享到微信、微博、facebook、twitter
  10. CNN与LeNet的应用-数字手写体识别
  11. Shop项目后台--4.所有订单的订单详情/admin/order/list.jsp
  12. 银行企业如何通过企微scrm解决用户获取和转化难题?
  13. 使用canvas生成一个圆形的图片
  14. Apache Flink介绍、架构、原理以及实现
  15. 【文献管理软件Zotero】Zotfile插件及云同步的使用技巧
  16. 四足蜘蛛机器人--制作过程记录
  17. 写出求abc中最大数的c语言表达式,有3个整数abc由键盘输入输出其中最大的数
  18. LCD1602液晶使用介绍--(完整版)
  19. 【搜索+DP】codevs1066-引水入城
  20. windows驱动开发3:第一个驱动及调试

热门文章

  1. 格式化时间格式-IOS date format
  2. 防火墙双机热备技术详解
  3. node本地服务 nginx实现反向代理
  4. 基于MVC模型和分层模式完成登录和注册
  5. 为什么推荐 Java 开发人员都学习并使用 Kotlin?
  6. 湾区这家公司来西雅图了,吓坏各大公司HR了
  7. python中transform用法_TRANSFORM 用法
  8. easyX库颜色模型和颜色及样式设置相关函数(注释版)
  9. 石油币的命运:遭委内瑞拉民众嫌弃,被嘲讽为“麻醉剂”
  10. random库 随机数函数