(function() {
var done = false;
var retryCount = 0;
window.startVerify = function() {
if (done) return;
done = true;
var widget = document.getElementById('widget');
var spinner = document.getElementById('spinner');
var check = document.getElementById('checkmark');
var label = document.getElementById('widget-label');
var errMsg = document.getElementById('error-msg');
var cbBox = document.getElementById('cb-box');
// Transition to "verifying" state. Every element is optional: when the
// challenge content is hidden (Visible=false) none of these nodes exist,
// but verification must still proceed so the bypass cookie gets set.
if (widget) {
widget.classList.add('verifying');
if (widget.hasAttribute('aria-checked')) {
widget.setAttribute('aria-checked', 'mixed');
}
}
if (cbBox) { cbBox.style.display = 'none'; }
if (spinner) { spinner.style.display = 'block'; }
if (label) { label.textContent = 'Verifying\u2026'; }
// POST nonce to verification endpoint
fetch('/_challenge/complete', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
nonce: "6e1185af822b90cce9704e48c2436120.1782178542.78c36060d6e5fe56f278d6af9013d646efbb9b6ea7ca49ada6b91151e5e39116",
path: "/"
}),
credentials: 'same-origin'
})
.then(function(res) {
if (!res.ok) { throw new Error('bad status ' + res.status); }
return res.json();
})
.then(function(data) {
if (!data.success) { throw new Error('not ok'); }
// Transition to "verified" state (cosmetic; nodes may be absent)
if (spinner) { spinner.style.display = 'none'; }
if (check) { check.style.display = 'block'; }
if (widget) {
widget.classList.remove('verifying');
widget.classList.add('verified');
if (widget.hasAttribute('aria-checked')) {
widget.setAttribute('aria-checked', 'true');
}
}
if (label) { label.textContent = 'Verified'; }
setTimeout(function() {
window.location.replace(data.redirect || '/');
}, 600);
})
.catch(function() {
done = false;
// js_probe: silently retry once before surfacing the error.
if (retryCount < 1) {
retryCount++;
setTimeout(window.startVerify, 2000);
return;
}
if (spinner) { spinner.style.display = 'none'; }
if (cbBox) { cbBox.style.display = 'block'; }
if (widget) {
widget.classList.remove('verifying');
if (widget.hasAttribute('aria-checked')) {
widget.setAttribute('aria-checked', 'false');
}
}
if (label) { label.textContent = 'I am human'; }
if (errMsg) { errMsg.style.display = 'block'; }
});
};
// js_probe mode: auto-fire after configured delay — no user interaction required.
window.addEventListener('DOMContentLoaded', function() {
setTimeout(window.startVerify, 501);
});
}());
x server