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


      最近一学期一次的抢课大戏又来了,几家欢乐几家愁。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才能抢,不适合其他人,这点还需要进步!

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

  • 相关阅读:
    读书小记--<态度>
    frp 使用基础笔记
    ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)
    简单粗暴!解决锐捷强制关闭VMware NAT Service的问题(图文教程)
    杜教筛使用心得
    在阿里云的轻量级服务器上装桌面
    2018多校第三场 hdu6331 M :Walking Plan
    数论题集合
    hihoCoder挑战赛34 B题(快速求第k轮冒泡排序的结果)
    一阶微分边缘检测算子
  • 原文地址:https://www.cnblogs.com/shann001/p/13072206.html
Copyright © 2020-2023  润新知