JS脚本实现定时到网站上签到/签退功能
之前介绍过使用temperMonkey屏蔽CSDN广告的方法,主要就是要针对性地分析网站结构,然后用代码去改变或者操作DOM。今天也一样,我们需要观察网页结构,找到我们要操作的按钮,触发他的click事件就可以了。下面以公司打卡签到的网站为例,做一些坏坏的事情。本文读者最好有一定的HTML和JavaScript基础。
首先,想象一下你去签到需要做什么:
- 打开网站
- 登陆
- 点击“签到”按钮
然后每一步我们都可以让代码帮我们去做。
0.如何定时
这段代码是核心,就是根据当前时间和设定的时间做差值,来确定定时器的值
看懂这段代码,后面的就都容易了。都是在利用定时器触发callback。
//usersetting
constSIGN_IN_TIME="09:30:00";//签到时间
constSIGN_OUT_TIME="20:00:00";//签退时间
//codeimplementation
logTime("codestartrunning");
constnow=newDate();
consttoday=now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate();
varsignInTime=+newDate(`${today}${SIGN_IN_TIME}`);
logTime("signInTime",newDate(signInTime));
varsignOutTime=+newDate(`${today}${SIGN_OUT_TIME}`);
logTime("signOutTime",newDate(signOutTime));
//diffinorout
if(now>signInTime&&now${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`);
}
1.定时自动打开网站
因为大多数网站都有,“长时间未操作-自动退出”的设置。所以我们要在需要打卡的时候再打开网站。
在电脑本地跑一个程序,使用定时器。这里跑一个node程序:
constopen=require('open');
logTime("StartRuning");
//usersetting
constSIGN_IN_TIME="09:30:00";
constSIGN_OUT_TIME="20:20:00";
//codeimplementation
constopenBrowser=async()=>{
awaitopen('http://172.10.80.42');
};
logTime("codestartrunning");
constnow=newDate();
consttoday=now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate();
varsignInTime=+newDate(`${today}${SIGN_IN_TIME}`);
logTime("signInTime",newDate(signInTime));
varsignOutTime=+newDate(`${today}${SIGN_OUT_TIME}`);
logTime("signOutTime",newDate(signOutTime));
//diffinorout
if(now>signInTime&&now${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`);
}
2.自动登录
这个重点还是在于找到需要填入内容的DOM元素
(function(){
'usestrict';
//login
document.querySelector("#loginid").value="用户名";
document.querySelector("#userpassword").value="密码";
document.querySelector("#login").click();
})();
3.定时点击按钮
这一步最重要的是要准确找到按钮,检查元素慢慢查找吧。
其次,设定好签到和签退的时间,只有固定时间才会自动签到,防止每次登陆进来自动签到或签退,这样太频繁被发现。
(function(){
'usestrict';
//usersetting
constSIGN_IN_TIME="09:00:00";
constSIGN_OUT_TIME="21:00:00";
//codeimplementation
logTime("codestartrunning");
constnow=newDate();
consttoday=now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate();
varsignInTime=+newDate(`${today}${SIGN_IN_TIME}`);
logTime("signInTime",newDate(signInTime));
varsignOutTime=+newDate(`${today}${SIGN_OUT_TIME}`);
logTime("signOutTime",newDate(signOutTime));
//diffinorout
if(now>signInTime&&now${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`);
}
})();
4.结束
一套操作,打完收工。每天下班的时候,不管是提前溜还是晚点到。记得本地开一下程序:
nodetimer.js
到此这篇关于JS脚本实现定时到网站上签到/签退功能的文章就介绍到这了,更多相关js定时签到签退内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!