校园生活奇技淫巧——羽毛球场预订脚本的编写篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校园生活奇技淫巧——羽毛球场预订脚本的编写篇相关的知识,希望对你有一定的参考价值。

——本文为博主原创,转载请注明出处

声明:本文为博主脚本编写的练手心得,一定程度上破坏了我校场地预定的公平性,在未经作者允许情况下请勿传播

  虽然综体、气膜馆、西体有很多的羽毛球场,然我清贵为体校,一直以来都一场难求,往往开始预约30秒后除了6点半的场次就都没有了。于是作为手残的程序员,笔者决定发挥自己的主观能动性嘿嘿嘿:)

  首先,我打开了预约场地的网页,然后就发现了一件非常重要的事情!它的url是这样的

http://50.tsinghua.edu.cn/gymbook/gymBookAction.do?ms=viewGymBook&gymnasium_id=3998000&item_id=4045681&time_date=2016-12-03&userType=

  里面居然有预定日期、场馆、场地!果然天下码农是一家,还是同行好!于是我们就可以根据设置这三个参数,任意的直接访问特定的预约网页。

  于是就坚定了我写脚本抢场地的信念:)

  然后我通过chrome F12大法找到了源码里的几个关键函数,调用selectFieldTime(obj)就可以直接选中预约表格中的obj单元格,点击预约按钮的时候触发的是saveOdder()函数,确认预约信息并选择支付方式的函数式changeSelected()。

  那么现在就是万事俱备只欠东风了。

具体步骤

  首先,在浏览器中创建一个书签栏的书签,修改书签,把书签地址改为下面的代码,并保存(按照需要自行修改)当然你也可以选择在浏览器的console里直接复制粘贴运行脚本代码。

javascript:
selectFieldTime(document.getElementById("overlayView").contentWindow.document.getElementById(‘resourceTable‘).rows[1].cells[2]);
saveOdder();
changeSelected();
void(0);

  上述代码中的rows[n]表示预定表格的第n行,cells[n]表示第n格(下标从0开始),比如我的代码只单选第1行第2格,需要多选单元格就复制粘贴一下selectFieldTime函数的调用,更改rows和cells的下标即可。

  像这样

技术分享

  点击保存

 

  然后就可以进入页面,登录到预约网站后,新建标签页在浏览器地址栏输入以下网址(根据需要自行修改)

http://50.tsinghua.edu.cn/gymbook/gymBookAction.do?ms=viewGymBook&gymnasium_id=3998000&item_id=4045681&time_date=2016-12-03&userType=

  其中的time_date=后的日期改成你要预定的日期,这是气膜馆羽毛球场的预定地址,综体、西体或者其他场地类型的地址自行到网页中获取,就是进入预约该场地的页面(日期无所谓),把网页的地址复制下来,修改预定日期即可,再粘贴上去就行了,如果没开始预定网页会提示你预定还没开始,如果已经开始预定,则会出现下图的表格

 技术分享

  然后就是在预约开始的时候,刷新页面等页面显示完毕(页面中显示上述表格),直接点击你创建的脚本书签(考虑到网络问题,以及不想做得太傻瓜化以免更严重地破坏预约的公平性,没有采用计时器循环,这里用手动的方式)

  

  如果成功了会显示两个框,一个是选择支付方式,一个是确认支付,在选择支付方式的框点击取消(因为脚本已经帮你调用了changeSelected()函数,当然你想要现场支付也可以用dom操作在脚本调用changeSelected()函数之前更改一下支付方式的选项),然后在另一个框输入订场的信息,点击直接or稍后支付,之后就可以在订单中看到你刚才抢到的场地了。

 技术分享

同时建议先提前在网页上试一试(第二天6:30的场次基本都会有剩余的,可以用来测试)

 

 

三花

2016-11-30

以上是关于校园生活奇技淫巧——羽毛球场预订脚本的编写篇的主要内容,如果未能解决你的问题,请参考以下文章

Linux 下Python 脚本编写的“奇技淫巧“

Linux 下Python 脚本编写的"奇技淫巧"

如何单击以使用 jQuery maphilight 更改突出显示颜色

Jenkins奇技淫巧 — 全局变量篇

无需购买域名和托管即可使用 React 应用

技术服务于生活——羽毛球+程序员=?