Greasy Fork is available in English.

BUPT reservation V3.0

北邮体育馆预约,全新改版,跳过获取预约列表这一费时操作,直接获取预约url

作者
翟泽鹏
今日安装
0
总安装量
27
得分
0 0 0
版本
3.0
创建日期
2020-10-15
最近更新
2020-10-26
许可协议
不适用
应用到

V3.0

北邮体育馆预约,全新改版,跳过获取预约列表这一费时操作,直接获取预约url

第一次运行脚本前请按照以下步骤操作

  1. 使用谷歌浏览器,下载油猴插件(谷歌商店里搜索tampermonkey)安装脚本,关闭脚本(因为之后要完成登录操作)
  2. 登录电脑版微信,在通讯录里找到北京邮电大学企业号,点击体育馆预约,转到一个链接,网页提示“请在微信客户端打开链接”(浏览器请使用谷歌浏览器,若默认用的是微信内置浏览器打开,点击微信内置浏览器里的“用默认浏览器打开”按钮,转到谷歌浏览器)
  3. 需要用谷歌浏览器模拟微信内置浏览器: 在步骤1位于的网页下 => F12打开控制台 => Settings => Devices => Add custom device =>名字随意,大小400*700就可以,user agent string填写如下字段 user-agent:mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko) version/4.0 mobile safari/534.30 micromessenger/5.0.1.352
  4. 关闭设置界面,在控制台页面下,ctrl+shift+m,可以看到浏览器可模拟手机设备运行,将设备换为刚才步骤2所调的微信设备,刷新网页,这时“请在微信客户端打开链接”消失,网页一片空白,表示正常(这一步骤相当于加入cookie)
  5. 浏览器地址换为 https://reservation.bupt.edu.cn/index.php/Wechat/Display/index ,回车,可以看到北邮体育馆主界面显示
  6. 点击个人中心,登录,输入姓名手机号(北邮企业号绑定的手机号),下一步,使用手机验证码登录,然后登录成功

之后每次运行脚本前操作

打开脚本代码页面,先进行设置,以下例子为10点抢10月27号18点的游泳馆,打开脚本设置,运行时期更改为document-start

var item = 0 //0:羽毛球 1:乒乓球 2:游泳馆 3:健身房
var hour = 2, minute = 0 //开抢时间点(当本地时间大于该时间点时自动启动核心函数)
var timeIndex = [1] //预约时间段序号列表(按时间顺序排时间段,列表内数字代表相应序号时间段)  例如:某一天有三个时间段:"08:00-09:20","10:00-11:20","12:00-13:20",[2,3]代表抢10点与12点的
var posIndex = [[1]] //该时间段内位置列表(乒乓球和羽毛球同一时间段内有多个位置,默认为1,选第一个)游泳馆和健身房同一时间段内就一个,就是1  timeIndex与posIndex长度一致
var autoPay = 0 //是否自动用余额支付,0代表不自动,1代表自动(注意,如若不自动,尽量快点支付,因为只有支付完成后才算预约上,否则可能会出现在支付过程中位置已被别人抢完)
var flag = 0 //1代表默认抢明天的,否则抢date所表示的,flag为1则date属性无效
var date = "20201019" //所要预约的日期 一共8位,例如:20200506

例1:

羽毛球一天有三个时间段 "08:00-09:20","10:00-11:20","12:00-13:20",每个时间段有5个位置,我想在2点8分开始抢明天10:00-11:20的一号位置,12:00-13:20的四号五号位置,自动支付,设置如下: //item=0;hour=2;minute=8;timeIndex=[2,3];posIndex=[[1],[4,5]];autoPay=1;flag=1;

例2:

游泳馆一天有一个时间段 "18:00-20:00",每个时间段有1个位置,我想在10点开始抢明天位置,不自动支付,设置如下: //item=2;hour=10;minute=0;timeIndex=[1];posIndex=[[1]];autoPay=1;flag=1;

附:

北邮游泳馆每日预约开放时间:10点,健身房:12点

