您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
redirect to the real URL directly when clicking on a link that contains a redirect URL
当前为
// ==UserScript== // @name External Link Auto Redirect // @name:zh-CN 外链自动重定向 // @namespace http://tampermonkey.net/ // @version 1.3.5 // @description redirect to the real URL directly when clicking on a link that contains a redirect URL // @description:zh-CN 点击包含重定向 URL 的链接时,直接跳转到到真实的 URL // @author uiliugang // @run-at document-start // @match *://*/* // @license MIT // ==/UserScript== (function () { 'use strict'; const httpPattern = /http/g; const firstHttpExcludeWords = ['portal','proxy','player','vpn','search','api','convert','sorry', 'qrcode', 'account', 'login', 'sign', 'auth', 'logout', 'register', 'upload', 'share', 'live', 'watch']; const secondHttpExcludeWords = ['.m3u8', '.flv', '.ts'] function parseUrl(redirectURL) { let index = findSecondHttpPosition(redirectURL); if (index !== -1) { let realUrl = redirectURL.substring(index); let firstHttp = redirectURL.substring(0, index).toLowerCase(); let secondHttp = realUrl.toLowerCase(); for (const ext of firstHttpExcludeWords) { if (firstHttp.includes(ext)) { console.log(`firstHttpExcludeWord: ${ext}`); return null; } } for (const ext of secondHttpExcludeWords) { if (secondHttp.includes(ext)) { console.log(`secondHttpExcludeWord: ${ext}`); return null; } } realUrl = decodeURIComponent(realUrl); if (isValidUrl(realUrl)) { return realUrl; } } return null; } function findSecondHttpPosition(redirectURL) { let match; let position = -1; let count = 0; while ((match = httpPattern.exec(redirectURL)) !== null) { count++; if (count === 2) { position = match.index; console.log(`Redirect URL: ${redirectURL}`); return position; } } return -1; } function isValidUrl(realUrl) { try { const url = new URL(realUrl); return true; } catch (e) { return false; } } document.addEventListener('click', function (e) { const element = e.target.closest('a[href]'); if (element) { const parsedUrl = parseUrl(element.href); if (parsedUrl) { e.preventDefault(); window.open(parsedUrl, '_blank'); } } }); let parsedUrl = parseUrl(window.location.href); if (parsedUrl) { window.location.replace(parsedUrl); } console.log(`parsed URL: ${parsedUrl}`); })();