【HUST】公选抢课|用Auto.js模拟蹲课过程
文章目录
- 前言
- test.js
- module.js
- 使用方法
- 总结
- 细节
- 以下是原博客,用的Tampermonkey,用不了了
- 1. 撰写过程中学到的几点
- 一、如何用js绕开页面中的confirm判断。
- 二、修改网页DOM元素,给使用者一点小惊喜
- 三、sleep函数在js中的极有效写法
- 2. 使用说明
前言
-
这是一个手机脚本。
脚本管理软件:Auto.js 4.1.1。
auto.js挺简单的,只是拿手机蹲很容易没电而且不能玩手机。
-
test.js
var m = require("module.js");
var name = "动画音乐欣赏"; //课堂全名
var key = "20221w104349001"; //课堂编号
var number = "149/150"; //期望人数
var type = "文学与艺术(原 艺术类)"; //课程类型
var c = desc("刷新").findOne(); // 也有叫做“刷新网页”的,具体叫什么,下面我会讲怎么找
while (true) {if (text("选课系统更新公告").findOne(100)) {sleep(50);desc("选课").findOne().click();sleep(50);} else if (text("选课提示信息").findOne(100)) {m.clicktext("下一步");sleep(50);} else if (text(key).findOne(100)) {if (text(number).findOne(100)) {home();break;} else {sleep(50);c.click();sleep(50);}} else if (text(name).findOne(100) && text(type).findOne(100)) {m.clicktext("查看课堂");sleep(100);} else if (text("课程名称: ").findOne(100)) {sleep(50);input(name);sleep(50);m.clicktext("查询");sleep(100);}sleep(100);
}
module.js
var m = {};
m.clicktext = (item) => {while (true) {var a = text(item).findOne(1000);if (a) {a = a.bounds();if (a) {var x = a.centerX();var y = a.centerY();click(x, y);break;}}}
}
module.exports = m;
使用方法
总结
- 下载
Auto.js
:随便搜一搜关键词“Auto.js 4.1.1下载”即可http://www.j9p.com/azrj/555458.html。 - 浏览器调至
电脑模式
; - 复制粘贴上述脚本,分别命名为test.js,module.js;
- 修改test.js的name,type,key,number和c;
- 运行test.js;
- 打开选课页面并登录进入首页,会发现脚本已经开始运行,将页面缩放至最小。
细节
第四步修改test.js的name,type,key,number和c:
name对应“课程名称”;
type对应“公共课大类”。
key对应“课程编号”;
number对应“人数/容量”;(达到number的时候手机就会震动提醒你)
c对应“浏览器的刷新按键”,找的方式如下:
- 打开auto.js设置并开启“无障碍服务”、“悬浮窗”;
- 开启后打开浏览器,点开悬浮窗,可以看到一个蓝色的按钮,用于页面元素审查,如下图:
- 依次点击“布局范围分析”-页面上的刷新按钮-查看控件信息,查看控件的desc值即可。
改完这些就可以用了。
以下是原博客,用的Tampermonkey,用不了了
已不能用,原因1:官网修复了左右翻页重新获取数据的bug,原脚本不再适用,需刷新之后重新进才可以实现页面更新。
原因2:杀鸡焉用牛刀?不想改。
1. 撰写过程中学到的几点
一、如何用js绕开页面中的confirm判断。
这里的页面本身非常简陋,直接把按钮对应的原函数写了出来。
所以我采用的方法是直接改变按钮的onclick事件,并重写onclick事件对应的函数,覆盖掉,把其中的confirm去掉。非常简单粗暴。
var what1=document.getElementsByTagName("input")[10];
what1.onclick =function () {selectKT(what1.id,nowRenshu,renshu,where.cells[2].innerText,bianhao,xuefen);};
后话:由于学校网站经久失修,其实只要读取对应的并且填写表单即可,即使用抓包和发包之类的也很容易,根本就不需要用js模拟。
二、修改网页DOM元素,给使用者一点小惊喜
本来页面上想蹲的课的按钮是“选课”,由于改页面元素着实简单,顺手改成“加油”了,自我感觉极好,但是这里有一个需要注意的点。(看代码)
what1.value = '加油';var btn=document.creatElement("button");btn.onclick=function(){what1.value = '加油';};btn.onclick();
我这里额外加了一个btn按钮,而不是只修改value值。因为众所周知,这玩意改完之后不会立即重新渲染。(也就是,只写第一行代码是基本没用的)所以添加一个小小的点击事件就能让它立即生效。
三、sleep函数在js中的极有效写法
不瞒您说,这个sleep函数我抄的。但是真的好香,记小本本。
function sleep(n) {var start = new Date().getTime();// console.log('休眠前:' + start);while (true) {if (new Date().getTime() - start > n) {break;}}// console.log('休眠后:' + new Date().getTime());
}
2. 使用说明
清空并复制粘贴以下代码。并阅读下面的说明。
// ==UserScript==
// @name 华科公选抢课
// @namespace http://tampermonkey.net/
// @version 0.1.3
// @description 抢课前后刷新,并自动选课
// @author shandianchengzi
// @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @match http://*/*
// @grant none
// @include http://wsxk.hust.edu.cn/*
// ==/UserScript==
var shuaxin=500;//刷新频率(单位毫秒)
function sleep(n) {var start = new Date().getTime();// console.log('休眠前:' + start);while (true) {if (new Date().getTime() - start > n) {break;}}// console.log('休眠后:' + new Date().getTime());
}function selectKT(ktbh,ktrl,ktrs,kcmc,kcbh,kczxf){document.getElementById("ktbh").value=ktbh;document.getElementById("ktrl").value=ktrl;document.getElementById("ktrs").value=ktrs;document.getElementById("kcmc1").value=kcmc;document.getElementById("kczxf").value=kczxf;document.getElementById("kcbh").value=kcbh;document.form.submit();
}
(function() {;var what = document.getElementsByTagName("table")[0].rows[3];var what3=what.cells[0].className;if(what3=="pagebar"){var where=document.getElementsByTagName("table")[0].rows[2];var what10=where.cells[9].innerText;var what2=where.cells[2].innerHTML;var xuefen=where.cells[4].innerText.split('/')[1];var bianhao=what2.split('=\'+')[1];bianhao=bianhao.split(')')[0];var renshu=what10.split('/')[1];var nowRenshu=what10.split('/')[0];var bili=renshu+'/'+renshu;var noChance=what10.indexOf(bili);var what1=document.getElementsByTagName("input")[10];what1.value = '加油';var btn=document.creatElement("button");btn.onclick=function(){what1.value = '加油';};btn.onclick();what1.onclick =function () {selectKT(what1.id,nowRenshu,renshu,where.cells[2].innerText,bianhao,xuefen);};if(noChance!= -1){history.go(-1);}else {what1.onclick();return;}}else history.go(1);sleep(shuaxin);// Your code here...
})();
使用说明:
- 前提:你没有满课。
- 来到华中大选课的页面,左上角按课堂选课,然后打开脚本。
- 查询你想蹲的课程并回车。
- 然后就会自动刷了。过程略鬼畜,如果有人退了就会自动抢。不可以挂后台,请让这个页面一直在窗口上,可以把窗口拉到很小,然后用DeskPins固定不管。
补充说明:
5. 其他的浏览器不清楚,谷歌是可以的。
6. 暂时只支持课程名称查询之后只有一个结果的课,比如华科学子走世界查得到很多课,这个就不支持。
7. 如果觉得刷新频率不满意,把开头的shuaxin改成对应的毫秒数。
8. 放弃刷这一门了就先停止脚本,再打开别的重复1~4步骤。刷到了脚本会自动挂掉,但是也要手动关上,不然可能会继续重复跳页面。
【HUST】公选抢课|用Auto.js模拟蹲课过程相关推荐
- 使用auto.js模拟手动点击芭芭农场任务(芭芭农场自动脚本2022.8.1更新)
使用auto.js 4.0(官方免费)或者auto.js pro(官方收费),下载安装好auto后创建项目,直接复制下列代码就可以运行了.文章后面有auto的两个版本安装包!!! //自动缩放分辨率 ...
- auto.js开发网课搜题浮窗软件,类似按键精灵可浮窗式快速搜题
网课搜题浮窗软件实战开发一个浮窗式的安卓搜题软件 准备知识:javascript auto.js一些基础语法 打包工具:auto.js7.401 免费接口可以自己去找!网上一大堆. 学习资料领取及工具 ...
- 使用auto.js模拟手动点击芭芭农场任务(芭芭农场自动脚本)
//自动缩放分辨率 var height = device.height; //获取屏幕高 var width = device.width; //var whichOne = 0; setScree ...
- 基于Auto.js的支付宝批量自动转账脚本
基于Auto.js的支付宝批量自动转账脚本 这是一个能够实现支付宝多账号自动转账脚本,可以自动给多个指定用户自动转账,非商家用户不能申请支付宝的支付Api,另辟蹊径,使用Auto.js模拟手动操作支付 ...
- 【Auto.js】给手机编一个模拟遥控器
目录 一.问题引发 二.初步尝试 KeyCode(code) 三.再次尝试 shell(cmd[, root]) 四.调用 Java 五.附加 一.问题引发 本来想给自家的智能电视做个 APP,但家里 ...
- auto.js id为参数滑动_【Autojs教程】02Autojs PC端开发调试环境搭建
[Autojs教程]02-Autojs PC端开发调试环境搭建 写在前面 本篇教程算是保姆级教程了,希望以此能吸引更多感兴趣的同学学习Autojs,也希望大家能因此碰撞出更多的奇思妙想 关注微信公众号 ...
- Auto.JS 教程
最近淘宝双十一活动来了,有个自动领猫币的脚本,基于auto.js,亲测有效.有兴趣的点这里 声明: 本教程基于b站up主-笔青居的视频.传送门:https://space.bilibili.com/2 ...
- dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统
0.脑筋急转弯 请问在什么情况下 log(10) == 10 log(20) == 20 左滑查看答案 c ...
- auto.js 实现信息发送、QQ点赞、微信点赞、健康日报签到
文章目录 auto.js开发文档 安装total control 在手机端安装auto.js apk 安装vscode 短信多条发送 QQ点赞 微信点赞 健康日报填写 叠猫猫 auto.js开发文档 ...
- 【autojs】Auto.js Pro系统intent代码
//此代码由飞云脚本圈整理提供(www.feiyunjs.com) var intent = new Intent(); // vpnIntent.setAction("android.ne ...
最新文章
- 【深度学习】Transformer在语义分割上的应用探索
- C 判断 —— if...else 语句(bool变量、float变量、指针变量与“零值”进行比较)(else 到底与哪个 if 配对呢? if 语句后面的分号?)
- 机器学习的书看不懂怎么办?看看大神怎么回答?
- 华为手表用鸿蒙了吗,华为鸿蒙都2.0了,手机还不能用吗?
- 用户计算机MAC地址在哪看,怎么查看远程电脑mac地址
- C#中的Using的用法
- WinXP中鲜为人知的28项隐藏功能
- 史上最全最常用批处理260多个打包下载
- 【项目总结】如何获取地图上的所有POI
- 域名与网页服务器的什么对应,简述网站从域名到网页的访问流程
- python查询斐波那契数列通项公式_斐波那契数列求解总结(Python版)
- [Usaco2006 Open]County Fair Events 参加节日庆祝
- 浅谈几种常见 RAID 的异同
- linux中类似append的命令,Linux技巧:介绍 tar 命令打包、压缩、和加解密的用法
- “长按地址在浏览器中打开”的解决办法
- 百度网站打不开了,只有百度首页跟搜索页打不开其它能正常打开怎么解决?
- 决策树模型实现冬小麦提取
- IDEA默认KeyMap映射快捷键
- 读取文件云服务器bcc,云服务器bcc如何用
- 项目(二)Lenovo商城
热门文章
- html左侧浮动广告代码,纯js网页浮动广告代码
- Ubuntu安装语言包
- 小米note 卡在android,小米Note手机SIM卡怎么安装?小米Note安装手机SIM卡教程
- Transmission 下载列表、下载文件 迁移机器指南
- python获取管理员权限
- linux用户配额管理,—linux 磁盘配额按用户管理(quota)
- Dollars即时聊天客户端应用源码
- 《自己动手写网络爬虫》读书笔记——宽度优先爬虫和带偏好的爬虫
- 玩转小米盒子1:选购指南及应用推荐
- 【软件分析/静态程序分析学习笔记】1.静态程序分析(Static Program Analysis)介绍