避免WebVPN劫持CC98站外链接
目前為
// ==UserScript==
// @name Escape From WebVPN
// @version 0.0.1
// @description 避免WebVPN劫持CC98站外链接
// @icon https://www.cc98.org/static/98icon.ico
// @author ml98
// @namespace http://tampermonkey.net/
// @license MIT
// @match http://www-cc98-org-s.webvpn.zju.edu.cn:8001/*
// @run-at document-idle
// @grant none
// ==/UserScript==
/* eslint-env jquery */
function decodeWebVPNURL(url) {
try {
var urlObj = new URL(url);
} catch(e) {
return '';
}
let host = urlObj.host;
let suffix = '.webvpn.zju.edu.cn:8001';
if (host.endsWith(suffix)) {
host = host.slice(0, host.length - suffix.length);
} else {
return url;
}
if (host.endsWith('-s')) {
urlObj.protocol = 'https:';
host = host.slice(0, host.length - 2);
}
if (host.endsWith('-p')) {
host = host.slice(0, host.length - 2);
urlObj.port = host.slice(host.lastIndexOf('-') + 1);
host = host.slice(0, host.lastIndexOf('-'));
} else {
urlObj.port = '';
}
urlObj.host = host.replaceAll('-', '.').replaceAll('..', '-');
return urlObj + '';
}
$(document).on('click', 'a', function(e) {
if(this.href && new URL(this.href).host !== 'www.cc98.org') {
e.preventDefault();
window.open().location = decodeWebVPNURL(this.href);
return false;
}
})