您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Прямые ссылки на сайтах с движком DataLife Engine (DLE)
当前为
- // ==UserScript==
- // @name DLE links decoder
- // @namespace lainscripts_dle_links_decoder
- // @version 1.2
- // @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.nodeType !== Node.ELEMENT_NODE) {
- return; // parse only document elements and skip the rest
- }
- if (n.href) {
- n.addEventListener('mouseenter', linkHandler, false);
- return; // if node is a link attach event and exit since we
- // don't want to parse link's content (links within links?!)
- }
- attachEventToLinks(n);
- });
- });
- });
- o.observe(document.body, {childList: true, subtree: true});
- })();