Greasy Fork 支持简体中文。

Escape From WebVPN

避免WebVPN劫持CC98站外链接

目前為 2022-03-01 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Escape From WebVPN
// @version      0.0.2
// @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.includes('cc98.org'))) {
        e.preventDefault();
        window.open().location = decodeWebVPNURL(this.href);
        return false;
    }
})