您需要先安装一个扩展,例如 篡改猴、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(Direct Link)
- // @name:zh-CN 外链自动重定向(默认直链)
- // @namespace http://tampermonkey.net/
- // @version 1.3
- // @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 redirectRegex = /^https?:\/\/.*\?.*https?/;
- const excludedExtensions = ['.m3u8', '.flv', '.ts'];
- function processUrl(redirectURL) {
- // 登录页面,不做处理
- if (redirectURL.includes('login')) {
- return null;
- }
- const matches = redirectURL.match(redirectRegex);
- console.log(`Matches: ${matches}`);
- if (matches) {
- let index = redirectURL.substring(4).indexOf("http")+3;
- let realUrl = decodeURIComponent(redirectURL.substring(index + 1));
- //console.log(`Decoded URL: ${realUrl}`);
- if (isValidUrlAndNotExclude(realUrl)) {
- return realUrl;
- }
- }
- return null;
- }
- function isValidUrlAndNotExclude(string) {
- try {
- const url = new URL(string);
- const pathname = url.pathname;
- for (const ext of excludedExtensions) {
- if (pathname.includes(ext)) {
- return false;
- }
- }
- return true;
- } catch (e) {
- return false;
- }
- }
- document.addEventListener('click', function(e) {
- const element = e.target.closest('a[href]');
- if (element) {
- const processedUrl = processUrl(element.href);
- if (processedUrl) {
- e.preventDefault();
- window.open(processedUrl, '_blank');
- }
- }
- //console.log(`Original URL: ${element.href}`);
- //console.log(`Processed URL: ${processedUrl}`);
- });
- let processedUrl = processUrl(window.location.href);
- if (processedUrl) {
- window.location.replace(processedUrl);
- }
- })();