您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Immediately redirect to the target URL on class.forasm.com links
// ==UserScript== // @name Bypass class.forasm.com redirect // @namespace http://tampermonkey.net/ // @version 1.1 // @description Immediately redirect to the target URL on class.forasm.com links // @author wisp // @license MIT // @runat document-start // @match *://class.forasm.com/* // @grant none // ==/UserScript== (function () { 'use strict'; /** * Extract the encrypted parameter `o` from the URL hash. * @returns {string|null} The encrypted `o` value or null if not found. */ function getEncryptedParam() { const hash = window.location.hash; const match = hash.match(/[?&]o=([^&]+)/); return match ? decodeURIComponent(match[1]) : null; } /** * Decrypt the encrypted parameter using the page's decryption logic. * @param {string} encrypted - The encrypted `o` parameter. * @param {string} key - The decryption key. * @returns {string|null} The decrypted URL or null if decryption fails. */ function decryptUrl(encrypted, key) { try { return window.aesCrypto.decrypt(encrypted, key); } catch (error) { console.error('Error during decryption:', error); return null; } } /** * Extract and immediately redirect to the decrypted URL. */ function extractAndRedirect() { const encryptedParam = getEncryptedParam(); if (!encryptedParam) { console.error('Encrypted parameter "o" not found in the URL hash.'); return; } console.log('Encrypted parameter found:', encryptedParam); // Use the hardcoded decryption key "root" const finalUrl = decryptUrl(encryptedParam, 'root'); if (finalUrl) { console.log('Redirecting to final URL:', finalUrl); window.location.href = finalUrl; // Immediately redirect } else { console.error('Failed to decrypt the final URL.'); } } // Execute immediately after script injection if (window.aesCrypto && typeof window.aesCrypto.decrypt === 'function') { extractAndRedirect(); } else { console.error('aesCrypto.decrypt not available.'); } })();