介绍
这篇文章主要讲解了JS脚本实现定时到网站上签到/签退功能的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
之前介绍过使用temperMonkey屏蔽CSDN广告的方法,主要就是要针对性地分析网站结构,然后用代码去改变或者操作DOM。今天也一样,我们需要观察网页结构,找到我们要操作的按钮,触发他的<代码>点击代码>事件就可以了。下面以公司打卡签到的网站为例,做一些坏坏的事情。本文读者最好有一定的HTML和JavaScript基础。
引用>首先,想象一下你去签到需要做什么:
<李>打开网站李> <>李登陆李> <李>点击签”到“按钮李>
然后每一步我们都可以让代码帮我们去做。
0。如何定时
这段代码是核心,就是根据当前时间和设定的时间做差值,来确定定时器的值
引用>
看懂这段代码,后面的就都容易了。都是在利用定时器触发回调。//用户设置 const SIGN_IN_TIME=?9:30:00";//签到时间 const SIGN_OUT_TIME=?0:00:00";//签退时间//代码实现 logTime(“代码开始running"); const现在=新的日期(); 今天const=now.getFullYear() +“产生绯闻;+ (now.getMonth() + 1) +“产生绯闻;+ now.getDate (); var signInTime=+新日期(“${今天}$ {SIGN_IN_TIME}”); logTime (“signInTime"新的日期(signInTime)); var signOutTime=+新日期(“${今天}$ {SIGN_OUT_TIME}”); logTime (“signOutTime"新的日期(signOutTime));//diff 如果现在比;signInTime,,现在& lt;signOutTime) {//准备签署今天 console.log(“秒今天签署了:“+ (signOutTime -现在)/1000); setTimeout(回调,signOutTime -现在); 其他}{//为明天准备好签到 signInTime=+ signInTime + 60 * 60 * 24 * 1000; console.log(“秒为明天签到:“+ (signInTime -现在)/1000); setTimeout(回调,signInTime -现在); } 函数logTime (str,时间=new日期()){ 控制台。日志(“$ {str}→$ {time.getHours ()}: $ {time.getMinutes ()}: $ {time.getSeconds ()}”); }1。定时自动打开网站
因为大多数网站都有,“长时间未操作,自动退出”的设置,所以我们要在需要打卡的时候再打开网站。
引用>
在电脑本地跑一个程序,使用定时器。这里跑一个节点程序:2。自动登录
这个重点还是在于找到需要填入内容的DOM元素
引用>(函数(){ & # 39;使用严格# 39;;//登录 document.querySelector (“# loginid")。值=https://www.yisu.com/zixun/庇没? document.querySelector (“# userpassword”)。值="密码”; document.querySelector(“#登录”).click (); })();3。定时点击按钮
这一步最重要的是要准确找到按钮,检查元素慢慢查找吧。
引用>
其次,设定好签到和签退的时间,只有固定时间才会自动签到,防止每次登陆进来自动签到或签退,这样太频繁被发现。(函数(){ & # 39;使用严格# 39;;//用户设置 const SIGN_IN_TIME=?9:00:00"; const SIGN_OUT_TIME=?1:00:00";//代码实现 logTime(“代码开始running"); const现在=新的日期(); 今天const=now.getFullYear() +“产生绯闻;+ (now.getMonth() + 1) +“产生绯闻;+ now.getDate (); var signInTime=+新日期(“${今天}$ {SIGN_IN_TIME}”); logTime (“signInTime"新的日期(signInTime)); var signOutTime=+新日期(“${今天}$ {SIGN_OUT_TIME}”); logTime (“signOutTime"新的日期(signOutTime));//diff 如果现在比;signInTime,,现在& lt;signOutTime) {//准备签署今天 console.log(“秒今天签署了:“+ (signOutTime -现在)/1000); setTimeout (signInorSignOut signOutTime -现在); 其他}{//为明天准备好签到 signInTime=+ signInTime + 60 * 60 * 24 * 1000; console.log(“秒为明天签到:“+ (signInTime -现在)/1000); setTimeout (signInorSignOut signInTime -现在); }//signInorSignOut 函数signInorSignOut () { logTime (“signInButton点击!”);//重点就在这儿了,找到网站的签到按钮# signInButton,并触发他的点击事件 document.querySelector (“# signInButton") .click (); } 函数logTime (str,时间=new日期()){ 控制台。日志(“$ {str}→$ {time.getHours ()}: $ {time.getMinutes ()}: $ {time.getSeconds ()}”); } })();JS脚本实现定时到网站上签到/签退功能的方法