您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Прямые ссылки на сайтах с движком DataLife Engine (DLE)
当前为
// ==UserScript== // @name DLE links decoder // @namespace lainscripts_dle_links_decoder // @version 1.0 // @description Прямые ссылки на сайтах с движком DataLife Engine (DLE) // @author lainverse // @match *://*/* // @grant none // ==/UserScript== // Script based on a similar script by raletag: // https://greasyfork.org/en/scripts/22290-Прямые-ссылки-в-dle (function() { 'use strict'; var impCodes = '%3B%2C%2F%3F%3A%40%26%3D%2B%24%23', impRegex = new RegExp((impCodes.replace(/%/g,'|%').replace('|','')), 'gi'), impDecoded = decodeURIComponent(impCodes), impReplacer = function(ch) { return impDecoded[impCodes.indexOf(ch.toUpperCase())/3]; }; function decodeImportant(text) { return text.replace(impRegex, impReplacer); } function linkHandler(e){ var link = e.target, url = link.href, url64; // Detach event from a link since we don't need to parse it more than once link.removeEventListener('mouseenter', linkHandler, false); // Check if it's one of the DLE-redirected links and exit if not url64 = (url.match(/([?&]url=|\/leech_out\.php\?.:)([^&]+)(&|$)/i)||[])[2]; if (!url64) { return true; } // Try to decode base64 encoded link, if fails then take it as-is try { url64 = decodeURIComponent(url64); url = window.atob(url64); } catch(ignore) { url = url64; } // Decode important %-encoded parts of a link (browser should handle the rest) url = decodeImportant(url); // Replace target with decoded link and make it open in a new tab by default console.log('Replaced ' + link.href + ' with ' + url); link.href = url; link.target = '_blank'; return true; } // Get a list of all link in a given object and attach mouseover event to it function attachEventToLinks(root) { var links = root.querySelectorAll('a[href]'), i = links.length; while(i--) { links[i].addEventListener('mouseenter', linkHandler, false); } } // Parse all existing links attachEventToLinks(document.body); // Monitor changes to the document structure and attach events to all new links var o = new MutationObserver(function(ms){ ms.forEach(function(m){ m.addedNodes.forEach(function(n){ if (n.href) { n.addEventListener('mouseenter', linkHandler, false); return; } attachEventToLinks(n); }); }); }); o.observe(document.body, {childList: true}); })();