Knightmare Posted October 4, 2019 Share Posted October 4, 2019 Not sure if I'm asking this correctly, but I want to know how to use the source code from a script to make a new script. Back story: I was using a script back in the day, but it went dead for some reason. The script was amazing and worked like a charm for me! Unfortunately, there is no longer an install button for the script but the site still has the code available. I use AdGuard for all of my script extensions, so I was wondering how I might go about adding the source code to a script that I could then add to AdGuard. // ==UserScript== // @name Skip Redirect // @namespace https://greasyfork.org/scripts/8980-skip-redirect // @description Skip diverse redirects. // @author theheroofvn // @include * // @grant none // @version 1.0 // ==/UserScript== var OFFICIAL_SCHEME = "(aaas|aaa|acap|afs|cap|cid|crid|data|dav|dict|dns|dtn|fax|file|ftp|gopher|go|h323|https|http|iax2|icap|imap|im|info|ipp|iris\\.beep|iris\\.lwz|iris\\.xpcs|iris\\.xpc|iris|ldap|mailserver|mailto|mid|modem|msrps|msrp|mtqp|mupdate|news|nfs|nntp|opaquelocktoken|pack|pop|pres|prospero|rtsp|service|shttp|sips|sip|snmp|soap\\.beeps|soap\\.beep|tag|telnet|tel|tftp|thismessage|tip|tn3270|tv|urn|vemmi|wais|xmlrpc\\.beeps|xmlrpc\\.beep|xmpp|z39\\.50r|z39\\.50s)"; var UNOFFICIAL_SCHEME = "(about|addbook|afp|aim|applescript|bcp|bk|btspp|callto|castanet|cdv|chrome|chttp|cvs|daytime|device|doi|ed2k|eid|enp|feed|finger|fish|freenet|gg|gizmoproject|gsiftp|gsm-sms|h324|hdl|hnews|httpsy|iioploc|ilu|IOR|ircs|irc|itms|jar|javascript|jdbc|klik|kn|lastfm|ldaps|lifn|livescript|lrq|magnet|mailbox|man|md5|mms|mocha|moz-abmdbdirectory|msnim|myim|notes|nsfw|oai|pcast|phone|php|pop3|printer|psyc|pyimp|rdar|res|rsync|rvp|rwhois|rx|sdp|secondlife|sftp|skype|smb|sms|snews|soap\\.udp|soldat|ssh|steam|SubEthaEdit|svn\\+ssh|svn|t120|tann|tcp|telephone|txmt|uddi|unreal|ut2004|uuid|videotex|view-source|wcap|webcal|whodp|whois\\+\\+|whois|wpn|wtai|xeerkat|xfire|ymsgr)"; var SCHEME = "(" + OFFICIAL_SCHEME + "|" + UNOFFICIAL_SCHEME + "):"; var IP_LITERAL = "(\\[((([a-f\\d]{1,4}:){6}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(::([a-f\\d]{1,4}:){5}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(([a-f\\d]{1,4})?::([a-f\\d]{1,4}:){4}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|((([a-f\\d]{1,4}:)?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:){3}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,2})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:){2}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,3})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,4})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,5})?[a-f\\d]{1,4})?::[a-f\\d]{1,4})|(((([a-f\\d]{1,4}:){1,6})?[a-f\\d]{1,4})?::))\\])"; var IPV4ADDRESS = "((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5]))"; var IP = "(" + IPV4ADDRESS + "|" + IP_LITERAL + ")"; var HIER_PART = "(((\\/\\/)?((([\\w-.~!$&'()*+,;=:]|%[a-f\\d]{2})*@)?(" + IP + "|([\\w-.~!$&'()*+,;=]|%[a-f\\d]{2})*)(:\\d+)?))([\\w-.~!$&'()*+,;=:@/]|%[a-f\\d]{2})*)"; var QUERY_FRAGMENT = "([?]([\\w-.~!$'()*+,;=:@/?]|%[a-f\\d]{2})*([&]([\\w-.~!$&'()*+,;=:@/?]|%[a-f\\d]{2})*)?)?(#([\\w-.~!$&'()*+,;=:@/?]|%[a-f\\d]{2})*)?"; var URI1 = "(" + SCHEME + HIER_PART + QUERY_FRAGMENT + ")"; // URI - NO SCHEME, SPECIFIC REG-NAME AND TOP-LEVEL DOMAIN var AUTHORITY = "([a-z\\d]([\\w-.~!$&*+,=:]|%[a-f\\d]{2})*@)?"; var REG_NAME = "([a-z\\d]([\\w-~!$&*+,=@]|%[a-f\\d]{2})+\\.)+"; var TLD = "(ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)"; var PATH = "([;/]([\\w-.~!$&'()*+,;=:@/]|%[a-f\\d]{2})*)?"; var URI2 = "(" + AUTHORITY + "(" + IP + "|(" + REG_NAME + TLD + "\\b))(:\\d+)?" + PATH + QUERY_FRAGMENT + ")"; // URI REGULAR EXPRESSION var uriRegExp = new RegExp(URI1 + "|" + URI2, "i"); // UNWANTED REGULAR EXPRESSION var unwantedRegExp = new RegExp("^((" + SCHEME + "?\\/*)|(\\+[-.()\\d]{1,3}[-.()]*)|" + IPV4ADDRESS + ")$", "i"); // SCHEME-ONLY OR 1-3 DIGITS PHONENUMBER // MAILTO REGULAR EXPRESSION var MAILTO = "((([\\w-.~]|%[a-f\\d]{2})+@([\\w-.~,]|%[a-f\\d]{2})+)*([&?]([\\w-.~=@]|%[a-f\\d]{2})*)*)"; var mailtoRegExp = new RegExp("^" + MAILTO + "$", "i"); // SCHEME REGULAR EXPRESSION var schemeRegExp = new RegExp("^" + SCHEME, "i"); var NAME = "skipredirect"; var DUMP = false; var t0 = new Date().getTime(); function main() { metaRefresh(); frameRedirection(); urlRedirection(); } function metaRefresh() { var metas = document.evaluate("./html/head/meta[translate(@http-equiv,'EFHRS','efhrs')='refresh']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if (!metas || metas.snapshotLength <= 0) return; window.addEventListener("load", function() { window.stop(); }, false); // STOP REFRESH var content = metas.snapshotItem(0).getAttribute("content"); var spacer = content.match(/^[0-9]+\s*;\s*(url=)?/i); if (spacer) insertRedirect(content.substring(spacer[0].length)); } function frameRedirection() { var frames = document.evaluate(".//frame[@src]", document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (!frames || frames.snapshotLength != 1) return; window.location.replace(frames.snapshotItem(0).src); } var urls = null; function urlRedirection() { appendStyle(); var anchors = document.evaluate(".//a[contains(@href,'?') or contains(@href,'&')]", document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (anchors && anchors.snapshotLength > 0) for (var i = 0; i < anchors.snapshotLength; i++) { urls = {}; urls.obj = {}; urls.count = 0; var anchor = anchors.snapshotItem(i); var href = anchor.getAttribute("href"); var tmp = href.replace(/^[^?&=]+[?&=]/, "").replace(/\s+$/, ""); var arr = tmp.split(/[?&=]/); for (var j = 0; j < arr.length; j++) skipRedirect(arr[j]); switch (urls.count) { case 0: continue; case 1: for (var uri in urls.obj) { if (DUMP) dump("* uri=" + uri + "\n"); anchor.setAttribute("href", uri); } break; default: if (!anchor.parentNode) continue; var span = document.createElement("span"); span.setAttribute("class", "skip-redirect-userscript-span"); var innerHTML = '<ul class="skip-redirect-userscript-ul"><li><a href="' + href + '">' + anchor.innerHTML + "</a><ul>"; for (uri in urls.obj) { if (DUMP) dump("* uri=" + uri + "\n"); innerHTML += '<li><a href="' + uri + '"><nobr>' + uri + "</nobr></a></li>"; } innerHTML += "</ul></li></ul>"; span.innerHTML = innerHTML; anchor.parentNode.replaceChild(span, anchor); } } } function skipRedirect(value) { if (!value) return; if (value.indexOf("%") > -1) { var arr = value.split(/[?&=]/); for (var i = 0; i < arr.length; i++) { if (arr.length < 4) continue; if (arr.indexOf("%") > -1) { var tmp = unescape(arr); if (tmp == arr) continue; arr = tmp; } skipRedirect(arr); } } else { var uri = value.replace(/\ /g, "%20").match(uriRegExp); if (!uri) return; uri = uri[0]; if (uri.match(unwantedRegExp)) return; if (!uri.match(schemeRegExp)) { if (uri.match(mailtoRegExp)) uri = "mailto:" + uri; else if (uri.match(telRegExp)) uri = "tel:" + uri; else uri = "http://" + uri; } urls.obj[uri] = true; urls.count++; } } function insertRedirect(uri) { document.body.setAttribute("style", "margin: 0 !important;" + "padding: 0 !important;"); var div = document.createElement("div"); div.setAttribute("style", "background: white none repeat scroll 0% !important;" + "color: gray !important;" + "display: block !important;" + "font: normal normal normal 11px Arial,sans-serif !important;" + "margin: 0 !important;" + "padding: 5px !important;" + "position: fixed !important;" + "text-align: left !important;" + "width: 100% !important;" + "z-index: 10000 !important;"); var a = document.createElement("a"); a.setAttribute("href", uri); a.setAttribute("style", "background: white none repeat scroll 0% !important;" + "color: gray !important;" + "font: normal normal normal 11px Arial,sans-serif !important;"); a.appendChild(document.createTextNode(uri)); div.appendChild(document.createTextNode("Redirect to ")); div.appendChild(a); document.body.insertBefore(div, document.body.firstChild); } function appendStyle() { var head = document.getElementsByTagName("head")[0]; if (!head) return; var style = document.createElement("style"); style.rel = "stylesheet"; style.type = "text/css"; style.innerHTML = ".skip-redirect-userscript-span {" + "margin: 0 !important;" + "padding: 0 !important;" + "vertical-align: text-bottom !important;" + "}" + ".skip-redirect-userscript-ul {" + "display: table-row !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "text-align: left !important;" + "}" + ".skip-redirect-userscript-ul li {" + "list-style: none !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "position: relative !important;" + "}" + ".skip-redirect-userscript-ul li:hover ul {" + "display: block !important;" + "}" + ".skip-redirect-userscript-ul ul {" + "background: white none repeat scroll 0% !important;" + "display: none !important;" + "margin: 0 !important;" + "border: 1px solid #eae8e3 !important;" + "padding: 0 5px !important;" + "position: absolute !important;" + "text-align: left !important;" + "z-index: 10000 !important;" + "}" + ".skip-redirect-userscript-ul ul a {" + "color: gray !important;" + "font: normal normal normal 11px Arial,sans-serif !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "text-decoration: none !important;" + "}"; head.appendChild(style); } if (DUMP) dump("\n--- begin " + NAME + " (" + window.location.href + ") ---\n"); main(); if (DUMP) dump("--- " + NAME + " end (" + (new Date().getTime() - t0) / 1e3 + " sek) ---\n"); Link to comment Share on other sites More sharing options...
Bizarre™ Posted October 5, 2019 Share Posted October 5, 2019 You should be able to import the script in AdGuard. Spoiler // ==UserScript== // @name Skip Redirect // @namespace https://greasyfork.org/scripts/8980-skip-redirect // @description Skip diverse redirects. // @author theheroofvn // @include * // @grant none // @version 1.0 // ==/UserScript== var OFFICIAL_SCHEME = "(aaas|aaa|acap|afs|cap|cid|crid|data|dav|dict|dns|dtn|fax|file|ftp|gopher|go|h323|https|http|iax2|icap|imap|im|info|ipp|iris\\.beep|iris\\.lwz|iris\\.xpcs|iris\\.xpc|iris|ldap|mailserver|mailto|mid|modem|msrps|msrp|mtqp|mupdate|news|nfs|nntp|opaquelocktoken|pack|pop|pres|prospero|rtsp|service|shttp|sips|sip|snmp|soap\\.beeps|soap\\.beep|tag|telnet|tel|tftp|thismessage|tip|tn3270|tv|urn|vemmi|wais|xmlrpc\\.beeps|xmlrpc\\.beep|xmpp|z39\\.50r|z39\\.50s)"; var UNOFFICIAL_SCHEME = "(about|addbook|afp|aim|applescript|bcp|bk|btspp|callto|castanet|cdv|chrome|chttp|cvs|daytime|device|doi|ed2k|eid|enp|feed|finger|fish|freenet|gg|gizmoproject|gsiftp|gsm-sms|h324|hdl|hnews|httpsy|iioploc|ilu|IOR|ircs|irc|itms|jar|javascript|jdbc|klik|kn|lastfm|ldaps|lifn|livescript|lrq|magnet|mailbox|man|md5|mms|mocha|moz-abmdbdirectory|msnim|myim|notes|nsfw|oai|pcast|phone|php|pop3|printer|psyc|pyimp|rdar|res|rsync|rvp|rwhois|rx|sdp|secondlife|sftp|skype|smb|sms|snews|soap\\.udp|soldat|ssh|steam|SubEthaEdit|svn\\+ssh|svn|t120|tann|tcp|telephone|txmt|uddi|unreal|ut2004|uuid|videotex|view-source|wcap|webcal|whodp|whois\\+\\+|whois|wpn|wtai|xeerkat|xfire|ymsgr)"; var SCHEME = "(" + OFFICIAL_SCHEME + "|" + UNOFFICIAL_SCHEME + "):"; var IP_LITERAL = "(\\[((([a-f\\d]{1,4}:){6}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(::([a-f\\d]{1,4}:){5}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(([a-f\\d]{1,4})?::([a-f\\d]{1,4}:){4}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|((([a-f\\d]{1,4}:)?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:){3}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,2})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:){2}([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,3})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,4})?[a-f\\d]{1,4})?::([a-f\\d]{1,4}:[a-f\\d]{1,4})|((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])))|(((([a-f\\d]{1,4}:){1,5})?[a-f\\d]{1,4})?::[a-f\\d]{1,4})|(((([a-f\\d]{1,4}:){1,6})?[a-f\\d]{1,4})?::))\\])"; var IPV4ADDRESS = "((([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]?\\d|1\\d{2}|2[0-4]\\d|25[0-5]))"; var IP = "(" + IPV4ADDRESS + "|" + IP_LITERAL + ")"; var HIER_PART = "(((\\/\\/)?((([\\w-.~!$&'()*+,;=:]|%[a-f\\d]{2})*@)?(" + IP + "|([\\w-.~!$&'()*+,;=]|%[a-f\\d]{2})*)(:\\d+)?))([\\w-.~!$&'()*+,;=:@/]|%[a-f\\d]{2})*)"; var QUERY_FRAGMENT = "([?]([\\w-.~!$'()*+,;=:@/?]|%[a-f\\d]{2})*([&]([\\w-.~!$&'()*+,;=:@/?]|%[a-f\\d]{2})*)?)?(#([\\w-.~!$&'()*+,;=:@/?]|%[a-f\\d]{2})*)?"; var URI1 = "(" + SCHEME + HIER_PART + QUERY_FRAGMENT + ")"; // URI - NO SCHEME, SPECIFIC REG-NAME AND TOP-LEVEL DOMAIN var AUTHORITY = "([a-z\\d]([\\w-.~!$&*+,=:]|%[a-f\\d]{2})*@)?"; var REG_NAME = "([a-z\\d]([\\w-~!$&*+,=@]|%[a-f\\d]{2})+\\.)+"; var TLD = "(ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)"; var PATH = "([;/]([\\w-.~!$&'()*+,;=:@/]|%[a-f\\d]{2})*)?"; var URI2 = "(" + AUTHORITY + "(" + IP + "|(" + REG_NAME + TLD + "\\b))(:\\d+)?" + PATH + QUERY_FRAGMENT + ")"; // URI REGULAR EXPRESSION var uriRegExp = new RegExp(URI1 + "|" + URI2, "i"); // UNWANTED REGULAR EXPRESSION var unwantedRegExp = new RegExp("^((" + SCHEME + "?\\/*)|(\\+[-.()\\d]{1,3}[-.()]*)|" + IPV4ADDRESS + ")$", "i"); // SCHEME-ONLY OR 1-3 DIGITS PHONENUMBER // MAILTO REGULAR EXPRESSION var MAILTO = "((([\\w-.~]|%[a-f\\d]{2})+@([\\w-.~,]|%[a-f\\d]{2})+)*([&?]([\\w-.~=@]|%[a-f\\d]{2})*)*)"; var mailtoRegExp = new RegExp("^" + MAILTO + "$", "i"); // SCHEME REGULAR EXPRESSION var schemeRegExp = new RegExp("^" + SCHEME, "i"); var NAME = "skipredirect"; var DUMP = false; var t0 = new Date().getTime(); function main() { metaRefresh(); frameRedirection(); urlRedirection(); } function metaRefresh() { var metas = document.evaluate("./html/head/meta[translate(@http-equiv,'EFHRS','efhrs')='refresh']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if (!metas || metas.snapshotLength <= 0) return; window.addEventListener("load", function() { window.stop(); }, false); // STOP REFRESH var content = metas.snapshotItem(0).getAttribute("content"); var spacer = content.match(/^[0-9]+\s*;\s*(url=)?/i); if (spacer) insertRedirect(content.substring(spacer[0].length)); } function frameRedirection() { var frames = document.evaluate(".//frame[@src]", document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (!frames || frames.snapshotLength != 1) return; window.location.replace(frames.snapshotItem(0).src); } var urls = null; function urlRedirection() { appendStyle(); var anchors = document.evaluate(".//a[contains(@href,'?') or contains(@href,'&')]", document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (anchors && anchors.snapshotLength > 0) for (var i = 0; i < anchors.snapshotLength; i++) { urls = {}; urls.obj = {}; urls.count = 0; var anchor = anchors.snapshotItem(i); var href = anchor.getAttribute("href"); var tmp = href.replace(/^[^?&=]+[?&=]/, "").replace(/\s+$/, ""); var arr = tmp.split(/[?&=]/); for (var j = 0; j < arr.length; j++) skipRedirect(arr[j]); switch (urls.count) { case 0: continue; case 1: for (var uri in urls.obj) { if (DUMP) dump("* uri=" + uri + "\n"); anchor.setAttribute("href", uri); } break; default: if (!anchor.parentNode) continue; var span = document.createElement("span"); span.setAttribute("class", "skip-redirect-userscript-span"); var innerHTML = '<ul class="skip-redirect-userscript-ul"><li><a href="' + href + '">' + anchor.innerHTML + "</a><ul>"; for (uri in urls.obj) { if (DUMP) dump("* uri=" + uri + "\n"); innerHTML += '<li><a href="' + uri + '"><nobr>' + uri + "</nobr></a></li>"; } innerHTML += "</ul></li></ul>"; span.innerHTML = innerHTML; anchor.parentNode.replaceChild(span, anchor); } } } function skipRedirect(value) { if (!value) return; if (value.indexOf("%") > -1) { var arr = value.split(/[?&=]/); for (var i = 0; i < arr.length; i++) { if (arr[i].length < 4) continue; if (arr[i].indexOf("%") > -1) { var tmp = unescape(arr[i]); if (tmp == arr[i]) continue; arr[i] = tmp; } skipRedirect(arr[i]); } } else { var uri = value.replace(/\ /g, "%20").match(uriRegExp); if (!uri) return; uri = uri[0]; if (uri.match(unwantedRegExp)) return; if (!uri.match(schemeRegExp)) { if (uri.match(mailtoRegExp)) uri = "mailto:" + uri; else if (uri.match(telRegExp)) uri = "tel:" + uri; else uri = "http://" + uri; } urls.obj[uri] = true; urls.count++; } } function insertRedirect(uri) { document.body.setAttribute("style", "margin: 0 !important;" + "padding: 0 !important;"); var div = document.createElement("div"); div.setAttribute("style", "background: white none repeat scroll 0% !important;" + "color: gray !important;" + "display: block !important;" + "font: normal normal normal 11px Arial,sans-serif !important;" + "margin: 0 !important;" + "padding: 5px !important;" + "position: fixed !important;" + "text-align: left !important;" + "width: 100% !important;" + "z-index: 10000 !important;"); var a = document.createElement("a"); a.setAttribute("href", uri); a.setAttribute("style", "background: white none repeat scroll 0% !important;" + "color: gray !important;" + "font: normal normal normal 11px Arial,sans-serif !important;"); a.appendChild(document.createTextNode(uri)); div.appendChild(document.createTextNode("Redirect to ")); div.appendChild(a); document.body.insertBefore(div, document.body.firstChild); } function appendStyle() { var head = document.getElementsByTagName("head")[0]; if (!head) return; var style = document.createElement("style"); style.rel = "stylesheet"; style.type = "text/css"; style.innerHTML = ".skip-redirect-userscript-span {" + "margin: 0 !important;" + "padding: 0 !important;" + "vertical-align: text-bottom !important;" + "}" + ".skip-redirect-userscript-ul {" + "display: table-row !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "text-align: left !important;" + "}" + ".skip-redirect-userscript-ul li {" + "list-style: none !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "position: relative !important;" + "}" + ".skip-redirect-userscript-ul li:hover ul {" + "display: block !important;" + "}" + ".skip-redirect-userscript-ul ul {" + "background: white none repeat scroll 0% !important;" + "display: none !important;" + "margin: 0 !important;" + "border: 1px solid #eae8e3 !important;" + "padding: 0 5px !important;" + "position: absolute !important;" + "text-align: left !important;" + "z-index: 10000 !important;" + "}" + ".skip-redirect-userscript-ul ul a {" + "color: gray !important;" + "font: normal normal normal 11px Arial,sans-serif !important;" + "margin: 0 !important;" + "padding: 0 !important;" + "text-decoration: none !important;" + "}"; head.appendChild(style); } if (DUMP) dump("\n--- begin " + NAME + " (" + window.location.href + ") ---\n"); main(); if (DUMP) dump("--- " + NAME + " end (" + (new Date().getTime() - t0) / 1e3 + " sek) ---\n"); Just copy the script above and save it to your desktop (script.js). Open AdGuard, then go to Settings > Extensions > Add Extension > Browse. Select the script from your Desktop, then click Install. Link to comment Share on other sites More sharing options...
debebee Posted October 5, 2019 Share Posted October 5, 2019 these scripts were loaded via greasemonkey or violent monkey extensions Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.