Greasy Fork is available in English.

内科大校园网

自动跳转至校园网认证页面实现自动登录

// ==UserScript==
// @name        内科大校园网
// @namespace   your_namespace_here
// @description 自动跳转至校园网认证页面实现自动登录
// @match       https://gw.imust.edu.cn/srun_portal_pc?ac_id=5&theme=pro
// @license MIT
// @grant       none
// @version     1.0
// ==/UserScript==

(function() {
    'use strict';

    // 用于检测是否出现注销元素的标志,初始化为false
    var isLogoutElementDetected = false;

    // 用于标记是否已经在当天执行过自动操作,初始化为false
    var hasPerformedToday = false;

    // 获取当前日期,用于判断是否是新的一天
    var currentDate = new Date().toDateString();

    // 检查是否是当天首次执行自动操作
    function checkFirstTimeToday() {
        var storedDate = localStorage.getItem('lastPerformedDate');
        if (!storedDate || storedDate!== currentDate) {
            // 如果没有存储过日期或者存储的日期与当前日期不同,说明是新的一天,执行自动操作并更新存储的日期
            localStorage.setItem('lastPerformedDate', currentDate);
            hasPerformedToday = true;
            window.location.href = 'https://gw.imust.edu.cn/srun_portal_pc?ac_id=5&theme=pro';
        }
    }

    // 等待页面加载完成
    window.onload = function() {
        // 先检查是否是当天首次打开浏览器,执行自动跳转(如果需要)
        checkFirstTimeToday();

        // 根据登录按钮的ID查找按钮元素
        var loginButton = document.getElementById('login-account');
        if (loginButton) {
            // 触发点击事件
            loginButton.click();

            // 检查页面上是否出现ID为logout的元素
            var observer = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.type === 'childNodes' && mutation.addedNodes.length > 0) {
                        mutation.addedNodes.forEach(function(node) {
                            if (node.id === 'logout') {
                                isLogoutElementDetected = true;
                                // 检测到注销元素后关闭所在网页
                                if (isLogoutElementDetected) {
                                    window.close();
                                }
                            }
                        });
                    }
                });
            });

            // 观察整个文档的变化
            observer.observe(document, { childNodes: true });
        } else {
            console.log('未找到登录按钮');
        }

        // 另外,当检测到页面存在ID为loginButton的元素时也自动点击登录按钮(这里假设你后续可能会有页面重新加载等情况导致需要再次检测登录按钮)
        var loginButtonOnPage = document.getElementById('loginButton');
        if (loginButtonOnPage) {
            loginButtonOnPage.click();
        }
    };
})();