js脚本自动抢羽毛球场地

本文介绍了如何使用油猴JavaScript脚本来自动抢夺CUC手球馆的羽毛球场地。通过分析微信链接,利用TamperMonkey或暴力猴插件,设置定时和匹配URL规则,在特定时间自动跳转并执行预订操作。脚本包括时间判断、页面元素操作以及点击确认预订的流程,实现了自动预定功能。需要注意可能的安全问题和公平使用。
摘要由CSDN通过智能技术生成

基于油猴JavaScript脚本自动抢羽毛球场地——以CUC手球馆为例

我们学校只有室内的羽毛球场地,所以手球馆位置十分有限,需要每天8点整准时进入微信链接才能抢,还不一定能抢到。所以不妨写一个简单的脚本来帮助我们抢,也有助于我们锻炼身体。
在这里插入图片描述
我们可以通过微信右上角的复制网址得到相应的url,我们发现这个url会有中传统一身份认证,所以用Python做会比较麻烦,建议使用JavaScript在前端浏览器运行就会方便一些。

  1. 环境问题
    首先我们需要一个能运行油猴脚本的浏览器,电脑端比如Chrome,edge,360极速浏览器X等,手机端可以用edge,X浏览器等,然后启动TamperMonkey或暴力猴插件(有的需要下载),然后新建一个脚本,名字随便取,需要匹配相应的链接规则,可以使用通配符:
// @match       *://changguan.cuc.edu.cn/*
  1. 定时问题
    首先我们需要获得当前时间,然后将当前时间和目标时间作差,来表示需要等待的时间。当到达目标时间了,就执行相应的函数操作,否则继续等待。
// 获取当前时间
now = new Date();
targetTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 8, 0, 0); // 设置为当天8点0分0秒
// 计算需要等待的毫秒数
waitTime = targetTime - now;

  1. 等待过程函数
    我们需要在waitTime秒之后就进入相应的链接进行抢羽毛球操作,所以需要用到setTimeout函数,但是有一个问题,究竟是直接点击元素按钮还是跳转url呢?
    在这里插入图片描述
    通过F12进行分析,这个按钮调用的是checkTime(‘YMQ01’,‘0’,‘002’)函数,而通过实验发现到了8点checkTime还是无法进入,所以只能用跳转链接的方式。
    在这里插入图片描述
if (waitTime > 0) {
  // 等待指定时间
  time1=setTimeout(function() {
    // 加载指定网址
    window.location.href = "https://changguan.cuc.edu.cn/Views/Field/FieldOrderGr.html?VenueNo=002&FieldTypeNo=YMQ01";
  }, waitTime);
}
  1. 跳转后操作函数
    由于油猴脚本是打开网页就会从头开始运行函数,所以当3步骤完成后会继续依据时间判断waitTime,由于我们需要抢的是第二天的羽毛球场地,所以需要点击相应元素。
    在这里插入图片描述
    通过F12可以看到相应元素对应的是getDateData(‘1’)函数,我们直接运行这个函数就可以获得第二天的数据了。
    在这里插入图片描述
    由于这个getDateData(‘1’)函数调用之后有点卡,我怀疑需要向网络发送请求,而且有很大延时,所以通过F12的网络可以分析出延时大概平均为500毫秒左右。
    在这里插入图片描述
    所以我们需要等待至少700ms之后才能得到新的数据,才能进行点击操作。
  • 检查是否有空场地
    我们需要找到包含可用数的元素,一种是可用数:*,另外一种就是预定已满,但是这里的span只有class属性,没有id,所以需要用到querySelectorAll函数,按照".class名称"来索引。在这里插入图片描述
    querySelectorAll返回的是一个数组,我们需要对数组中每一个元素遍历查找span元素的innerText是否包含“可用”两字,同时在for循环中,我们想要倒序先抢最晚的羽毛球场地,用i--操作。

  • 点击提交
    首先选中相应的时间段场地,触发onclick事件,可以选择上面的class:col-style,也可以通过getElementById来实现,不过通过源码分析这里的id名会根据当前时间而改变id名称,上午打开网页第一个按钮就是“li上午0”,下午打开网页第一个按钮就是“li下午0”,等等。
    在这里插入图片描述
    确定预定按钮对应的函数就是comfirmsubmit(),可以直接调用,最后还有确定验证框:
    在这里插入图片描述
    确定验证框使用的是weui_btn_dialog primary,是很多微信网页都会用到的验证框。
    在这里插入图片描述
    href="javascript:;"表示用空的js代码替换默认链接,绑定一个隐藏的事件回调,来执行业务,我们需要通过$('.weui_btn_dialog.primary')的方式找到对应的隐藏变量,通过触发器trigger来触发click事件,成功后退出循环break。

