码迷,mamicode.com
首页 > 编程语言 > 详细

大学生可用来接单,利用Python实现教务系统扩容抢课!

时间:2020-06-09 14:29:37      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:开发模式   提交   点击   display   idt   http   lock   cap   roc   

  最近一学期一次的抢课大戏又来了,几家欢乐几家愁。O(∩_∩)O哈哈~(l我每次一选就过了hah,我还是有欧的时候滴)。看着他们盯着教务系统就着急,何况我们那教务系统,不想说什么。emmm 想周围的朋友,正好下午利用扩容前一点时间写了个小脚本帮助朋友抢课。(当然抢到了啦,^_^)

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

  因为时间不够,来不及仔细琢磨,我第一想法就是直接提交选课的数据包(需要cookie和课程ID),先用同学的账号登录教务系统,进入到选课的地方,打开浏览器的开发模式(按F12),点击Network()我这里是谷歌浏览器,如果是其他的找到网络抓包即可。马上尝试!

技术图片技术图片?技术图片技术图片?

我们需要的是提交选课的那个数据包,然后用python一直提交模拟。接下来找到提交的数据包。

我们先点击选课(我是已经选择过了,给大家看下点击后的情况)

技术图片技术图片?

技术图片技术图片?因为老师准备扩容,所以他们会显示该课程人数已满。(不管怎么样,我们找到了这个数据包!)

我们来看下这个数据包的内容,我们需要找到cookie( 你的身份标识),以及我们需要选的课程ID),然后用python模拟提交就OK了。

技术图片技术图片?

将这两个数据保存下来后面用的到,还注意下URL哦,就是课程ID的那个地址。

下面的代码部分。
import requests
from future.backports.test.ssl_servers import threading
 
 # 获取cookie 和 课程id就可以抢课
 
 
def qian1():
    data = 201820192001656
    # data 是找到的课程ID,因为python没学好,代码写的有点乱
    # 下面是地址 就是我们抓到的那个数据包的URL
    url = ‘http://****(学校的地址).edu.cn/jsxsd/xsxkkc/bxxkOper?jx0404id=‘+str(data)
    cookie = ‘ 用找到的cookie替换‘
    header = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36‘,
        ‘Referer‘: ‘http://........../srun_portal_pc.php?ac_id=1‘,
        ‘cookie‘:cookie
    }
 
    # 一直抢!
    while True:
        # 设定5s服务器未应答就放弃这次,鬼知道是服务器炸了还是。。。。
        mes = requests.get(url, headers=header, timeout=5) 
        # 打印返回的结果,就是弹出来的那个小窗口的内容
        print(str(1)+str(mes.status_code)+‘:‘+str(mes.text))
 
 
# 后面是不同的课,因为不能吊在一课树上!
def qian():
    data = 201820192001302
    url = ‘http://*****/jsxsd/xsxkkc/bxxkOper?jx0404id=‘+str(data)
    cookie = ‘*****cookie‘
    header = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36‘,
        ‘Referer‘: ‘http://172.30.1.70/srun_portal_pc.php?ac_id=1‘,
        ‘cookie‘:cookie
    }
    while True:
        mes = requests.get(url, headers=header, timeout=5)
        print(str(0)+str(mes.status_code)+‘:‘+str(mes.text))
 
 
 
def qian2():
    data = 201820192001155
    url = ‘http://****n/jsxsd/xsxkkc/bxxkOper?jx0404id=‘ + str(data)
    cookie = ‘cookie‘
 
 
    header = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36‘,
        ‘Referer‘: ‘http://172.30.1.70/srun_portal_pc.php?ac_id=1‘,
        ‘cookie‘: cookie
    }
    while True:
        mes = requests.get(url, headers=header, timeout=5)
        print(str(2)+str(mes.status_code) + ‘:‘ + str(mes.text))
 
 
 
def main():
    # 开多线程分开抢课
    # 接下来就会一直抢课!
    thread1 = threading.Thread(target=qian)
    thread2 = threading.Thread(target=qian1)
    thread3 = threading.Thread(target=qian2)
    thread4 = threading.Thread(target=qian)
    thread5 = threading.Thread(target=qian1)
    thread6 = threading.Thread(target=qian2)
    thread1.start()
    thread2.start()
    thread3.start()
    thread4.start()
    thread5.start()
    thread6.start()
 
 
 
main()

下面是效果图:技术图片技术图片?

开始

帮小伙伴抢课成功,而且学校这节课只扩了2个人,其中一个被我抢到了!hah技术图片技术图片?

总结:

用多线程抢应该靠谱些(我Python线程没学好,还需要加油!)

需要cookie才能抢,不适合其他人,这点还需要进步!

希望以后能先多思考再动手,可以少吃很多亏!!!加油ヾ(?°∇°?)??

大学生可用来接单,利用Python实现教务系统扩容抢课!

标签:开发模式   提交   点击   display   idt   http   lock   cap   roc   

原文地址:https://www.cnblogs.com/shann001/p/13072206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!