JS脚本实现定时到网站上签到/签退功能的方法

  介绍

这篇文章主要讲解了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。定时自动打开网站

因为大多数网站都有,“长时间未操作,自动退出”的设置,所以我们要在需要打卡的时候再打开网站。
在电脑本地跑一个程序,使用定时器。这里跑一个节点程序:

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脚本实现定时到网站上签到/签退功能的方法