文章目录

  • 前言
    • 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;

使用方法

总结

  1. 下载Auto.js:随便搜一搜关键词“Auto.js 4.1.1下载”即可http://www.j9p.com/azrj/555458.html。
  2. 浏览器调至电脑模式
  3. 复制粘贴上述脚本,分别命名为test.js,module.js;
  4. 修改test.js的name,type,key,number和c;
  5. 运行test.js;
  6. 打开选课页面并登录进入首页,会发现脚本已经开始运行,将页面缩放至最小。

细节

第四步修改test.js的name,type,key,number和c:

name对应“课程名称”;
type对应“公共课大类”。


key对应“课程编号”;
number对应“人数/容量”;(达到number的时候手机就会震动提醒你)

c对应“浏览器的刷新按键”,找的方式如下:

  1. 打开auto.js设置并开启“无障碍服务”、“悬浮窗”;
  2. 开启后打开浏览器,点开悬浮窗,可以看到一个蓝色的按钮,用于页面元素审查,如下图:
  3. 依次点击“布局范围分析”-页面上的刷新按钮-查看控件信息,查看控件的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...
})();

使用说明:

  1. 前提:你没有满课。
  2. 来到华中大选课的页面,左上角按课堂选课,然后打开脚本。
  3. 查询你想蹲的课程并回车。
  4. 然后就会自动刷了。过程略鬼畜,如果有人退了就会自动抢。不可以挂后台,请让这个页面一直在窗口上,可以把窗口拉到很小,然后用DeskPins固定不管。

补充说明:
5. 其他的浏览器不清楚,谷歌是可以的。
6. 暂时只支持课程名称查询之后只有一个结果的课,比如华科学子走世界查得到很多课,这个就不支持。
7. 如果觉得刷新频率不满意,把开头的shuaxin改成对应的毫秒数。
8. 放弃刷这一门了就先停止脚本,再打开别的重复1~4步骤。刷到了脚本会自动挂掉,但是也要手动关上,不然可能会继续重复跳页面。

【HUST】公选抢课|用Auto.js模拟蹲课过程相关推荐

  1. 使用auto.js模拟手动点击芭芭农场任务(芭芭农场自动脚本2022.8.1更新)

    使用auto.js 4.0(官方免费)或者auto.js pro(官方收费),下载安装好auto后创建项目,直接复制下列代码就可以运行了.文章后面有auto的两个版本安装包!!! //自动缩放分辨率 ...

  2. auto.js开发网课搜题浮窗软件,类似按键精灵可浮窗式快速搜题

    网课搜题浮窗软件实战开发一个浮窗式的安卓搜题软件 准备知识:javascript auto.js一些基础语法 打包工具:auto.js7.401 免费接口可以自己去找!网上一大堆. 学习资料领取及工具 ...

  3. 使用auto.js模拟手动点击芭芭农场任务(芭芭农场自动脚本)

    //自动缩放分辨率 var height = device.height; //获取屏幕高 var width = device.width; //var whichOne = 0; setScree ...

  4. 基于Auto.js的支付宝批量自动转账脚本

    基于Auto.js的支付宝批量自动转账脚本 这是一个能够实现支付宝多账号自动转账脚本,可以自动给多个指定用户自动转账,非商家用户不能申请支付宝的支付Api,另辟蹊径,使用Auto.js模拟手动操作支付 ...

  5. 【Auto.js】给手机编一个模拟遥控器

    目录 一.问题引发 二.初步尝试 KeyCode(code) 三.再次尝试 shell(cmd[, root]) 四.调用 Java 五.附加 一.问题引发 本来想给自家的智能电视做个 APP,但家里 ...

  6. auto.js id为参数滑动_【Autojs教程】02Autojs PC端开发调试环境搭建

    [Autojs教程]02-Autojs PC端开发调试环境搭建 写在前面 本篇教程算是保姆级教程了,希望以此能吸引更多感兴趣的同学学习Autojs,也希望大家能因此碰撞出更多的奇思妙想 关注微信公众号 ...

  7. Auto.JS 教程

    最近淘宝双十一活动来了,有个自动领猫币的脚本,基于auto.js,亲测有效.有兴趣的点这里 声明: 本教程基于b站up主-笔青居的视频.传送门:https://space.bilibili.com/2 ...

  8. dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统

    0.脑筋急转弯 请问在什么情况下 log(10) == 10 log(20) == 20 左滑查看答案                                                c ...

  9. auto.js 实现信息发送、QQ点赞、微信点赞、健康日报签到

    文章目录 auto.js开发文档 安装total control 在手机端安装auto.js apk 安装vscode 短信多条发送 QQ点赞 微信点赞 健康日报填写 叠猫猫 auto.js开发文档 ...

  10. 【autojs】Auto.js Pro系统intent代码

    //此代码由飞云脚本圈整理提供(www.feiyunjs.com) var intent = new Intent(); // vpnIntent.setAction("android.ne ...

最新文章

  1. 【深度学习】Transformer在语义分割上的应用探索
  2. C 判断 —— if...else 语句(bool变量、float变量、指针变量与“零值”进行比较)(else 到底与哪个 if 配对呢? if 语句后面的分号?)
  3. 机器学习的书看不懂怎么办?看看大神怎么回答?
  4. 华为手表用鸿蒙了吗,华为鸿蒙都2.0了,手机还不能用吗?
  5. 用户计算机MAC地址在哪看,怎么查看远程电脑mac地址
  6. C#中的Using的用法
  7. WinXP中鲜为人知的28项隐藏功能
  8. 史上最全最常用批处理260多个打包下载
  9. 【项目总结】如何获取地图上的所有POI
  10. 域名与网页服务器的什么对应,简述网站从域名到网页的访问流程
  11. python查询斐波那契数列通项公式_斐波那契数列求解总结(Python版)
  12. [Usaco2006 Open]County Fair Events 参加节日庆祝
  13. 浅谈几种常见 RAID 的异同
  14. linux中类似append的命令,Linux技巧:介绍 tar 命令打包、压缩、和加解密的用法
  15. “长按地址在浏览器中打开”的解决办法
  16. 百度网站打不开了,只有百度首页跟搜索页打不开其它能正常打开怎么解决?
  17. 决策树模型实现冬小麦提取
  18. IDEA默认KeyMap映射快捷键
  19. 读取文件云服务器bcc,云服务器bcc如何用
  20. 项目(二)Lenovo商城

热门文章

  1. html左侧浮动广告代码,纯js网页浮动广告代码
  2. Ubuntu安装语言包
  3. 小米note 卡在android,小米Note手机SIM卡怎么安装?小米Note安装手机SIM卡教程
  4. Transmission 下载列表、下载文件 迁移机器指南
  5. python获取管理员权限
  6. linux用户配额管理,—linux 磁盘配额按用户管理(quota)
  7. Dollars即时聊天客户端应用源码
  8. 《自己动手写网络爬虫》读书笔记——宽度优先爬虫和带偏好的爬虫
  9. 玩转小米盒子1:选购指南及应用推荐
  10. 【软件分析/静态程序分析学习笔记】1.静态程序分析(Static Program Analysis)介绍