Greasy Fork is available in English.
Direct links out
当前为
// ==UserScript==
// @name Direct links
// @name:ru Прямые ссылки
// @namespace FIX
// @version 0.0.2
// @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|z|to|u|go|st.link)=([^&]*)(&|$)/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);
link.href = tourl;
console.timeEnd('HandlerTime');
console.groupEnd();
}
} 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');
})();