您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto pass NJU IDP check in some academic websites
当前为
- // ==UserScript==
- // @name NJU-Auto-IDP
- // @namespace Flying-Tom/NJU-Auto-IDP
- // @version 0.0.1
- // @author Flying-Tom
- // @description Auto pass NJU IDP check in some academic websites
- // @license MIT
- // @icon https://z1.ax1x.com/2023/11/21/pia2Gtg.png
- // @match https://ieeexplore.ieee.org/*document/*
- // @match https://dl.acm.org/doi/*
- // @match https://www.sciencedirect.com/*
- // @grant GM_info
- // ==/UserScript==
- (function () {
- 'use strict';
- var _GM_info = /* @__PURE__ */ (() => typeof GM_info != "undefined" ? GM_info : void 0)();
- function promiseTimeout(promise, delay) {
- const timeout = new Promise(function(_reslove, reject) {
- setTimeout(() => {
- reject(new Error("Promise timeout"));
- }, delay);
- });
- return Promise.race([timeout, promise]);
- }
- function waitForElm(selector) {
- return new Promise((resolve) => {
- if (document.querySelector(selector)) {
- return resolve(document.querySelector(selector));
- }
- const observer = new MutationObserver(() => {
- if (document.querySelector(selector)) {
- resolve(document.querySelector(selector));
- observer.disconnect();
- }
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- });
- }
- function acm_handler() {
- promiseTimeout(waitForElm(".institution__name"), 200).then(function(data) {
- console.log(data);
- console.log("already login");
- }, function(err) {
- console.log("need to login");
- console.error(err);
- const match = window.location.href.match(/\/doi\/abs\/[a-zA-Z0-9./]+/);
- const redirectUri = match ? match[0] : "";
- const params = new URLSearchParams({
- idp: "https://idp.nju.edu.cn/idp/shibboleth",
- redirectUri,
- federationId: "urn:mace:shibboleth:carsifed"
- });
- window.location.href = "https://dl.acm.org/action/ssostart?" + params.toString();
- });
- }
- function ieee_handler() {
- promiseTimeout(waitForElm(".inst-name"), 200).then(function(data) {
- console.log(data);
- console.log("already login");
- }, function(err) {
- console.log("need to login");
- console.error(err);
- const params = new URLSearchParams({
- entityId: "https://idp.nju.edu.cn/idp/shibboleth",
- url: window.location.href
- });
- window.location.href = "https://ieeexplore.ieee.org/servlet/wayf.jsp?" + params.toString();
- });
- }
- function academic_handler() {
- if (window.location.href.includes("ieee.org/abstract/document")) {
- ieee_handler();
- } else if (window.location.href.includes("acm.org")) {
- acm_handler();
- } else if (window.location.href.includes("sciencedirect")) {
- return;
- }
- }
- (function() {
- (function() {
- const match_idx = _GM_info.script.matches.map((rule) => rule.replace(/\.|\*|\/|\?/g, (match) => ({ ".": "\\.", "*": ".*", "/": "\\/", "?": "\\?" })[match] || "")).map((rule) => new RegExp(rule)).map((regExp, index) => regExp.test(window.location.href) ? index : null).filter((index) => index != null).join().toString();
- const strategy_load = {
- "0": academic_handler,
- // ieee 自动登录
- "1": academic_handler,
- // acm 自动登录
- "2": academic_handler
- // sciencedirect 自动登录
- };
- const strategy_instant = {};
- if (match_idx in strategy_instant) {
- const strategy_instant_func = strategy_instant[match_idx];
- strategy_instant_func();
- } else if (match_idx in strategy_load) {
- const strategy_load_func = strategy_load[match_idx];
- if (document.readyState == "complete") {
- strategy_load_func();
- } else {
- window.addEventListener("load", strategy_load_func);
- }
- }
- })();
- })();
- })();