您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically gain access for resources subscripted by your organisation via ezproxy.
// ==UserScript== // @name Auto ezproxy redirection // @namespace org.jixun // @version 0.1 // @description Automatically gain access for resources subscripted by your organisation via ezproxy. // @author Jixun // @include * // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @run-at document-start // ==/UserScript== (function() { 'use strict'; // In case of emergency: // debugger; // Default configs. // e.g. eebo.chadwyck.com, dl.acm.org var redirHosts = []; var yourDomain = GM_getValue('proxy.host', ''); reloadHosts(); // Register command if (redirHosts.indexOf(location.hostname) == -1) { if (location.hostname.indexOf('.exproxy.') == -1) { GM_registerMenuCommand('[ezproxy] Add ' + location.hostname + ' to ezproxy list.', addCurrentHost, 'z'); } GM_registerMenuCommand('[ezproxy] Change domain', changeDomain, 'd'); } else if (yourDomain) { // Redirect doRedirect(); } else { GM_registerMenuCommand('[ezproxy] Setup domain', changeDomain, 'd'); } GM_registerMenuCommand('[ezproxy] Reset Everything', resetScript, 'r'); function reloadHosts () { try { redirHosts = JSON.parse(GM_getValue('site.hosts', '[]')); } catch (e) { GM_setValue('site.hosts', '[]'); alert('Host list corrupted, reset to default empty list.'); redirHosts = []; } } function addCurrentHost () { if (!yourDomain) { if (!changeDomain()) return ; } reloadHosts(); if (redirHosts.indexOf(location.hostname) == -1) { redirHosts.push(location.hostname); GM_setValue('site.hosts', JSON.stringify(redirHosts)); } doRedirect(); } function doRedirect () { location.hostname += '.ezproxy.' + yourDomain; } function changeDomain () { yourDomain = prompt('Please enter your new ezproxy domain, format as example shown below:', yourDomain || 'university.ac.uk'); GM_setValue('proxy.host', yourDomain); return !!yourDomain; } function resetScript () { GM_setValue('site.hosts', '[]'); GM_setValue('proxy.host', ''); } })();