1.开篇

抢座程序分为两种,基于 selenium 的浏览器自动化程序,和基于 requests 库的 http 模拟请求程序。

为了成功运行程序,请确保你的计算机安装了 Python。如何安装 Python 可自行网上搜索。两种程序命中率均比较高。可任选一种运行。
项目地址:https://github.com/xieqifei/AutoLernraum

2.基于 Requests 库的预定程序(正在测试当中,不太稳定,关注 github 更新)

  1. 安装 Python 环境
  2. 点击 github 网页上面那个绿色的Code按钮,选择下载为 zip,将整个程序文件从 github 下载到本地并解压。
  3. 使用任意编辑器打开test_requests.py,修改变量 buchung

buchung = {‘ort’: ‘’, ‘kursnr’: ‘08411027’,’info’:{ ‘username’: ‘’, ‘email’: ‘example@gmail.com’, ‘sex’: ‘M’, ‘vorname’: ‘Ivan’, ‘name’: ‘Natanael’, ‘strasse’: ‘Pontstr.23’, ‘ort’: ‘52076 Aachen’, ‘status’: ‘S-RWTH’, ‘matnr’: ‘468389’, ‘telefon’: ‘00491748068847’}}

在变量 buchung 中,需要修改的数据如下:

kursnr:你想预定的自习室的编号。例如 08411027 为 Semi90。在图书馆的预定系统中,很容易就可以找到。图书馆系统链接:https://buchung.hsz.rwth-aachen.de/angebote/aktueller_zeitraum/_Lernraumbuchung.html

email:你的邮箱。

sex:性别。男:M;女:W

vorname:名字。首字母大写

name:姓。首字母大写

strasse:街道和号码

ort:邮编和地址,务必注意格式是 52076 Aachen.邮编和地址以空格隔开

matnr:六位学号

telefon:带前缀的手机号

其余内容可不修改。务必注意在每个字符串两边都有单引号

  1. 保存文件,并用 python 运行test_requests.py文件。若你不知道如何运行 python 文件,建议上网查询。
  2. 运行后,程序会在两分钟之内,以 2 秒为间隔刷新,直到发现你指定的自习室可以预定并完成预定,或两分钟后依然没有发现可以预定的位置为止。如果你需要抢的自习室在 8 点开始,那么建议你在 7 点 59 的时候开始运行程序。。程序结束 5 分钟后,你将收到来自学校邮箱的,预定成功邮件。若没有收到,那么抢座失败。

3.基于 Selenium 库的浏览器自动化程序

顾名思义,你除了需要在你的电脑中安装 Python 以外,还要在你的电脑里安装 Chrome 浏览器。如果你不想安装 Chrome 那么上面的程序应该就可以满足你的需求了。之所以使用自动化,是因为它可能会比模拟 http 请求更加可靠,但缺点也很明显,它比上面的程序会慢个几秒。不过没关系,相比于人为抢座来说,它同样非常快。那么,

  1. 安装 Python 环境
  2. 安装任意版本 Chrome 浏览器
  3. 打开test_selenium.py文件,修改buchung变量里的个人信息和需要预定的自习室编号,详情看第 2 章 3 节
  4. 保存文件,用 Python 运行test_selenium.py
  5. 同样的,如果你预定的程序 8 点开抢,那么建议你 7:59 运行它。它将在两分钟之内反复刷新页面,直到你指定的自习室位置可以被预定,并执行预定程序,或者两分钟之后结束运行。

4.随机抢座

也许你在抢座时头破血流,也没有抢到一个位置。那么亡羊补牢,你可能需要一个程序来尝试捡漏,如果有人放弃了他的预定,并在学校的预定系统被释放出来,那么你可以用到这个程序。他会间断的刷新,直到从学校的网页里找到一个可以预定的位置,并预定成功为止。或者,除非你手动终止它,否则他将不会停止运行。

  1. 安装 Python 环境
  2. 安装任意版本 Chrome 浏览器
  3. 打开random_test.py文件,修改buchung变量里的个人信息,详情看第 2 章 3 节。自习室的编号任意填写即可。
  4. 保存文件,用 Python 运行random_test.py
  5. 你可在任意时候运行它。当需要结束的时候,按住ctrl+C或关闭终端可终止。

这个程序相当鸡肋,因为很少能够遇到可以捡漏的机会,而遇到的时候,也没抢到过。

5.定时运行

也许你想早起的时候睡个懒觉。那么,你可以试试使用计算机定时运行 python 程序。

Windows 和 mac 系统的定时运行方法,你可以自行谷歌搜索。因为我用到过树莓派和云函数进行定时抢座,所以这里只讲 Linux 和基于腾讯云函数的定时方法。

Linux 系统下的定时运行

你需要用到 linux 自带的定时软件 crontab。非常简单,

  1. 输入指令,开始编辑时间表
1
crontab -e
  1. 按下i开始编辑,编辑内容如下
1
0,30 8 * * * python -u /home/***/test_requests.py >result.log 2>&1

将上述/home/***/test_requestes.py改为你放置该文件的地址即可。

此行代码表示。将在每日的 8 点和八点半执行 python 此程序,并将 python 的输出保存到定时程序文件夹里的 result.log 文件里

  1. 按下:wq保存退出

利用腾讯云函数

腾讯云函数,有非常充足的免费运行空间。可以直接把程序放到上面执行,应该很少有人会用到吧,所以简单讲讲。

  1. 建立一个新函数,将完整的程序上传。
  2. 新建定时触发器,自定义触发周期如下,因为定时器是以北京时间为准,所以需要考虑时差问题。
1
0 0,30 14 * * *
  1. 函数入口为test_serverless.main_handler

6.结尾

如果你对程序的运行原理感兴趣,那么你可以看看/myclass/lernraum.py文件,所有的抢座程序都在这个文件中,因为文件经过了多次修改,所以看起来可能有点杂乱无章。另外,基于此程序我开发了一个网站,用于批量自动化抢座,https://buchung.sci.ci 功能以基本实现,但由于基于 Requests 库程序还不稳定,浏览器自动化又颇耗内存,只给我的好友提供服务,暂时未开放注册,敬请期待。

评论