在预约时间点前完成以下操作,关闭vpn和脚本,进行步骤2,4,5(请不要点击首页进入,首页进不去,而是用步骤5这种方式进入),若页面显示参数错误,则移除https://reservation.bupt.edu.cn/index.php/Wechat/Display/index页面内所有cookies(点击谷歌浏览器地址栏左侧🔒图标=>cookies=>所有全部都移除),再次重复2,4,5,查看个人中心,若未登录进行步骤6,登录好,重新打开脚本,调好脚本设置,在预约时间点前一小段时间内进行步骤5,脚本便自动运行,到了时间点自动启动核心函数

脚本原理

研究了网页前端源码,惊奇发现有捷径可走。我们在抢预约时预约列表加载页面十分慢,这是因为在此时有大量服务器请求所要预约的那天空闲位置情况,然而我们选好位置,点击预约时,这时候网页跳转到另一个url,那为何我们不直接跳转到这个url,而省下大量在请求预约列表花费的时间呢?相当于我们之前费时操作仅仅为了得到一个url,这也太扯淡了。故写此脚本,快速抢预约。

V2.0(旧版本内容,以下不需要看)

北邮体育馆抢预约脚本,可实现在某个时间点立即刷新预约界面,迅速找到所要抢的位置,并自动预约购买。

第一次运行脚本前请按照以下步骤操作

  1. 登录电脑版微信,在通讯录里找到北京邮电大学企业号,点击体育馆预约,转到一个链接,网页提示“请在微信客户端打开链接”(浏览器请使用谷歌浏览器,若默认用的是微信内置浏览器则将体育馆预约名片发给任一朋友,然后再点击名片)
  2. 需要用谷歌浏览器模拟微信内置浏览器: 在步骤1位于的网页下 => F12打开控制台 => Settings => Devices => Add custom device =>名字随意,大小400*700就可以,user agent string填写如下字段 user-agent:mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko) version/4.0 mobile safari/534.30 micromessenger/5.0.1.352
  3. 关闭设置界面,在控制台页面下,ctrl+shift+m,可以看到浏览器可模拟手机设备运行,将设备换为刚才步骤2所调的微信设备,刷新网页,这时“请在微信客户端打开链接”消失,网页一片空白,表示正常(这一步骤相当于加入cookie)
  4. 浏览器地址换为 https://reservation.bupt.edu.cn/index.php/Wechat/Display/index ,回车,可以看到北邮体育馆主界面显示
  5. 点击个人中心,登录,输入姓名手机号(北邮企业号绑定的手机号),下一步,使用验证码登录,然后登录成功

之后每次运行脚本前操作(以每天10点抢第二天游泳馆为例)

打开脚本代码页面,先进行设置,以下例子为10点抢10月27号18点的游泳馆,打开脚本设置,运行时期更改为document-start

var item = 0 //0:游泳馆 1:乒乓球 2:羽毛球 3:健身房
var hour = 10, minute = 0 //开抢时间点
var date = "20201017" //所要预约的日期
var time = ["18:00-20:00"] //预约时间段列表(注意是英文冒号,数字为两位数,例如八点为08:00)  例如: ["08:00-09:00","22:00-23:00"]抢这两个时段的
var autoPay = 0 //是否自动用余额支付,0代表不自动,1代表自动

于9点50左右(10点之前一小段时间内),关闭vpn和脚本,重复步骤1,3 ,4(请不要点击首页进入,首页进不去,而是用步骤4这种方式进入),若页面显示参数错误,则移除https://reservation.bupt.edu.cn/index.php/Wechat/Display/index页面内所有cookies(点击谷歌浏览器地址栏左侧🔒图标=>cookies=>所有全部都移除),再次重复1,3,4,查看个人中心,若未登录重复步骤5,登录好,打开脚本,调好设置,重复步骤4,脚本便自动运行

脚本原理

所谓抢,就是要在相关按钮出现的一瞬间迅速点击,而获取网页元素不能太快,否则页面还未加载好元素就获取直接gg,由此如何在元素加载完成后立即获取尤为关键 首先脚本需要在document-start运行,不能等整个页面加载完毕执行,否则速度太慢。然后整个脚本基于waitForElementToDisplay函数,该函数每20ms(时间可以在代码里修改)检测一次元素是否存在,一旦存在立马执行,由此达到迅速的效果。

有问题联系我 QQ:957715602

-BY ZZP