大学里面抢课到底可行吗?我来给你彻底说明白

简介: 大学里面抢课到底可行吗?我来给你彻底说明白

前言

大家好,3年前,我是在大一的时候就写过一个讲课脚本,并且成功抢到了选修课。


这是3年前的文章。如何实现简单的脚本来抢课。


时间飞逝挺快的,从大一到大四我学了很多的计算机知识,努力学习,并且最终保研上了北大。


这3年也有网友陆陆续续找到我,希望我能给他抢课或者说是咨询抢课脚本怎么写。之前是时间精力有限,现在我有时间能够回答抢课方面一些事,希望彻底解决大学生抢课方面的疑惑。


区分抢课和捡漏

首先要区分抢课和捡漏。

在抢课阶段,往往是系统非常的卡,挤不进去,最终导致没有课可以选。

捡漏的话,是别人退掉不想要的课,然后我们拼手速来抢到他们退掉的课。

捡漏的时间是远大于抢课的,首先来说抢课


抢课成功的原理

现在确实是能够通过技术手段抢到课的,那么是怎么实现的?

首先选课的流程分为这几步:

  1. 1.浏览器加载出一堆可以选的课的列表


2.点击选课


3.服务器接收到学生的选课请求


4.最后服务器处理学生请求后,选课就结束了,之后我们不再关心

选课,我们是不是卡在第一步,界面怎么都加载不出来。更不要说点击按钮了。


但是抢课的话,可以绕过第一步,第二步,直接跳到第三步,向服务器发送请求。


举个例子,假如说12点整选课系统开放,那么12点整这时候服务器是能够接收选课请求的。


绝大数学生同时进入第一步的时候,系统受不了,处理不过来就导致我们非常慢。就算很快的同学也是12点过几秒才进去是吧,进去后还要点击对应课程选课按钮是吧,才会向服务器发送选课请求。


但是抢课的同学,12点整就直接向服务器发送选课的请求了,比最先加载出界面的同学还要更快。所以他们就能够最先选到课。


那么问题来了,向服务器发送的请求是什么,为什么能让抢课的同学选到课?

抢课的关键,构造选课请求

选课的请求里面携带的信息有,学生的详细信息,以及课程的信息。发给服务器后,这样就相当于就告诉了服务器,哪个学生选了什么课。


举个例子,一个学生的学号是201911020127,一个选修课的课程编号是56,这样服务器系统就会知道,学号为201911020127的学生选了选课修编号为56,然后存入数据库,然后返回给你说,选课成功。


下一个问题又来了,抢课的同学是怎么知道系统记录关于自己的详细信息,以及课程信息的呢?


答:通过抓包


简单来说,就是事先就要能够发送一次请求,需要通过拦截工具拦截后,提取里面的关键信息(包括学生信息,课程编号等等)。下次就能够自己构造一摸一样的请求,发送给服务器。


这样抢课的周期可以说必须跨越两次选课,也就是隔半年。一般情况没有哪个写抢课的技术人员,会愿意第一次选课帮助你努力研究后,半年后再继续实施抢课(除开自己给自己抢课,或者说不同学校使用一样选课系统的等等情况,很复杂)


复杂一点的话,我就不多深究了,下面是我一遍用fiddler抓包的界面,对非计算机专业学生要学的东西多一点。


所以说,一般抢课的就是技术人员,都是通过捡漏来选到你想要的课。

我讲明白了吧o( ̄▽ ̄)ブ

如何进行高效的捡漏

捡漏,就是要通过不断的刷新,凭运气出现你想要的课后,和其他同学来拼手速来抢它。也就是我们说的选课第二步。


要成功捡漏了话有两种方式:


1.用脚本加快手速

这种方式是我三年前那篇文章使用到的,用java写的,其实非计算机专业学生也可以通过按键精灵等软件来实现,不断点击刷新和选课的两个位置。

当然,这样抢的课是随机的。


2.用脚本频繁发送请求(抢课中提到的请求)


这样就能针对具体的课进行捡漏,实用性高一些,选课成功的概率也低一些,更需要看别的同学释不释放这个课程。


