高校抢课脚本实现思路

您所在的位置:网站首页 java写按键脚本 高校抢课脚本实现思路

高校抢课脚本实现思路

2023-08-05 11:34| 来源: 网络整理| 查看: 265

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

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

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

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

** 一、解决登录: 首先用一个登陆界面作为例子: 随意找了一个登陆界面 调用开发者工具,寻找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).text reponse=s.post(url=url,data=data,headers=headers).text

二、实现选课 实现登录后接下来的操作就简单了,剩下的都可以用post和get请求堆积而成 在这里插入图片描述 分析选择每一个课程所提交的数据,然后抢课的时候可以抢到心仪的课程(每个课程的数据,要么是固定的,要么就是可以从页面获得的)。 结果展示: 在这里插入图片描述

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3