Last active
May 13, 2023 00:44
-
-
Save voidstar0/f2fd2f93cb7925f0866435663250f5e8 to your computer and use it in GitHub Desktop.
PX Stuff Cleaned up
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** @license Copyright (C) 2014-2019 PerimeterX, Inc (www.perimeterx.com). Content of this file can not be copied and/or distributed. **/ | |
!function () { | |
"use strict"; | |
try { | |
atob; | |
} catch (n) { | |
var t = function (t) { | |
var n = [], | |
o = void 0, | |
i = void 0, | |
a = void 0, | |
u = 0, | |
c = void 0, | |
f = t.length; | |
try { | |
if (e.test(t) || /=/.test(t) && (/=[^=]/.test(t) || /={3}/.test(t))) return null; | |
for (f % 4 > 0 && (t += window.Array(4 - f % 4 + 1).join("="), f = t.length); u < f;) { | |
for (i = [], c = u; u < c + 4;) i.push(r.indexOf(t.charAt(u++))); | |
for (o = (i[0] << 18) + (i[1] << 12) + ((63 & i[2]) << 6) + (63 & i[3]), a = [(o & 255 << 16) >> 16, 64 === i[2] ? -1 : (65280 & o) >> 8, 64 === i[3] ? -1 : 255 & o], c = 0; c < 3; ++c) (a[c] >= 0 || 0 === c) && n.push(String.fromCharCode(a[c])); | |
} | |
return n.join(""); | |
} catch (t) { | |
return null; | |
} | |
}, | |
r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | |
e = /[^+\/=0-9A-Za-z]/; | |
Object.defineProperty(window, "atob", { | |
value: t, | |
writable: !0, | |
enumerable: !0, | |
configurable: !0 | |
}); | |
} | |
}(); | |
!function () { | |
"use strict"; | |
try { | |
atob; | |
} catch (t) { | |
var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | |
o = /[^+\/=0-9A-Za-z]/; | |
Object.defineProperty(window, "atob", { | |
value: function (t) { | |
var e = [], | |
r = void 0, | |
i = void 0, | |
a = void 0, | |
c = 0, | |
d = void 0, | |
u = t.length; | |
try { | |
if (o.test(t) || /=/.test(t) && (/=[^=]/.test(t) || /={3}/.test(t))) return null; | |
for (u % 4 > 0 && (u = (t += window.Array(4 - u % 4 + 1).join("=")).length); c < u;) { | |
for (i = [], d = c; c < d + 4;) i.push(n.indexOf(t.charAt(c++))); | |
for (a = [((r = (i[0] << 18) + (i[1] << 12) + ((63 & i[2]) << 6) + (63 & i[3])) & 255 << 16) >> 16, 64 === i[2] ? -1 : (65280 & r) >> 8, 64 === i[3] ? -1 : 255 & r], d = 0; d < 3; ++d) (a[d] >= 0 || 0 === d) && e.push(String.fromCharCode(a[d])); | |
} | |
return e.join(""); | |
} catch (t) { | |
return null; | |
} | |
}, | |
writable: !0, | |
enumerable: !0, | |
configurable: !0 | |
}); | |
} | |
}(); | |
try { | |
!function () { | |
"use strict"; | |
var n = function () { | |
try { | |
if (atob && "test" === "test") return atob; | |
} catch (n) {} | |
function n(n) { | |
this.message = n; | |
} | |
return n.prototype = new Error(), n.prototype.name = "InvalidCharacterError", function (o) { | |
var t = String(o).replace(/[=]+$/, ""); | |
if (t.length % 4 == 1) throw new n("'atob' failed: The string to be decoded is not correctly encoded."); | |
for (var e, r, i = 0, a = 0, c = ""; r = t.charAt(a++); ~r && (e = i % 4 ? 64 * e + r : r, i++ % 4) ? c += String.fromCharCode(255 & e >> (-2 * i & 6)) : 0) r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r); | |
return c; | |
}; | |
}(); | |
function o(o) { | |
for (var t = n(o), e = t.charCodeAt(0), r = "", i = 1; i < t.length; ++i) r += String.fromCharCode(e ^ t.charCodeAt(i)); | |
return r; | |
} | |
function o(o) { | |
for (var t = n(o), e = t.charCodeAt(0), r = "", i = 1; i < t.length; ++i) r += String.fromCharCode(e ^ t.charCodeAt(i)); | |
return r; | |
} | |
n = function () { | |
try { | |
if (atob && "test" === "test") return atob; | |
} catch (n) {} | |
function n(n) { | |
this.message = n; | |
} | |
return n.prototype = new Error(), n.prototype.name = "InvalidCharacterError", function (o) { | |
var t = String(o).replace(/[=]+$/, ""); | |
if (t.length % 4 == 1) throw new n("'atob' failed: The string to be decoded is not correctly encoded."); | |
for (var e, r, i = 0, a = 0, c = ""; r = t.charAt(a++); ~r && (e = i % 4 ? 64 * e + r : r, i++ % 4) ? c += String.fromCharCode(255 & e >> (-2 * i & 6)) : 0) r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r); | |
return c; | |
}; | |
}(); | |
var t = o, | |
e = "pxcc", | |
r = "pxfs", | |
i = "b", | |
a = "https://captcha.px-cdn.net/captcha/details"; | |
function c() { | |
var n = o; | |
document["getElementById"]("px-block-toggle-button")["hidden"] = !0, document["getElementById"]("px-block-form")["hidden"] = !0, document["getElementById"]("px-form-thank-you")["hidden"] = !1; | |
} | |
function d() { | |
var n = o; | |
try { | |
if (window["localStorage"]) return +window["localStorage"]["getItem"](e); | |
} catch (n) {} | |
return 0; | |
} | |
window["_pxToggleOpenForm"] = function (n) { | |
var t = o; | |
document["getElementById"]("px-form-thank-you")["hidden"] && (void 0 === n ? n = function () { | |
var n = o; | |
try { | |
if (window["localStorage"]) return window["localStorage"]["getItem"](r) === "true"; | |
} catch (n) {} | |
return !1; | |
}() : function (n) { | |
var t = o; | |
try { | |
window["localStorage"] && window["localStorage"]["setItem"](r, n); | |
} catch (n) {} | |
}(n), document["getElementById"]("px-block-toggle-button")["hidden"] = n, document["getElementById"]("px-block-form")["hidden"] = !n, n && document["getElementById"]("px-block-form")["scrollIntoView"](!1)); | |
}, window["_pxSubmitForm"] = function () { | |
Gn && "function" == typeof Gn ? function () { | |
var n = o, | |
t = void 0; | |
document["getElementsByName"]("px-report-reason")["forEach"](function (n) { | |
var e = o; | |
n["checked"] && (t = n["value"]); | |
}); | |
var e = document["getElementById"]("px-form-free-text")["value"], | |
r = d(); | |
Gn("PX775", { | |
PX776: t, | |
PX777: e, | |
PX778: r, | |
PX610: !1 | |
}), c(); | |
}() : function () { | |
var n = o, | |
t = void 0; | |
document["getElementsByName"]("px-report-reason")["forEach"](function (n) { | |
var e = o; | |
n["checked"] && (t = n["value"]); | |
}); | |
var e = document["getElementById"]("px-form-free-text")["value"], | |
r = d(); | |
!function (n) { | |
var t = o, | |
e = new XMLHttpRequest(); | |
e["open"]("GET", a), e["addEventListener"]("error", function () { | |
n(), c(); | |
}), e["addEventListener"]("load", function () { | |
var t = o; | |
try { | |
var r = JSON["parse"](e["responseText"]); | |
n(r); | |
} catch (o) { | |
n(); | |
} | |
c(); | |
}), e["send"](); | |
}(function (n) { | |
var i = o, | |
a = {}; | |
if (a["type"] = "captcha_form", a["timestamp"] = Date["now"](), a["px_app_id"] = window["_pxAppId"], a["socket_ip"] = "1.2.3.4", a["headers"] = {}, a["url"] = location["href"], a["details"] = { | |
user_reason: t, | |
user_comment: e, | |
block_page_count: r, | |
block_page_uuid: window["_pxUuid"] || Mn("uuid"), | |
block_page_vid: window["_pxVid"] || Mn("vid") | |
}, n) { | |
for (var c = Object["keys"](n), d = 0; d < c["length"]; d++) if (c[d]["startsWith"]("header_")) { | |
var u = c[d]["replace"]("header_", ""); | |
a["headers"][u] = n[c[d]]; | |
} | |
a["socket_ip"] = n["clientIP"]; | |
} | |
var f = new XMLHttpRequest(); | |
f["open"]("POST", "//collector-" + window["_pxAppId"] + ".perimeterx.net/api/v2/collector/s2s"), f["setRequestHeader"]("Content-Type", "application/json"), f["send"](JSON["stringify"](a)); | |
}); | |
}(); | |
}, window["_pxItemSelected"] = function () { | |
var n = o; | |
document["getElementById"]("px-form-submit")["removeAttribute"]("disabled"); | |
}; | |
var u = o, | |
f = "https://collector-" + window._pxAppId + ".px-cloud.net/b/g", | |
w = !1, | |
s = o, | |
p = ("Press & Hold", "Human Challenge requires verification. Please press and hold the button until verified", "Human Challenge completed, please wait", "There seems to be a connection issue. Please make sure you're online, and then refresh the page", "There seems to be a problem with your browser. Please upgrade to load PerimeterX Human Challenge", "Ingedrukt houden", "Human Challenge vereist verificatie. Houd de knop ingedrukt totdat u geverifieerd bent", "Human Challenge voltooid, even geduld", "Er lijkt een probleem met de verbinding te zijn. Zorg dat u online bent en vernieuw vervolgens de pagina", "Er lijkt een probleem met uw browser te zijn. Upgrade om PerimeterX Human Challenge te laden", "Appuyer et maintenir enfonc\xE9", "Le 'D\xE9fi humain' n\xE9cessite une v\xE9rification. Veuillez appuyer et maintenir le bouton enfonc\xE9 jusqu'\xE0 ce que la v\xE9rification soit termin\xE9e", "Le 'D\xE9fi humain' a \xE9t\xE9 relev\xE9, veuillez patienter", "Il semble y avoir un probl\xE8me avec votre connexion. Veuillez v\xE9rifier que vous \xEAtes bien connect\xE9(e) \xE0 Internet, puis rafra\xEEchissez la page", "Il semble y avoir un probl\xE8me avec votre navigateur. Veuillez le mettre \xE0 niveau pour charger le 'D\xE9fi humain' PerimeterX", "Dr\xFCcken und halten", "Human Challenge erfordert eine Best\xE4tigung. Bitte dr\xFCcken und halten Sie die Taste bis zur Best\xE4tigung", "Human Challenge abgeschlossen, bitte warten", "Es scheint ein Verbindungsproblem zu geben. Stellen Sie sicher, dass Sie online sind, und aktualisieren Sie die Seite", "Es scheint ein Problem mit Ihrem Browser zu geben. Bitte f\xFChren Sie ein Upgrade durch, um PerimeterX Human Challenge zu laden", "Pressione e Segure", "Human Challenge requer verifica\xE7\xE3o. Por favor, mantenha o bot\xE3o pressionado at\xE9 completar a verifica\xE7\xE3o", "Human Challenge conclu\xEDda, por favor, aguarde", "Parece haver um problema de conex\xE3o. Por favor, verifique se est\xE1 conectado e atualize a p\xE1gina", "Parece haver um problema com o navegador. Por favor, atualize para carregar PerimeterX Human Challenge", "Pulsar y mantener", "Reto humano requiere verificaci\xF3n. Por favor, pulsa y mant\xE9n el bot\xF3n hasta que se verifique", "Reto humano completado. Por favor, espera", "Parece que hay un problema con la conexi\xF3n. Por favor, aseg\xFArate que est\xE1s conectado a Internet y, despu\xE9s, actualiza la p\xE1gina", "Parece que hay un problema con tu navegador. Por favor, actualiza para cargar el Reto humano de PerimeterX", "Tryk og hold", "Human Challenge kr\xE6ver bekr\xE6ftelse. Tryk p\xE5 og hold knappen, indtil bekr\xE6ftet", "Human Challenge f\xE6rdig, vent venligst", "Der lader til at v\xE6re et opkoblingsproblem. Kontroller, at du er online, og genopfrisk derefter siden", "Der lader til at v\xE6re et problem med din browser. Opgrader for at indl\xE6se PerimeterX Human Challenge", "Nyomja meg \xE9s tartsa", "Tekan & Tahan", "Human Challenge membutuhkan verifikasi. Harap tekan dan tahan tombol sampai diverifikasi", "Human Challenge selesai, harap tunggu", "Tampaknya ada masalah koneksi. Pastikan Anda sedang online, lalu segarkan laman", "Tampaknya ada masalah dengan peramban Anda. Harap tingkatkan untuk memuat PerimeterX Human Challenge", "Tenere premuto", "Human Challenge richiede una verifica. Tieni premuto il tasto fino a verifica avvenuta", "Human Challenge \xE8 stato completato. Attendi", "Si sono verificati dei problemi di connessione. Assicurati di essere online e aggiorna la pagina", "Si \xE8 verificato un problema con il tuo browser. Aggiornalo per caricare PerimeterX Human Challenge", o), | |
v = "function" == typeof Symbol && typeof Symbol.iterator === "symbol" ? function (n) { | |
return typeof n; | |
} : function (n) { | |
var t = o; | |
return n && "function" == typeof Symbol && n.constructor === Symbol && n !== Symbol.prototype ? "symbol" : typeof n; | |
}, | |
l = (function () { | |
var n = o; | |
"function" == typeof Symbol && Symbol.for && Symbol.for("react.element"); | |
}(), function () { | |
function n(n) { | |
var t, e; | |
function r(t, e) { | |
var a = o; | |
try { | |
var c = n[t](e), | |
d = c.value; | |
d instanceof function (n) { | |
this.value = n; | |
} ? Promise.resolve(d.value).then(function (n) { | |
r("next", n); | |
}, function (n) { | |
r("throw", n); | |
}) : i(c.done ? "return" : "normal", c.value); | |
} catch (n) { | |
i("throw", n); | |
} | |
} | |
function i(n, i) { | |
var a = o; | |
switch (n) { | |
case "return": | |
t.resolve({ | |
value: i, | |
done: !0 | |
}); | |
break; | |
case "throw": | |
t.reject(i); | |
break; | |
default: | |
t.resolve({ | |
value: i, | |
done: !1 | |
}); | |
} | |
(t = t.next) ? r(t.key, t.arg) : e = null; | |
} | |
this._invoke = function (n, o) { | |
return new Promise(function (i, a) { | |
var c = { | |
key: n, | |
arg: o, | |
resolve: i, | |
reject: a, | |
next: null | |
}; | |
e ? e = e.next = c : (t = e = c, r(n, o)); | |
}); | |
}, "function" != typeof n.return && (this.return = void 0); | |
} | |
"function" == typeof Symbol && Symbol.asyncIterator && (n.prototype[Symbol.asyncIterator] = function () { | |
return this; | |
}), n.prototype.next = function (n) { | |
var t = o; | |
return this._invoke("next", n); | |
}, n.prototype.throw = function (n) { | |
var t = o; | |
return this._invoke("throw", n); | |
}, n.prototype.return = function (n) { | |
var t = o; | |
return this._invoke("return", n); | |
}; | |
}(), o); | |
function h() { | |
return +new Date(); | |
} | |
function g() { | |
var n = o, | |
t = location.protocol; | |
return "string" == typeof t && 0 === t.indexOf("http") ? t : "https:"; | |
} | |
"\"undefined\"", "null"; | |
var x = {}, | |
m = {}, | |
b = void 0, | |
S = "s", | |
A = "c"; | |
function y(n) { | |
var o = k() - x[n]; | |
return m[n] = m[n] || {}, m[n][S] = m[n][S] ? m[n][S] + o : o, m[n][A] = m[n][A] ? m[n][A] + 1 : 1, o >= 0 ? parseInt(o) : b; | |
} | |
function k() { | |
return window.performance && "function" == typeof performance.now ? performance.now() : h(); | |
} | |
var E = o, | |
Q = ("beforeunload", "unload", void "pagehide"), | |
O = []; | |
function I(n) { | |
var t = o, | |
e = !1; | |
function r() { | |
e || (e = !0, n()); | |
} | |
if (document.addEventListener) document.addEventListener("DOMContentLoaded", r, !1);else if (document.attachEvent) { | |
var i = void 0; | |
try { | |
i = null !== window.frameElement; | |
} catch (n) { | |
i = !1; | |
} | |
document.documentElement.doScroll && !i && function n() { | |
var t = o; | |
if (!e) try { | |
document.documentElement.doScroll("left"), r(); | |
} catch (o) { | |
setTimeout(n, 50); | |
} | |
}(), document.attachEvent("onreadystatechange", function () { | |
var n = o; | |
document.readyState === "complete" && r(); | |
}); | |
} | |
if (window.addEventListener) window.addEventListener("load", r, !1);else if (window.attachEvent) window.attachEvent("onload", r);else { | |
var a = window.onload; | |
window.onload = function () { | |
a && a(), r(); | |
}; | |
} | |
} | |
I(function () { | |
Q = Q || h(); | |
}); | |
var C = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | |
B = /[^+/=0-9A-Za-z]/, | |
F = function () { | |
try { | |
return window.atob; | |
} catch (n) {} | |
}(); | |
function R(n) { | |
return "function" == typeof F ? F(n) : function (n) { | |
var o = [], | |
t = void 0, | |
e = void 0, | |
r = void 0, | |
i = 0, | |
a = void 0, | |
c = n.length; | |
try { | |
if (B.test(n) || /=/.test(n) && (/=[^=]/.test(n) || /={3}/.test(n))) return null; | |
for (c % 4 > 0 && (c = (n += window.Array(4 - c % 4 + 1).join("=")).length); i < c;) { | |
for (e = [], a = i; i < a + 4;) e.push(C.indexOf(n.charAt(i++))); | |
for (r = [((t = (e[0] << 18) + (e[1] << 12) + ((63 & e[2]) << 6) + (63 & e[3])) & 255 << 16) >> 16, 64 === e[2] ? -1 : (65280 & t) >> 8, 64 === e[3] ? -1 : 255 & t], a = 0; a < 3; ++a) (r[a] >= 0 || 0 === a) && o.push(String.fromCharCode(r[a])); | |
} | |
return o.join(""); | |
} catch (n) { | |
return null; | |
} | |
}(n); | |
} | |
!function (n) { | |
if (typeof n === "boolean" ? n : "function" == typeof btoa) return function (n) { | |
return btoa(encodeURIComponent(n).replace(/%([0-9A-F]{2})/g, function (n, o) { | |
return String.fromCharCode("0x" + o); | |
})); | |
}; | |
window.unescape || window.decodeURI; | |
}(); | |
var L = o, | |
G = (h(), "script", function () { | |
var n = o, | |
t = "mousewheel"; | |
try { | |
window && window.navigator && /Firefox/i.test(window.navigator.userAgent) && (t = "DOMMouseScroll"); | |
} catch (n) {} | |
}(), "mousemove", "touchmove", "visibilitychange", "resize", "focus", "blur", "beforeprint", "afterprint", "deviceorientation", "devicemotion", "scroll", "click", "dblclick", "mousedown", "mouseup", "mouseover", "mouseout", "contextmenu", "dragstart", "dragend", "keyup", "keydown", "touchstart", "touchend", "touchcancel", "copy", "cut", "paste", o), | |
q = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | |
"R29vZ2xlfGdvb2dsZQ=="; | |
try { | |
var T = Object.defineProperty({}, "passive", { | |
get: function () { | |
return !0; | |
} | |
}); | |
window.addEventListener("test", null, T); | |
} catch (n) {} | |
function D(n, o) { | |
for (var t = "", e = "string" == typeof o && o.length > 10 ? o.replace(/\s*/g, "") : q, r = 0; r < n; r++) t += e[Math.floor(Math.random() * e.length)]; | |
return t; | |
} | |
var X = o, | |
K = ("pxCaptcha", "px-captcha", "pxhc"); | |
function M() { | |
return window["_" + window["_pxAppId"]]; | |
} | |
function H() { | |
var n = o, | |
t = M(); | |
return window["_pxTranslation"] || t && t["translation"]; | |
} | |
function N() { | |
var n, | |
t, | |
e = o, | |
r = M(), | |
i = r && r["locale"]; | |
return i && (t = "string", (void 0 === (n = i) ? "undefined" : v(n)) === t) ? i : window["_pxSelectedLocale"] || window["_pxreCaptchaLang"] || (navigator["languages"] ? navigator["languages"][0] : navigator["language"]) || navigator["userLanguage"] || ""; | |
} | |
function Y() { | |
var n = o; | |
return window["_pxreCaptchaTheme"] || "dark"; | |
} | |
D(5), D(10), D(10), D(10), D(10), D(10); | |
var U = { | |
on: function (n, o, t) { | |
this.subscribe(n, o, t, !1); | |
}, | |
one: function (n, o, t) { | |
this.subscribe(n, o, t, !0); | |
}, | |
off: function (n, o) { | |
if (void 0 !== this.channels[n]) { | |
var t, | |
e = void 0; | |
for (e = 0, t = this.channels[n].length; e < t; e++) if (this.channels[n][e].fn === o) { | |
this.channels[n].splice(e, 1); | |
break; | |
} | |
} | |
}, | |
subscribe: function (n, o, t, e) { | |
void 0 === this.channels && (this.channels = {}), this.channels[n] = this.channels[n] || [], this.channels[n].push({ | |
fn: o, | |
ctx: t, | |
once: e || !1 | |
}); | |
}, | |
trigger: function (n) { | |
if (this.channels && this.channels.hasOwnProperty(n)) { | |
for (var o = Array.prototype.slice.call(arguments, 1), t = []; this.channels[n].length > 0;) { | |
var e = this.channels[n].shift(); | |
"function" == typeof e.fn && e.fn.apply(e.ctx, o), e.once || t.push(e); | |
} | |
this.channels[n] = t; | |
} | |
} | |
}, | |
P = { | |
cloneObject: function (n) { | |
var o = {}; | |
for (var t in n) n.hasOwnProperty(t) && (o[t] = n[t]); | |
return o; | |
}, | |
extend: function (n, o) { | |
var t = P.cloneObject(o); | |
for (var e in t) t.hasOwnProperty(e) && (n[e] = t[e]); | |
return n; | |
} | |
}, | |
z = { | |
cipher: "SHA512", | |
len: 36 | |
}, | |
j = void 0; | |
try { | |
if ("undefined" != typeof crypto && crypto && crypto.getRandomValues) { | |
var W = new Uint8Array(16); | |
(j = function () { | |
return crypto.getRandomValues(W), W; | |
})(); | |
} | |
} catch (n) { | |
j = void 0; | |
} | |
if (!j) { | |
var Z = new Array(16); | |
j = function () { | |
for (var n, o = 0; o < 16; o++) 0 == (3 & o) && (n = 4294967296 * Math.random()), Z[o] = n >>> ((3 & o) << 3) & 255; | |
return Z; | |
}; | |
} | |
for (var J = [], V = 0; V < 256; V++) J[V] = (V + 256).toString(16).substr(1); | |
function _(n, o) { | |
var t = o || 0, | |
e = J; | |
return e[n[t++]] + e[n[t++]] + e[n[t++]] + e[n[t++]] + "-" + e[n[t++]] + e[n[t++]] + "-" + e[n[t++]] + e[n[t++]] + "-" + e[n[t++]] + e[n[t++]] + "-" + e[n[t++]] + e[n[t++]] + e[n[t++]] + e[n[t++]] + e[n[t++]] + e[n[t++]]; | |
} | |
var $ = j(), | |
nn = [1 | $[0], $[1], $[2], $[3], $[4], $[5]], | |
on = 16383 & ($[6] << 8 | $[7]), | |
tn = 0, | |
en = 0; | |
var rn = o, | |
an = ("innerHTML", "iframe", "value", "recaptcha", "handleCaptcha", "g-recaptcha-response", "recaptcha-token", "/bframe?", D(10), o), | |
cn = "pxc", | |
dn = "pxhc", | |
un = ("89d5fa8d-180f-44a1-8497-06b5de2302d4", o), | |
fn = ("touchstart", "touchend", "touchmove", "touchenter", "touchleave", "touchcancel", "mousedown", "mouseup", "mousemove", "mouseover", "mouseout", "mouseenter", "mouseleave", "click", "dblclick", "scroll", "wheel", o), | |
wn = (h(), "mouseup", "mousedown", "click", "contextmenu", "mouseout", "keyup", "keydown", "copy", "cut", "paste", "mousemove", o), | |
sn = {}; | |
sn.$EXTENSIONS_DETECTION = "ed", sn.$NATIVES_EXTRACTION = "ne", sn.$WEB_WORKER = "ww", sn.$WEB_ASSEMBLY = "wa", sn.$AF_WINDOW_PROPERTIES = "af_wp", sn.$AF_SPEECH = "af_sp", sn.$AF_CODEC = "af_cd", sn.$AF_REQUEST_FILE = "af_rf", sn.$AF_STORAGE_ESTIMATE = "af_se", sn.$TIMING_METRICS = "tm", sn.$INJECT_DATA_PROTECTION = "idp", sn.$ARYA = "idp_p", sn.$CD = "idp_c", sn.$BOT_DEFENDER_DELAY = "bdd", sn.$GET_JS_BOOTSTRAP_RESPONSE_TEXT = "jsb_rt", sn.$BAKE_SECURED_COOKIES_ONLY = "bsco", sn.$ACTIVITY_EXPIRATION_TIME_SECS = "axt", sn.$RESEARCH_FIELDS = "rf", sn.$FINGERPRINT = "fp", sn.$REQUEST_SEND_KEY_XOR = "rsk", sn.$SERVER_CURRENT_SECRET = "scs", sn.$COOKIES_CONFIG = "cc", sn.$CONTROL_DOMREADY_EXECUTION = "cde"; | |
var pn = "_pxff_", | |
vn = {}; | |
function ln(n) { | |
return vn[n] || (vn[n] = function (n) { | |
var o = void 0; | |
if (n && "string" == typeof n) try { | |
var t = ("; " + document.cookie).split("; " + n + "="); | |
2 === t.length && (o = t.pop().split(";").shift()); | |
} catch (n) {} | |
return o; | |
}(pn + n)), vn[n]; | |
} | |
!function () { | |
for (var n in sn) sn.hasOwnProperty(n) && ln(sn[n]); | |
}(); | |
var hn, | |
gn = o, | |
xn = "_pxAction"; | |
function mn() { | |
return window[xn]; | |
} | |
"px-captcha", "g-recaptcha", "data-sitekey", h(), P.extend({}, U), P.extend({}, U), function () { | |
var n = o, | |
t = mn(); | |
("c" === t || t === cn || t === dn) && (window._pxUuid || function (n, t) { | |
var e = o; | |
t || (t = window.location.href), n = n.replace(/[[\]]/g, "\\$&"); | |
var r = new RegExp("[?&]" + n + "(=([^&#]*)|&|#|$)").exec(t); | |
if (!r) return null; | |
var i = r[2]; | |
if (!i) return ""; | |
if (i = decodeURIComponent(i.replace(/\+/g, " ")), n === "url") try { | |
i = R(i); | |
} catch (n) {} | |
return i; | |
}("uuid")) || function (n, t, e, r) { | |
var i = o; | |
x.PX505 = k(); | |
var a = ""; | |
if (r) try { | |
for (var c = (new Date().getTime() * Math.random() + "").replace(".", ".".charCodeAt()).split("").slice(-16), d = 0; d < c.length; d++) c[d] = parseInt(10 * Math.random()) * +c[d] || parseInt(Math.random() * z["len"]); | |
a = _(c, 0, z["cipher"]); | |
} catch (n) {} | |
var u = t && e || 0, | |
f = t || [], | |
w = void 0 !== (n = n || {}).clockseq ? n.clockseq : on, | |
s = void 0 !== n.msecs ? n.msecs : h(), | |
p = void 0 !== n.nsecs ? n.nsecs : en + 1, | |
v = s - tn + (p - en) / 1e4; | |
if (v < 0 && void 0 === n.clockseq && (w = w + 1 & 16383), (v < 0 || s > tn) && void 0 === n.nsecs && (p = 0), p >= 1e4) throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); | |
tn = s, en = p, on = w; | |
var l = (1e4 * (268435455 & (s += 122192928e5)) + p) % 4294967296; | |
f[u++] = l >>> 24 & 255, f[u++] = l >>> 16 & 255, f[u++] = l >>> 8 & 255, f[u++] = 255 & l; | |
var g = s / 4294967296 * 1e4 & 268435455; | |
f[u++] = g >>> 8 & 255, f[u++] = 255 & g, f[u++] = g >>> 24 & 15 | 16, f[u++] = g >>> 16 & 255, f[u++] = w >>> 8 | 128, f[u++] = 255 & w; | |
for (var m = n.node || nn, b = 0; b < 6; b++) f[u + b] = m[b]; | |
var S = t || _(f); | |
a === S || "CI"; | |
}(); | |
}(), ((hn = function (n) { | |
var t = o, | |
e = []; | |
if (!n) return e; | |
for (var r = n.split("\n"), i = void 0, a = null, c = /^\s*at (.*?) ?\(?((?:file:\/\/|https?:\/\/|blob|chrome-extension|native|webpack:\/\/|eval|<anonymous>).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, d = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i, u = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, f = 0, w = r.length; f < w; ++f) { | |
if (i = c.exec(r[f])) a = [i[2] && -1 !== i[2].indexOf("native") ? "" : i[2], i[1] || "?"];else if (i = u.exec(r[f])) a = [i[2], i[1] || "?"];else { | |
if (!(i = d.exec(r[f]))) continue; | |
a = [i[3], i[1] || "?"]; | |
} | |
e.push(a); | |
} | |
return e; | |
}(function () { | |
try { | |
null[0]; | |
} catch (n) { | |
return n.stack || ""; | |
} | |
return ""; | |
}()))[hn.length - 1] || {})[0], "_pxhd", window.__SCRAMBLER_PERF_FUNC_NAME__, delete window.__SCRAMBLER_PERF_FUNC_NAME__; | |
var bn = o, | |
Sn = 2500, | |
An = "pxcnv", | |
yn = "6Lcj-R8TAAAAABs3FrRPuQhLMbp5QrHsHufzLf7b", | |
kn = 9e5, | |
En = ["perimeterx.net", "pxchk.net", "px-cdn.net"], | |
Qn = ["/api/v2/collector/ocaptcha", "/api/v1/captcha"], | |
On = "/px/captcha_callback", | |
In = "/px/captcha_close", | |
Cn = "handleCaptcha", | |
Bn = function () { | |
var n = o, | |
t = [], | |
e = []; | |
window["_pxHostUrl"] && e["push"](window["_pxHostUrl"]); | |
for (var r = 0; r < En["length"]; r++) e["push"](g() + "//collector-" + window["_pxAppId"] + "." + En[r]); | |
for (var i = 0; i < e["length"]; i++) for (var a = 0; a < Qn["length"]; a++) { | |
var c = e[i] + Qn[a]; | |
"function" == typeof t["indexOf"] ? -1 === t["indexOf"](c) && t["push"](c) : t["push"](c); | |
} | |
return t; | |
}(), | |
Fn = 0, | |
Rn = !1, | |
Ln = !1, | |
Gn = null, | |
qn = Vn(), | |
Tn = {}; | |
function Dn() { | |
var n = o, | |
t = H(); | |
t ? Xn(t) : window["_pxInit"] = function () { | |
Xn(); | |
}; | |
} | |
function Xn(n) { | |
var t = o; | |
if (n = n || H()) { | |
var e = N(), | |
r = void 0; | |
(e ? [e] : navigator["languages"] || [navigator["language"]] || [navigator["userLanguage"]])["some"](function (o) { | |
if (n[o]) return r = n[o], !0; | |
}), r && r["forEach"](function (n) { | |
var t = o, | |
e = document["querySelector"](n["selector"]); | |
e && (e[n["attribute"] || "innerText"] = n["text"]); | |
}); | |
} | |
} | |
function Kn() { | |
setTimeout(function () { | |
(function () { | |
var n = o, | |
t = document["querySelectorAll"]("link[href]")["length"] > 1, | |
e = document["body"]["querySelectorAll"]("script")["length"] > 2, | |
r = document["querySelector"]("section.container"), | |
i = !1; | |
if (r) try { | |
4 === r["querySelectorAll"](":scope > div").length && r["querySelector"](":scope > div.customer-logo-wrapper") && r["querySelector"](":scope > div.page-title-wrapper") && r["querySelector"](":scope > div.content-wrapper") && r["querySelector"](":scope > div.page-footer-wrapper") && (i = !0); | |
} catch (n) {} | |
return i && !t && !e; | |
})() && (Rn || (function () { | |
var n = o, | |
t = !1; | |
(window._pxAction === i || d() > 0) && (t = !0), function () { | |
var n = o; | |
try { | |
if (window["localStorage"]) { | |
var t = window["localStorage"]["getItem"](e), | |
r = t ? +t : 0; | |
window["localStorage"]["setItem"](e, ++r); | |
} | |
} catch (n) {} | |
}(); | |
var r = document["createElement"]("div"); | |
r["setAttribute"]("id", "px-block-form-wrapper"), r["innerHTML"] = '<div><style>#px-block-form-wrapper{width:400px;position:absolute;bottom:0;left:calc(50% - 200px)}#px-block-toggle-button{height:20px;background:#fff;color:#000;border-radius:3px;padding:10px;cursor:pointer;font-size:13px;text-align:center;width:270px;border:1px solid #000;font-weight:900;margin-left:75px;text-decoration:underline}#px-block-form{background:#fff;border:1px solid;border-color:#404040;color:#000;border-radius:3px;height:265px;font-size:12px}button#px-form-close{float:right;background:0 0;border:none;color:#fff;font-size:18px;cursor:pointer}button#px-form-submit{position:absolute;bottom:10px;background:#404040;border:none;width:100px;border-radius:3px;height:25px;color:#fff;right:20px;cursor:pointer}button#px-form-submit:disabled{background:#ddd;cursor:not-allowed;color:#000}div#px-form{color:#000;padding:15px}div#px-form-head{padding:10px;font-size:14px;background:#404040;color:#fff}div#px-form textarea{margin:-5px 0 0 4px;width:300px;height:36px}div#px-form div{margin-bottom:6px}#px-form-thank-you{background:#fff;color:#000;border:1px solid;border-color:#404040;border-radius:3px;height:54px;padding:5px 10px;text-align:center;width:330px;margin-left:35px}#px-form-thank-you div{font-size:15px;margin-top:14px}#px-form-thank-you span.checkmark{margin-right:8px;color:green;font-size:20px}div#px-form form h4{margin:8px 4px}@media only screen and (orientation:portrait){#px-block-form-wrapper{width:97%;position:relative;left:3%;z-index:10}#px-block-toggle-button{height:20px;background:#fff;color:#000;padding:3px;cursor:pointer;font-size:13px;text-align:center;width:94%;border:none;font-weight:900;text-decoration:underline;margin-left:0;position:fixed;bottom:5px;right:10px;width:initial}#px-block-form{background:#fff;border:1px solid;border-color:#404040;color:#000;border-radius:3px;height:250px;font-size:12px}button#px-form-close{float:right;background:0 0;border:none;color:#fff;font-size:18px;cursor:pointer;position:absolute;right:15px;padding:0;bottom:6px}button#px-form-submit{position:absolute;bottom:10px;background:#404040;border:none;width:100px;border-radius:3px;height:25px;color:#fff;right:20px;cursor:pointer;font-size:13px}button#px-form-submit:disabled{background:#ddd;cursor:not-allowed;color:#000}div#px-form{color:#000;padding:15px}div#px-form-head{padding:10px;font-size:14px;background:#404040;color:#fff;position:relative}div#px-form textarea{margin:-5px 0 0 4px;width:90%;height:36px}div#px-form div{margin-bottom:6px}#px-form-thank-you{background:#fff;color:#000;border:1px solid;border-color:#404040;border-radius:3px;height:54px;padding:5px 10px;text-align:center;width:94%;margin-left:0}#px-form-thank-you div{font-size:15px;margin-top:14px}#px-form-thank-you span.checkmark{margin-right:8px;color:green;font-size:20px}div#px-form form h4{margin:8px 4px}.container{display:block;position:relative}.container .content-wrapper{padding-bottom:40px}.container .page-footer-wrapper{position:fixed;bottom:0}.container .content-wrapper .content{margin:0 auto}}</style><div id=px-block-toggle-button onclick=_pxToggleOpenForm(!0)>Report an issue</div><div hidden id=px-block-form><div id=px-form-head><span>Experiencing issues? Let us know:</span> <button onclick=_pxToggleOpenForm(!1) id=px-form-close>X</button></div><div id=px-form><form><div style=display:none><input onchange=_pxItemSelected() type=radio id=opt0 name=px-report-reason value=-1> <label for=opt0>I’m a bot</label></div><div><input onchange=_pxItemSelected() type=radio id=opt1 name=px-report-reason value=1> <label for=opt1>I don’t see any challenge</label></div><div><input onchange=_pxItemSelected() type=radio id=opt2 name=px-report-reason value=2> <label for=opt2>I keep solving the challenge</label></div><div><input onchange=_pxItemSelected() type=radio id=opt3 name=px-report-reason value=3> <label for=opt3>Other (please elaborate)</label></div><h4>Additional Information:</h4><textarea id=px-form-free-text placeholder="Experiencing other issues?"></textarea></form><button disabled=disabled id=px-form-submit onclick=_pxSubmitForm()>Send</button></div></div><div hidden id=px-form-thank-you><div><span class=checkmark>✓</span><span>Thank you for the feedback</span></div></div></div>', document["getElementById"]("px-captcha")["parentNode"]["appendChild"](r), t && window["_pxToggleOpenForm"](), Rn = !0; | |
}(), Dn()), function () { | |
var n = o; | |
if (!w) { | |
w = !0; | |
try { | |
var t = new XMLHttpRequest(); | |
t["onreadystatechange"] = function () { | |
var n = o; | |
if (4 === t["readyState"] && 0 === t["status"]) { | |
var e = document["querySelector"]("div.content") || document["querySelector"]("div#px-captcha"); | |
if (e) { | |
var r = "<div style=color:red;font-size:20px;font-weight:700><p>Using ad blocker (e.g. uBlock Origin, AdBlock, Adblock Plus, etc.)?<br>Please <a style=color:#00f;text-decoration:underline href=\"abp:subscribe?location=https://abp.perimeterx.com/whitelist.txt&title=PerimeterX\">click here</a> or disable your ad blocker temporarily.</p></div>", | |
i = document["createElement"]("div"); | |
i["innerHTML"] = r, e["appendChild"](i); | |
} | |
} | |
}, t["open"]("get", f), t["send"](); | |
} catch (n) {} | |
} | |
}()); | |
}, 0), Dn(), function () { | |
var n = o, | |
t = window["addEventListener"] || window["attachEvent"]; | |
if (t) { | |
var e = setTimeout(function () { | |
var n = o; | |
window["location"]["reload"](); | |
}, kn); | |
t("blur", function () { | |
clearTimeout(e), e = setTimeout(function () { | |
t("focus", function () { | |
var n = o; | |
window["location"]["reload"](); | |
}); | |
}, kn); | |
}); | |
} | |
}(); | |
} | |
function Mn(n, t) { | |
var e = o; | |
t || (t = window["location"]["href"]), n = n["replace"](/[\[\]]/g, "\\$&"); | |
var r = new RegExp("[?&]" + n + "(=([^&#]*)|&|#|$)")["exec"](t); | |
if (!r) return null; | |
var i = r[2]; | |
if (!i) return ""; | |
var a = 0 === i["indexOf"]("%2f") || 0 === i["indexOf"]("%2F"); | |
if (i = decodeURIComponent(i["replace"](/\+/g, " ")), n === "url" && !a) try { | |
i = atob(i); | |
} catch (n) {} | |
return i; | |
} | |
function Hn() { | |
var n = o; | |
if (!0 === window["pxRenderRecaptchaOnDemand"]) return Ln = !0, void (window["pxRenderRecaptcha"] = function () { | |
var n = o; | |
Nn() && window["grecaptcha"]["render"]("px-captcha", { | |
sitekey: yn, | |
callback: Cn, | |
theme: Y() | |
}); | |
}); | |
var t = document["getElementById"]("px-captcha"), | |
e = document["createElement"]("script"), | |
r = N(); | |
e["src"] = "https://www.recaptcha.net/recaptcha/api.js" + (r ? "?hl=" + r : ""), document["getElementsByTagName"]("head")[0]["insertBefore"](e, null), t["innerHTML"] = "<div class=g-recaptcha data-sitekey=" + yn + " data-callback=" + Cn + " data-theme=" + Y() + "></div>"; | |
} | |
function Nn() { | |
var n = o; | |
return "object" === v(window["grecaptcha"]) && "function" == typeof window["grecaptcha"]["reset"]; | |
} | |
function Yn(n) { | |
var t = o, | |
e = n["split"]("."); | |
return e["splice"](e["length"] - 2)["join"]("."); | |
} | |
function Un(n) { | |
var t = o; | |
!function () { | |
var n = o; | |
Tn.PX1070 = !0, Tn.PX1076 = Math["round"]((Vn() - qn) / 1e3), Jn(); | |
try { | |
window.sessionStorage.setItem("PX1077", "true"); | |
} catch (n) {} | |
}(); | |
var e = function () { | |
var n = window["_pxOnCaptchaSuccess"]; | |
if ("function" == typeof n) return n; | |
}(), | |
r = n && 0 === n["status"]; | |
if (Ln && !r && Nn()) window["grecaptcha"]["reset"]();else { | |
if (e) { | |
if (!r && ("PXu6b0qd2S" === window["_pxAppId"] || "PXETnJ2Y5H" === window["_pxAppId"] || "PXZM4JhD2X" === window["_pxAppId"])) if ("c" === window._pxAction && "object" === v(window["grecaptcha"]) && "function" == typeof window["grecaptcha"]["reset"]) window["grecaptcha"]["reset"]();else if (window._pxAction === K) { | |
var i = document["querySelector"]("script[src*=\"/captcha.js\"]"); | |
if (i) { | |
var a = document["createElement"]("script"); | |
a["src"] = i["src"], document["body"]["appendChild"](a); | |
} | |
} | |
return e(r); | |
} | |
if (r) { | |
var c = Mn("url"); | |
if (c) { | |
var d = document["createElement"]("a"); | |
d["href"] = c, Yn(d["hostname"]) === Yn(window["location"]["hostname"]) ? window["location"]["href"] = c : window["location"]["reload"](); | |
} else window["location"]["reload"](); | |
} else window["location"]["reload"](); | |
} | |
} | |
function Pn(n) { | |
var t = o, | |
e = function () { | |
var n = window["_pxOnMobileCaptchaSuccess"]; | |
if ("function" == typeof n) return n; | |
}(); | |
if (e) e(n && 0 === n.status);else { | |
var r = function (n) { | |
var t = o, | |
e = ""; | |
if (n) for (var r in n) n["hasOwnProperty"](r) && (e += r + "=" + encodeURIComponent(n[r]) + "&"); | |
return e["replace"](/&$/, ""); | |
}(n); | |
window["location"]["href"] = (0 === n.status ? On : In) + (r ? "?" + r : ""); | |
} | |
} | |
function zn(n) { | |
var t = o; | |
if (!(n = n || window["location"] && window["location"]["hostname"])) return ""; | |
var e = function (n) { | |
var t = o, | |
e = {}, | |
r = /([a-z\-0-9]{2,63})\.([a-z\.]{2,6})$/["exec"](n); | |
return r && r["length"] > 1 ? (e["domain"] = r[1], e["type"] = r[2], e["subdomain"] = n["replace"](e.domain + "." + e["type"], "")["slice"](0, -1), e) : null; | |
}(n); | |
return e ? "." + e["domain"] + "." + e["type"] : ""; | |
} | |
function jn(n) { | |
return setTimeout.bind(null, n ? Pn : Un, Sn); | |
} | |
function Wn() { | |
var n = o; | |
return "_" + window["_pxAppId"]["replace"](/px|PX/, "") + "handler"; | |
} | |
function Zn(n, t, e, r) { | |
!function (n) { | |
var t = o; | |
if (mn() === K) try { | |
-1 === n ? window["sessionStorage"]["setItem"](An, "true") : 0 === n && window["sessionStorage"]["removeItem"](An); | |
} catch (n) {} | |
}(n = parseInt(n)); | |
var i = { | |
status: n | |
}; | |
jn(!1)(i, !0); | |
} | |
function Jn() { | |
var n = Wn(); | |
window[n] && "function" == typeof window[n].PX1078 && window[n].PX1078(Tn); | |
} | |
function Vn() { | |
return window.performance && "function" == typeof performance.now ? performance.now() : +new Date(); | |
} | |
var _n = setInterval(function () { | |
var n = o; | |
if ("string" != typeof location["protocol"] || 0 !== location["protocol"]["indexOf"]("http") || function () { | |
var n = o; | |
return !!document.querySelector("div#px-captcha"); | |
}()) { | |
clearInterval(_n); | |
var t = 0, | |
e = !1; | |
window._pxAction = "c", window["_pxMobile"] = !1; | |
var r, | |
i = "__" + window["_pxAppId"] + "__"; | |
window[i] = function () { | |
e = !0; | |
}, window["handleCaptcha"] = function (n) { | |
!function n(r) { | |
var i = o; | |
if (Tn.PX645 = !0, Jn(), !e && t < 6) return t++, setTimeout(n["bind"](this, r), 250); | |
var a = Wn(); | |
if (window[a] && "function" == typeof window[a].PX763) { | |
var c = function (n, t, e) { | |
var r = o; | |
return { | |
PX754: !1, | |
PX755: n, | |
PX756: t, | |
PX757: window["location"]["hostname"] | |
}; | |
}(r, "reCaptcha"); | |
window[a].PX763(c), window[a].PX764 = Zn; | |
} else !function n(t, e, r, i) { | |
var a = o, | |
c = function () { | |
++Fn < Bn["length"] ? n(t, e, r, i) : d({ | |
status: 1 | |
}); | |
}, | |
d = jn(r), | |
u = new XMLHttpRequest(); | |
i = i || {}, u["open"]("POST", Bn[Fn]), u["setRequestHeader"]("Content-Type", "application/json"), u["addEventListener"]("error", c), u["addEventListener"]("cancel", function () { | |
d({ | |
status: 2 | |
}); | |
}), u["addEventListener"]("load", function () { | |
var n = o; | |
if (200 === u["status"]) try { | |
var t = JSON["parse"](u["responseText"]); | |
return 0 !== t["status"] || r || (t["cookies"] && t["cookies"]["length"] > 0 ? function (n) { | |
for (var t = o, e = 0; e < n["length"]; e++) { | |
var r = n[e]["split"]("|"), | |
i = r[1]; | |
if (/_px\d?/["test"](i)) { | |
var a = r[2], | |
c = r[3], | |
d = r[4]; | |
try { | |
var u = void 0, | |
f = void 0, | |
w = new Date(+new Date() + 1e3 * a)["toUTCString"](); | |
w = w["replace"](/GMT$/, "UTC"), void 0 === d || d !== "true" && !0 !== d || (f = zn()), u = f ? [i, "=", c, "; expires=", w, "; path=/", "; domain=", f] : [i, "=", c, "; expires=", w, "; path=/"], document["cookie"] = u["join"](""); | |
} catch (n) {} | |
} | |
} | |
}(t["cookies"]) : function () { | |
var n = o; | |
document["cookie"]["split"](";")["filter"](function (n) { | |
return /_px\d?=/["test"](n); | |
})["forEach"](function (n) { | |
var t = o; | |
n = n["replace"](/(_px\d?=).*/, "$1") + "; expires=Thu, 01 Jan 1970 00:00:01 GMT;"; | |
var e = zn(); | |
e && (n = n + "; domain=" + e), document["cookie"] = n; | |
}); | |
}()), d(t); | |
} catch (n) {} else u["status"] >= 400 && c(); | |
d({ | |
status: 3 | |
}); | |
}); | |
var f = window["_pxUuid"] || Mn("uuid") || i["uuid"], | |
w = window["_pxVid"] || Mn("vid") || i["vid"]; | |
u["send"](JSON["stringify"]({ | |
appId: window["_pxAppId"], | |
uuid: f, | |
vid: w, | |
cs: i.cs, | |
sessionUuid: i["uuid"], | |
tag: i["tag"], | |
mobile: r, | |
pxCaptcha: btoa(JSON["stringify"]({ | |
r: t, | |
v: w, | |
u: f | |
})), | |
captchaType: e, | |
formDisplayed: Rn, | |
hostname: window["location"]["hostname"], | |
request: { | |
url: window["location"]["href"] | |
} | |
})); | |
}(r, "reCaptcha", !1); | |
}(n); | |
}, function (n) { | |
var t = o; | |
void 0 === document.readyState || document.readyState !== "interactive" && document.readyState !== "complete" ? (O.length || I(function () { | |
Q = Q || h(), function (n) { | |
var o = void 0; | |
if (n && n.length) { | |
for (var t = 0; t < n.length; t++) try { | |
n[t].runLast && "function" != typeof o ? o = n[t].handler : n[t].handler(); | |
} catch (n) {} | |
"function" == typeof o && o(), n = []; | |
} | |
}(O); | |
}), O.push({ | |
handler: n | |
})) : (Q = Q || h(), n()); | |
}(Hn), r = function (n) { | |
Gn = n, e = !0; | |
}, window[Wn()] = { | |
PX762: function () { | |
var n = o, | |
t = Array["prototype"]["slice"]["call"](arguments); | |
r["apply"](this, t); | |
} | |
}, !0 !== window["pxRenderRecaptchaOnDemand"] && function () { | |
var n = o, | |
t = [window["_pxJsClientSrc"]]; | |
window["_pxAppId"] && (window["_pxFirstPartyEnabled"] && t["push"](g() + "//client.perimeterx.net/" + window["_pxAppId"] + "/main.min.js"), t["push"](g() + "//client.px-cdn.net/" + window._pxAppId + "/main.min.js")), function n() { | |
var e = o, | |
r = document["createElement"]("script"); | |
r["src"] = t["shift"](), document["getElementsByTagName"]("head")[0]["insertBefore"](r, null), t["length"] > 0 && (r["onerror"] = function () { | |
var t = o; | |
r["parentNode"]["removeChild"](r), n(); | |
}); | |
}(); | |
}(), Kn(); | |
} | |
}, 250); | |
}(); | |
} catch (n) { | |
new Image().src = "https://collector-a.perimeterx.net/api/v2/collector/clientError?r=" + encodeURIComponent('{"appId":"' + (window._pxAppId || "") + '","name":"' + n.name + '","line":"' + (n.lineNumber || n.line) + '","script":"' + (n.fileName || n.sourceURL || n.script) + '","stack":"' + (n.stackTrace || n.stack || "").replace(/"/g, '"') + '","message":"' + (n.message || "").replace(/"/g, '"') + '"}'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { parse } = require("@babel/parser"); | |
const generate = require("@babel/generator").default; | |
const traverse = require("@babel/traverse").default; | |
const t = require('@babel/types'); | |
const atob = require('atob'); | |
const btoa = require('btoa'); | |
const { readFileSync } = require('fs'); | |
const code = readFileSync('./cap.js', 'utf-8') | |
const ast = parse(code); | |
// from PX script | |
const dc = (o) => { | |
var t = atob(o) | |
var e = t.charCodeAt(0) | |
var r = "" | |
for (i = 1; i < t.length; ++i) { | |
r += String.fromCharCode(e ^ t.charCodeAt(i)); | |
} | |
return r | |
} | |
// StackOverflow (https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-jav) | |
function isBase64(str) { | |
if (str ==='' || str.trim() ===''){ return false; } | |
try { | |
return btoa(atob(str)) == str; | |
} catch (err) { | |
return false; | |
} | |
} | |
traverse(ast, { | |
CallExpression(path) { | |
if(path.node.callee.name === 'atob' && path.node.arguments.length === 1 && path.node.arguments[0].type === 'StringLiteral') { | |
path.replaceWith(t.stringLiteral(atob(path.node.arguments[0].value))) | |
path.skip() | |
} else if(path.node.arguments.length === 1 && path.node.arguments[0].type === 'StringLiteral') { | |
// These are the calls to the Base64 Decode | |
if(path.node.callee.name === 'R') { | |
if (isBase64(path.node.arguments[0].value)) { | |
path.replaceWith(t.stringLiteral(atob(path.node.arguments[0].value))) | |
path.skip(); | |
} | |
// Otherwise its probably a call to a decrypt | |
} else { | |
try { | |
const dec = dc(path.node.arguments[0].value) | |
if (dec) { | |
path.replaceWith(t.stringLiteral(dec)) | |
path.skip() | |
} | |
} catch {} | |
} | |
} | |
} | |
}) | |
console.log(generate(ast, {}, code).code) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi how can I contact you regarding PX-CAPTCHA?