文章目录
- 前言
- 思路
- 完整代码
- 后言
前言
首先呢,咪咕的这个获取是在手机上打卡的,平时看书都喜欢在kindle上面看,毕竟现在眼睛没以前好了,就想着用auto.js写个自动翻页的,每次打开就直接放那里就行了
思路
思路很简单,直接用定时器使用click模拟点击右下角就可以了
setInterval(() => {
if (flag) {
click(800, 1500);
}
}, 10000);
但是这样呢好没技术含量,优化一下,加个随机数,随机随时点击屏幕右下角,这样就能更好的模拟点击了,就算咪咕后面直接检测是否机器,随机随时的自动点击,他也检测不出来了
//拿一下屏幕宽度和高度,定位一下右下角区域
let clickX = device.width - 200;
let clickY = device.height - 200;
setInterval(() => {
if (flag) {
;
let random = Math.floor(Math.random() * 100);
sleep(random*20);
click(clickX - random, clickY - random);
}
}, 10000);
由于咪咕打卡有个时间限制,就是15分钟就可以了,所以再加个时间显示,再加个微信推送,那样上班时候,电脑微信收到通知,就知道手机打完卡,再去点一下签到,一天就搞完了,微信推送用的是server酱
setInterval(() => {
if (flag) {
let endStamp = (new Date()).getTime();
costStamp = endStamp - staStamp + costStamp;
staStamp = endStamp;
let costTime = parseInt(costStamp / 1000 / 60) + "分" + (parseInt(costStamp / 1000) % 60) + "秒";
//对控件的操作需要在UI线程中执行
ui.run(function() {
window.msy_time.setText("执行时长:" + costTime);
});
if (costStamp > 16 * 60 * 1000 && !tuisongFlag) {
tuisongFlag = true;
Tools.ServerMessage.sendMessage("咪咕阅读时长已达标", "");
};
}
}, 500);
还有些其他的小功能,例如说有开始执行,暂停执行,中止执行的按钮那些,就不累赘了,自己看完整代码吧
完整代码
//const Tools = require("./comm/utils/Tools.js");
log("声明:");
log("1、版权归MoyAiTing所有,未经允许,请勿传播使用。");
log("2、此软件仅做技术分享演示使用,请勿用作其他用途。");
log("说明:");
log("1、获取文件权限可以拒绝,auto.js打包的,会自动获取");
log("2、需要获取无障碍和浮窗权限,软件会自动打开,同意即可,同意后,没有显示浮窗,重启软件即可");
log("3、重启可以解决大部分问题");
log("4、点击开始执行,在屏幕右下角部分,每隔10s到12s左右,随机点击屏幕区域");
auto();
//设置辅助显示内容
var window = floaty.window(
<vertical>
<text id="msy_begin" padding="10" margin="5" bg="#00B400" alpha="0.8" text="开始运行" textSize="16sp" textStyle="bold" textColor="#FFFFFF" />
<text id="msy_suspend" padding="10" margin="5" bg="#00B400" alpha="0.8" text="暂停运行" textSize="16sp" textStyle="bold" textColor="#FFFFFF" />
<text id="msy_over" padding="10" margin="5" bg="#00B400" alpha="0.8" text="终止运行" textSize="16sp" textStyle="bold" textColor="#FFFFFF" />
<text id="msy_time" padding="10" margin="5" bg="#00B400" alpha="0.8" text="执行时长:0分0秒" textSize="16sp" textStyle="bold" textColor="#FFFFFF" />
</vertical>
)
let flag = false;
let staStamp = (new Date()).getTime();
let costStamp = 0;
let tuisongFlag = false;
//拿一下屏幕宽度和高度,定位一下右下角区域
let clickX = device.width - 200;
let clickY = device.height - 200;
window.msy_begin.click(() => {
toast('脚本开始执行啦');
staStamp = (new Date()).getTime();
flag = true;
})
window.msy_suspend.click(() => {
toast('脚本暂停执行啦');
flag = false;
})
window.msy_over.click(() => {
toast('脚本终止执行啦');
window.close();
exit();
})
setInterval(() => {
if (flag) {
let endStamp = (new Date()).getTime();
costStamp = endStamp - staStamp + costStamp;
staStamp = endStamp;
let costTime = parseInt(costStamp / 1000 / 60) + "分" + (parseInt(costStamp / 1000) % 60) + "秒";
//对控件的操作需要在UI线程中执行
ui.run(function() {
window.msy_time.setText("执行时长:" + costTime);
});
if (costStamp > 16 * 60 * 1000 && !tuisongFlag) {
tuisongFlag = true;
//Tools.ServerMessage.sendMessage("咪咕阅读时长已达标", "");
};
}
}, 500);
setInterval(() => {
if (flag) {
//toast(device.getAndroidId());
let random = Math.floor(Math.random() * 100);
sleep(random*20);
click(clickX - random, clickY - random);
//sleep(500);
//swipe(180, 1790, 900, 1790, 150);
}
}, 10000);
后言
- 开发用的是auto.js可以自己下载,然后把源码导进去就可以了
- 我还有一个支付宝自动偷能量的,那个比较复杂一点,而且涉及多个模块,然后auto.js的打包有点bug,竟然不支持多个js打包,所以打不成apk,这个后续有时间再写一篇吧,还有一个年会抢红包的
- auto,js还是挺好玩的,有点js基础的,都可以很快上手,建议玩一下