인천대학교 LMS 로그인 스크립트

인천대학교 LMS에 자동으로 로그인

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         인천대학교 LMS 로그인 스크립트
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  인천대학교 LMS에 자동으로 로그인
// @match        https://cyber.inu.ac.kr/login.php*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 쿠키를 설정하는 함수
    function setCookie(name, value, days) {
        var expires = "";
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie = name + "=" + (value || "") + expires + "; path=/";
    }

    // 쿠키를 가져오는 함수
    function getCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    // URL에서 오류 코드 가져오기
    function getUrlParameter(name) {
        name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
        var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
        var results = regex.exec(location.search);
        return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
    }

    // 로그인 정보 쿠키에서 가져오기
    var username = getCookie('autoLoginUsername');
    var password = getCookie('autoLoginPassword');

    // URL에서 오류 코드 확인
    var errorCode = getUrlParameter('errorcode');

    // 입력 필드가 준비될 때까지 대기
    function waitForElement(selector, callback) {
        var element = document.querySelector(selector);
        if (element) {
            callback(element);
        } else {
            setTimeout(function() {
                waitForElement(selector, callback);
            }, 100);
        }
    }

    // 오류 코드가 존재하거나 쿠키가 없으면 로그인 정보 재발급
    if (errorCode || !username || !password) {
        alert("로그인 오류가 발생했거나 로그인 정보가 없습니다. 새로운 로그인 정보를 입력하세요.");
        username = prompt("아이디를 입력하세요:", "");
        password = prompt("비밀번호를 입력하세요:", "");

        // 입력받은 정보를 쿠키에 저장
        setCookie('autoLoginUsername', username, 7); // 7일 동안 유효
        setCookie('autoLoginPassword', password, 7); // 7일 동안 유효
    }

    // 페이지 로드 후 실행될 함수
    function login() {
        waitForElement('#input-username', function(usernameInput) {
            waitForElement('#input-password', function(passwordInput) {
                waitForElement('input[name="loginbutton"]', function(loginButton) {
                    console.log("usernameInput:", usernameInput);
                    console.log("passwordInput:", passwordInput);
                    console.log("loginButton:", loginButton);

                    // input-username과 input-password 요소가 존재하는지 확인
                    if (usernameInput && passwordInput) {
                        // 로그인 정보 입력
                        usernameInput.value = username;
                        passwordInput.value = password;

                        // 로그인 버튼 클릭
                        if (loginButton) {
                            loginButton.click();
                        } else {
                        }
                    } else {
                    }
                });
            });
        });
    }

    // 페이지 로드 후 실행
    window.addEventListener('load', function() {
        login();
    });

})();