这不巧了,捡漏的话,我们可以绕过第二步,不断进行第三步,向服务器发送信息。


一旦其他同学释放掉课后,我们由于不断发送选课的请求,会有更大的几率被服务器接收,只要课程满人了,其他人发送的请求就失效了。画个简图,很容易理解。


我的建议

针对计算机专业学生

如果你想要自己写脚本的话,可以学python,或者java都是可以的。当你学了一段时间后,你自己会悟出来,怎么来写一个控制鼠标键盘的脚本。


如果你想要抢课的话,我建议是学习爬虫,爬虫会让你明白客户端和服务器之间是怎么进行请求的,学了一段时候后你就能够自己构造请求了,当然构造抢课的请求也不在话下。


零基础学习的周期会比较长,要有一个心理准备,一般基础语言学完的话要2-3个月,爬虫学一点的话要1个月。这些肯定都是要建立在实操的基础上。


针对非计算机专业的学生

不要自己去学习写脚本,周期会很长。


建议直接去网上找专门抢课的人员,肯定会有的。我周围就有专门给别人抢课的大学生,实在不行去淘宝、去咸鱼上、去公众号上都找找,有贵的也有便宜的。


最后,我是写过很多爬虫的计算机专业学生,但很久没有写过抢课脚本了。如果有问题的话,欢迎联系我,我会尽力解答。

相关文章
|
5月前
|
JSON Java 测试技术
一篇文章讲明白JGit学习
一篇文章讲明白JGit学习
151 0
|
6月前
|
程序员 开发工具 Python
最全学Python有什么用?看完这些你肯定明白_学pysion的作用,2024年最新字节跳动面试严格吗
最全学Python有什么用?看完这些你肯定明白_学pysion的作用,2024年最新字节跳动面试严格吗
最全学Python有什么用?看完这些你肯定明白_学pysion的作用,2024年最新字节跳动面试严格吗
编程要搞明白的东西(一)
编程要搞明白的东西(一)
85 0
|
Java
编程要搞明白的东西(二)
编程要搞明白的东西(二)
88 0
|
算法 Java 程序员
你还不会递归?告别困惑,我来教你
递归是一种应用非常广泛的算法(或者编程技巧)。之后我们要讲的很多数据结构和算法的编码实现都要用到递归,比如DFS深度优先搜索、前中后序二叉树遍历等等。所以,搞懂递归非常重要,否则,后面复杂一些的数据结构和算法学起来就会比较吃力。
196 0
|
测试技术
初级软件测试面试题怎么找?提供的这两个地方你肯定用得上
最近几年,随着电子产品和互联网的蓬勃发展,各类科技公司如雨后春笋般出现,而软件公司作为科技类公司中的重要组成部分,在这支互联网大军中也占据了重要一席。因而,负责软件问题质检的软件测试岗位也逐渐成了这几年炙手可热的就业岗位之一。
148 0
|
安全 编译器 程序员
学过 C++ 的你,不得不知的这 10 条细节!
我在阅读 《Effective C++ (第三版本)》 书时做了不少笔记,从中收获了非常多,也明白为什么会书中前言的第一句话会说: 对于书中的「条款」这一词,我更喜欢以「细节」替换,毕竟年轻的我们在打 LOL 或 王者的时,总会说注意细节!细节!细节~ —— 细节也算伴随我们的青春的字眼 针对书中的前两个章节,我筛选了 10 个 细节(条款)作为了本文的内容,这些细节也相对基础且重要。 针对这 10 细节我都用较简洁的例子来加以阐述.
学过 C++ 的你,不得不知的这 10 条细节!
感想与体会
文中讲述本人学习网页制作的经历、感想与体会
183 0
|
大数据
您了解对方吗?不了解的话那就只能算是“剃头挑子一头热”了,呵呵。
     博客园就像一个大家庭,大家来自五湖四海,互相帮助,共同提高,本来是挺好的。但是如果有“与众不同”的出现的话,就很容易引起轩然大波,有关心的、有反对的、有赞成的。也有忍不住在首页跟贴的。呵呵。
655 0
下一篇
无影云桌面