Greasy Fork is available in English.

Direct links

Direct links out

Tính đến 27-08-2016. Xem phiên bản mới nhất.

// ==UserScript==
// @name            Direct links
// @name:ru         Прямые ссылки
// @namespace       FIX
// @version         0.0.1
// @description     Direct links out
// @description:ru  Замена ссылок на прямые
// @author          raletag
// @match           *://*/*
// @grant           unsafeWindow
// ==/UserScript==

(function() {
    'use strict';
    console.time('Direct links load');
    var win = unsafeWindow || window;

    function Handler (e) {
        console.time('HandlerTime');
        try {
        var link = e.target, url = link.href, tourl, base64;
        if (!url) {
            while (!url && link !== this) {
                link = link.parentNode;
                url = link.href;
            }
        }
        link.removeEventListener('mouseover', Handler, false);
        if (!url) {
            return true;
        }
        tourl = decodeURIComponent((url.match(/[?&](url|r|to|u|go)=([^&]*)(&|$)/i)||url.match(/(\/leech_out\.php\?.:|\/phpBB2\/goto\/|\/go\/\?)([^&]*)(&|$)/i)||[])[2]);
        if (!tourl) {
            return true;
        }
        try {
            base64 = win.atob(tourl);
        } catch (err) {
        }

        if (base64) {
            tourl = base64;
        }
        if (tourl.match(/^http(|s):\/\/([^&]*)/i)) {
            tourl = decodeURIComponent(escape(tourl));
            console.group("Direct links");
            console.info(url);
            console.info(tourl);
            console.timeEnd('HandlerTime');
            console.groupEnd();
            link.href = tourl;
        }
        } catch (err) {
            console.error('Direct links error: ' + err);
            console.timeEnd('HandlerTime');
            alert('Direct links error: ' + err);
            return true;
        }
        return true;
    }

    var links = document.getElementsByTagName('a');
    for (var i = links.length - 1; i >= 0; --i) {
            links[i].addEventListener('mouseover', Handler, false);
    }


    document.addEventListener('DOMNodeInserted',function(e){
        if (!e.currentTarget) return true;
        var links = e.currentTarget.getElementsByTagName('a');
        for (var i = links.length - 1; i >= 0; --i) {
            links[i].addEventListener('mouseover', Handler, false);
        }
        });

    console.timeEnd('Direct links load');
})();