NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Link Generator
// @namespace link
// @version 2.1
// @description bypass safelink with link generator
// @author Firmansyah
// @contactURL https://reek.github.io/firmansyahtimeline/#contact
// @downloadURL https://raw.githubusercontent.com/firmansyahtimeline/link_generator/master/link_generator.js
// @updateURL https://raw.githubusercontent.com/firmansyahtimeline/link_generator/master/link_generator.js
// @match *://*/*
// @license MIT
// @grant none
// ==/UserScript==
function urldecode(url) {
return decodeURIComponent(url.replace(/\+/g, ' '));
}
function urlencode(str) {
return encodeURIComponent(str + '');
}
function base64decode(str){
var enc = atob(str);
return enc;
}
function base64encode(str){
var enc = btoa(str);
return enc;
}
function find_base64(str){
var re = /aHR0([a-zA-Z0-9\+\=\/]{11,})/;
var found = str.match(re);
return (found[0]);
}
/*
function hidesticky(){
document.getElementById("sticky").innerHTML = '';
document.getElementById("sticky").style.position='';
document.getElementById("sticky").style.background='';
document.getElementById("sticky").style.display='none';
}
*/
var isiscripthide= base64decode('CmZ1bmN0aW9uIGhpZGVzdGlja3koKXsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0aWNreSIpLmlubmVySFRNTCA9ICcnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RpY2t5Iikuc3R5bGUucG9zaXRpb249Jyc7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGlja3kiKS5zdHlsZS5iYWNrZ3JvdW5kPScnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RpY2t5Iikuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cn0K');
var scripthide=document.createElement('script');
scripthide.innerHTML=isiscripthide;
document.head.appendChild(scripthide); // append in head
function goto(linknya)
{
var aa="8@739#+%937+@9#+hksjd";
var bb=window.location.href;
if(bb.length>0){
aa=bb;
}
if (linknya.indexOf(aa) > -1) {
showsticky('<a href=\"'+linknya+'\">'+'Reff'+'</a>');
}else{
showsticky('<a href=\"'+linknya+'\">'+linknya+'</a>');
}
}
function showsticky(str){
document.getElementById("sticky").innerHTML = str+'<br><br><center><a href="javascript:hidesticky();" onClick="hidesticky();" >[X] CLOSE</a></center>';
document.getElementById("sticky").style.position='fixed';
document.getElementById("sticky").style.background='black';
document.getElementById("sticky").style.display='initial';
document.getElementById("sticky").style.padding='1em';
/*
setTimeout(
function() {
hidesticky();
}, 5000);
*/
}
function create(htmlStr) {
var frag = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
return frag;
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
function chkurl(url) {
var re = /^(http|https|ftp)/
if(!re.test(url)) {
return "false";
}else{
return "true";
}
}
function extractHostname(url) {
var hostname;
//find & remove protocol (http, ftp, etc.) and get hostname
if (url.indexOf("://") > -1) {
hostname = url.split('/')[2];
}
else {
hostname = url.split('/')[0];
}
//find & remove port number
hostname = hostname.split(':')[0];
//find & remove "?"
hostname = hostname.split('?')[0];
return hostname;
}
function explode(delim, str)
{
return str.split(delim);
}
var fragment = create('<div id="sticky" class="sticky"></div>');
// You can use native DOM methods to insert the fragment:
document.body.insertBefore(fragment, document.body.childNodes[0]);
document.getElementById("sticky").style.display='none';
document.getElementById("sticky").style.right='0%';
document.getElementById("sticky").style.bottom='0%';
document.getElementById("sticky").style.left='0%';
document.getElementById("sticky").style.color='white';
var sheet = document.createElement('style');
sheet.innerHTML = " div.sticky{ background-color:black; position:fixed; display: inline-block; color: white; text-align: center; padding: 14px; text-decoration: none; overflow: auto;\n white-space: nowrap; z-index: 999; } ";
//document.body.appendChild(sheet); // append in body
document.head.appendChild(sheet); // append in head
var isiscripthide= base64decode('CmZ1bmN0aW9uIGhpZGVzdGlja3koKXsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0aWNreSIpLmlubmVySFRNTCA9ICcnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RpY2t5Iikuc3R5bGUucG9zaXRpb249Jyc7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGlja3kiKS5zdHlsZS5iYWNrZ3JvdW5kPScnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RpY2t5Iikuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cn0K');
var scripthide=document.createElement('script');
scripthide.innerHTML=isiscripthide;
document.head.appendChild(scripthide); // append in head
/*
var str = 'http://aku.in/hahaahrokudea/=+kajy@$+(sxgd';
var zz= find_base64(str);
if(zz.length>0){
document.write(zz);
}
*/
//method
function m_findinurl(str){
var count = (str.match(/(http|https)/g) || []).length;
if(count<2){
return '';
}else{
var uri= str.split(/http|https*/);
var uris= (str.match(/(http|https)/g) || []);
try{
uri =uris[1]+urldecode(uri[2]);
}catch(err){}
goto(uri);
return uri;
}
}
function m_base64(str){
var zz= find_base64(str);
if(zz.length>0){
zz=base64decode(zz);
var aa2=chkurl(zz);
if (aa2 == "true")
{
goto(zz);}//true chkurl
}//length>0
}
function m_param(str){
var as=extractparam(str);
var lenas=as.length;
var l1=0;
while(lenas>0&&l1<=lenas)
{
var string="ok";
try{
string = base64decode(as[l1]);
}catch(err){
}
var aa1=chkurl(string);
if (aa1 == "true")
{
goto(string);}
l1=l1+1;
}
}
function allmethod(str){
var c=str.length;
if(c>10){
m_findinurl(str);
m_base64(str);
}
}
//method
//standar
function extractparam(str){
var res=[];
var text=str;
var hostnamedmn=extractHostname(str);
try{
text=replaceAll(text,hostnamedmn+"/", "&aa=");
}catch(err){}
try{
text=replaceAll(text,"%26", "&");
}catch(err){}
try{
text=text.replace("?", '&');
}catch(err){}
try{
var tanya =urldecode("3F");
text=replaceAll(text,tanya, "&a");
}catch(err){}
try{
text=replaceAll(text,"%3D", "=");
}catch(err){}
try{
text=replaceAll(text,"%2B", "+");
}catch(err){}
try{
text=replaceAll(text,"%3F", "&");
}catch(err){}
try{
text=replaceAll(text,"%2F", "/");
}catch(err){}
var subs = explode('&', text);
for(var i = 0; i < subs.length; ++i)
{
try{
var vals=subs[i].replace("=", 'kodedireplace');
//replacefirst
vals = explode('kodedireplace', vals);
var valsa=vals[1];
res.push(valsa);
}catch(err){}
}
return res;
}
var x=window.location.href;
if(x>10){
m_param(window.location.href);
allmethod(window.location.href);
}
[].forEach.call(document.querySelectorAll('a'), function(link) {
link.addEventListener('mouseover', function(event) {
var deas=urldecode(this.href);
allmethod(deas);
m_param(deas);
console.log(this.href); // `this` being the element triggering the event.
});
});
//standar