JS 스 크 립 트 는 정시 에 사이트 에 출석/서명 기능 을 실현 합 니 다.

이전에 temperMonkey 를 사용 하여 CSDN 광 고 를 차단 하 는 방법 을 소개 한 적 이 있 는데 주로 사이트 구 조 를 목적 성 있 게 분석 한 다음 에 코드 로 DOM 을 바 꾸 거나 조작 하 는 것 이다.오늘 도 마찬가지 로 우 리 는 웹 페이지 구 조 를 관찰 하고 우리 가 조작 할 단 추 를 찾 아 그의click사건 을 촉발 시 키 면 된다.다음은 회사 에서 카드 를 찍 고 출석 한 사 이 트 를 예 로 들 어 나 쁜 짓 을 한다.본 논문 의 독 자 는 일정한 HTML 과 자 바스 크 립 트 기 초 를 가지 고 있 는 것 이 가장 좋다.
우선 출석 체크 를 하려 면 무엇 을 해 야 할 지 상상 해 보 세 요.
  • 사이트 열기
  • 로그 인
  • '출석 체크'버튼 클릭
  • 그리고 모든 단계 에서 우 리 는 코드 가 우 리 를 도와 하도록 할 수 있다.
    0.어떻게 시간 을 정 합 니까?
    이 코드 는 핵심 입 니 다.현재 시간 과 설 정 된 시간 에 따라 차 이 를 만들어 타이머 의 값 을 확인 하 는 것 입 니 다.
    이 코드 를 알 아 보면 뒤의 것 이 모두 쉽다.타이머 로 콜 백 을 터치 하고 있 습 니 다.
    
    // user setting
    const SIGN_IN_TIME = "09:30:00"; //     
    const SIGN_OUT_TIME = "20: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(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.정시 에 자동 으로 사이트 열기
    대부분의 사이트 에는'장시간 작 동 하지 않 음-자동 종료'라 는 설정 이 있 기 때문이다.그래서 우 리 는 카드 를 찍 어야 할 때 사 이 트 를 다시 열 어야 한다.
    컴퓨터 로 컬 에서 프로그램 을 실행 하고 타 이 머 를 사용 합 니 다.여기 서 노드 프로그램 을 실행 합 니 다:
    
    const open = require('open');
    logTime("Start Runing");
    
    // user setting
    const SIGN_IN_TIME = "09:30:00";
    const SIGN_OUT_TIME = "20:20:00";
    
    // code implementation
    const 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 out
    if (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 정시 에 출석 하고 서명 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기