else{
  getDateData('1');
  time2=setTimeout(function() {
    var elements = document.querySelectorAll('.textsize');
    for (var i = elements.length-1; i >= 0; i--) {
      if (elements[i].innerText.includes('可用')) {
        document.querySelectorAll('.col-style')[i].onclick();
        //document.getElementById("li上午0").onclick();
        comfirmsubmit();
        $('.weui_btn_dialog.primary').trigger('click');
        break;
      } else {
        continue;
      }
    }
  }, 700);
}

这样就顺利地预定了羽毛球馆,只不过我们需要在8点之前打开场地类别选择的网页,之后到时间就能自动抢到CUC手球馆了,亲测订单时间显示为8点0分0秒或1秒。
在这里插入图片描述
大家可以把相应的页面元素换成自己学校的,然后看还需要进行什么操作,再进行修改。关于安全问题,我们只是做了一个模拟点击的操作,会比手抢快那么一点点,可能会被检测出来,所以在我们想打羽毛球的时候才用,其他时间就让给其他人吧。

【资源说明】 基于python实现的智慧场馆自动预约系统源码+部署操作说明.zip 安装与需求 # Python 3 本项目需要 Python 3,可以从[Python 官网](https://www.python.org/)下载安装 # Packages selenium 采用如下命令安装 `selenium`,支持 2.48.0 及以上版本: ```python pip3 install selenium==2.48.0 ``` numpy Pillow opencv 基本用法 1. 将 `config.sample.ini` 文件重命名为 `config0.ini` ,如果需要多个账号预约,或者需要时间上的“与”关系,请设置多个.ini文件(最多为两位数), 请不要新建文件,不然自己搞定编码问题 2. 用文本编辑器(建议代码编辑器)打开 `config0.ini` 文件 3. 配置 `[login]` 、`[type]` 、`[time]`、`[wechat_notice]` 这几个 Section 下的变量,在 `config0.ini.sample` 文件内有详细注释 定时运行 # Windows 本项目中的 `autoRun.bat` 文件可提供在静默免打扰情况下运行程序的选择,配合 Windows 任务计划管理可实现定期自动填报,具体请参考[Win10下定时启动程序或脚本](https://blog.csdn.net/xielifu/article/details/81016220) # mac OS 进入项目根目录,以命令 `./macAutoRun.sh` 执行 `macAutoRun.sh` 脚本即可,可设定或取消定时运行 # Linux 使用 `crontab` 设置 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
自动JS脚本是一种通过编程自动执行一系列操作的技术,通过精确定义的脚本来模拟人工操作,以实现自动购华为商城的商品。 首先,我们需要分析华为商城的网页结构和购流程。通过浏览器开发者工具,可以查看到网页元素的代码和交互逻辑。我们需要关注商品页面中的“立即购”按钮和购物车页面中的“提交订单”按钮。 接下来,我们可以使用JS脚本通过定时器来执行以下操作: 1. 打开华为商城的商品页面,并确保已登录账户。 2. 通过DOM操作获取“立即购”按钮的元素,并模拟点击事件。 3. 等待一段时间,以确保商品已添加到购物车。 4. 跳转到购物车页面,并通过DOM操作获取“提交订单”按钮的元素,并模拟点击事件。 5. 等待一段时间,以确保订单已提交。 需要注意的是,为了避免被识别为自动程序而被封禁,我们可以在脚本中加入一些随机的时间延迟、鼠标移动操作、人类行为模式等来模拟真实的用户操作。 然而,使用自动JS脚本存在一定的风险。网站可能会采取一些反爬虫措施,如验证码、限制访问频率等,这可能导致自动脚本的失效。此外,自动购可能违反网站的使用规则,可能会导致账户被封禁或商品被取消订单。 总的来说,自动JS脚本可以帮助我们自动化购华为商城的商品,但需要谨慎使用,遵守网站规则和法律法规,避免造成不必要的麻烦。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清洄KAKA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值