Made in 2022 by Developer Prince
!function(){ | |
"use strict"; | |
function log_error(e) { | |
try { | |
if ("undefined" == typeof console) | |
return; | |
"error" in console ? console.error(e) : console.log(e) | |
} catch (e) {} | |
} | |
function build_html(e) { | |
return div.innerHTML = '<a href="' + e.replace(/"/g,""") + '"></a>', i.childNodes[0].getAttribute("href") || "" | |
} | |
function extract_hex(str, index) { | |
var r = str.substr(index, 2); | |
return parseInt(r, 16) | |
} | |
function decrypt(str, start_index) { | |
var output = "" | |
var key = extract_hex(str, start_index); | |
for(var i = start_index + 2; i < str.length; i += 2) { | |
var u = extract_hex(str, i) ^ key; | |
output += String.fromCharCode(u) | |
} | |
try { | |
output = decodeURIComponent(escape(output)) | |
} catch (l) { | |
log_error(l) | |
} | |
return build_html(output) | |
} | |
var url_fragment = "/cdn-cgi/l/email-protection#" | |
var cf_elem_class = ".__cf_email__" | |
var cf_elem_attribute = "data-cfemail" | |
var div = document.createElement("div"); | |
!function(){ | |
var tags = document.getElementsByTagName("a") | |
for(var tag_index = 0; tag_index < tags.length; r++) | |
try { | |
var tag = tags[tag_index]; | |
var start_index = tag.href.indexOf(url_fragment); | |
if (start_index > -1) { | |
tag.href = "mailto:" + decrypt(tag.href, start_index + url_fragment.length) | |
} | |
} catch (i) { | |
log_error(i) | |
} | |
}(), | |
function() { // main | |
var elems = document.querySelectorAll(cf_elem_class) | |
for(var elem_index = 0; elem_index < elems.length; elem_index++) | |
try { | |
var elem = elems[elem_index] | |
var parent = elem.parentNode; | |
var attribute_value = elem.getAttribute(cf_elem_attribute); | |
if (attribute_value) { | |
var decrypted = decrypt(attribute_value, 0) | |
var new_element = document.createTextNode(decrypted); | |
parent.replaceChild(new_element, elem) | |
} | |
} catch (d) { | |
log_error(d) | |
} | |
}(), | |
function() { // remove this script from document | |
var e = document.currentScript || document.scripts[document.scripts.length - 1]; | |
e.parentNode.removeChild(e) | |
}() | |
}(); |