电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JS腳本實現定時到網站上簽到/簽退功能

瀏覽:116日期:2024-05-12 10:01:50

之前介紹過使用temperMonkey屏蔽CSDN廣告的方法,主要就是要針對性地分析網站結構,然后用代碼去改變或者操作DOM。今天也一樣,我們需要觀察網頁結構,找到我們要操作的按鈕,觸發他的click事件就可以了。下面以公司打卡簽到的網站為例,做一些壞壞的事情。本文讀者最好有一定的HTML和JavaScript基礎。

首先,想象一下你去簽到需要做什么:

打開網站 登陸 點擊“簽到”按鈕

然后每一步我們都可以讓代碼幫我們去做。

0. 如何定時

這段代碼是核心,就是根據當前時間和設定的時間做差值,來確定定時器的值看懂這段代碼,后面的就都容易了。都是在利用定時器觸發callback。

// user settingconst SIGN_IN_TIME = '09:30:00'; // 簽到時間const SIGN_OUT_TIME = '20:00:00'; // 簽退時間// code implementationlogTime('code start running');const now = new Date();const today = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate();var signInTime = +new Date(`${today} ${SIGN_IN_TIME}`);logTime('signInTime', new Date(signInTime));var signOutTime = +new Date(`${today} ${SIGN_OUT_TIME}`);logTime('signOutTime', new Date(signOutTime));// diff in or outif (now > signInTime && now < signOutTime) { // ready to sign out for today console.log('Seconds to sign out for today: ' + (signOutTime - now) / 1000); setTimeout(callback, signOutTime - now);} else { // ready to sign in for tomorrow signInTime = +signInTime + 60 * 60 * 24 * 1000; console.log('Seconds to sign in for tomorrow: ' + (signInTime - now) / 1000); setTimeout(callback, signInTime - now);}function logTime(str, time = new Date()) { console.log(`${str} -> ${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`);}

1. 定時自動打開網站

因為大多數網站都有,“長時間未操作-自動退出”的設置。所以我們要在需要打卡的時候再打開網站。在電腦本地跑一個程序,使用定時器。這里跑一個node程序:

const open = require(’open’);logTime('Start Runing');// user settingconst SIGN_IN_TIME = '09:30:00';const SIGN_OUT_TIME = '20:20:00';// code implementationconst openBrowser = async () => { await open(’http://172.10.80.42’);};logTime('code start running');const now = new Date();const today = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate();var signInTime = +new Date(`${today} ${SIGN_IN_TIME}`);logTime('signInTime', new Date(signInTime));var signOutTime = +new Date(`${today} ${SIGN_OUT_TIME}`);logTime('signOutTime', new Date(signOutTime));// diff in or outif (now > signInTime && now < signOutTime) { // ready to sign out for today console.log('Seconds to sign out for today: ' + (signOutTime - now) / 1000); setTimeout(openBrowser, signOutTime - now);} else { // ready to sign in for tomorrow signInTime = +signInTime + 60 * 60 * 24 * 1000; console.log('Seconds to sign in for tomorrow: ' + (signInTime - now) / 1000); setTimeout(openBrowser, signInTime - now);}function logTime(str, time = new Date()) { console.log(`${str} -> ${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`);}

2. 自動登錄

這個重點還是在于找到需要填入內容的DOM元素

(function() { ’use strict’; // login document.querySelector('#loginid').value = '用戶名'; document.querySelector('#userpassword').value = '密碼'; document.querySelector('#login').click();})();

3. 定時點擊按鈕

這一步最重要的是要準確找到按鈕,檢查元素慢慢查找吧。其次,設定好簽到和簽退的時間,只有固定時間才會自動簽到,防止每次登陸進來自動簽到或簽退,這樣太頻繁被發現。

(function() { ’use strict’; // user setting const SIGN_IN_TIME = '09:00:00'; const SIGN_OUT_TIME = '21:00:00'; // code implementation logTime('code start running'); const now = new Date(); const today = now.getFullYear()+'-'+(now.getMonth()+1)+'-'+now.getDate(); var signInTime = +new Date(`${today} ${SIGN_IN_TIME}`); logTime('signInTime', new Date(signInTime)); var signOutTime = +new Date(`${today} ${SIGN_OUT_TIME}`); logTime('signOutTime', new Date(signOutTime)); // diff in or out if(now > signInTime && now < signOutTime) { // ready to sign out for today console.log('Seconds to sign out for today: ' + (signOutTime - now)/1000); setTimeout(signInorSignOut, signOutTime - now); } else { // ready to sign in for tomorrow signInTime = +signInTime + 60 * 60 * 24 * 1000; console.log('Seconds to sign in for tomorrow: ' + (signInTime - now)/1000); setTimeout(signInorSignOut, signInTime - now); } // signInorSignOut function signInorSignOut(){ logTime(`signInButton clicked!`); // 重點就在這兒了,找到網站的簽到按鈕#signInButton,并觸發他的點擊事件 document.querySelector('#signInButton').click(); } function logTime(str, time=new Date()){ console.log(`${str} -> ${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`); }})();

4. 結束

一套操作,打完收工。每天下班的時候,不管是提前溜還是晚點到。記得本地開一下程序:

node timer.js

到此這篇關于JS腳本實現定時到網站上簽到/簽退功能的文章就介紹到這了,更多相關js 定時簽到簽退內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 中国品牌排名投票_十大品牌榜单_中国著名品牌【中国品牌榜】 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 江西自考网 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 亿诺千企网-企业核心产品贸易| 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 中矗模型-深圳中矗模型设计有限公司 | 智能气瓶柜(大型气瓶储存柜)百科| 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 证券新闻,热播美式保罗1984第二部_腾讯1080p-仁爱影院 |