reCAPTCHA Helper

This automatically clicks or executes on any reCAPTCHA on the webpage and submits its form directly after you solved it.

As of 2018-02-02. See the latest version.

// ==UserScript==
// @name         reCAPTCHA Helper
// @icon         https://www.gstatic.com/recaptcha/admin/favicon.ico
// @version      1.1.1
// @description  This automatically clicks or executes on any reCAPTCHA on the webpage and submits its form directly after you solved it.
// @author       Royalgamer06
// @include      *
// @grant        none
// @run-at       document-start
// @namespace    https://greasyforks.org/scripts/18449-recaptcha-form-autosubmit/
// @homepageURL  https://greasyforks.org/scripts/18449-recaptcha-form-autosubmit/
// @supportURL   https://greasyforks.org/scripts/18449-recaptcha-form-autosubmit/feedback/
// ==/UserScript==

// ==Configuration==
const blacklistedUrls = [
    "miped.ru",
    "www.indiegala",
    "https://gleam.io/"
];
// ==/Configuration==

// ==Code==
const url = window.location !== window.parent.location ? document.referrer : document.location.href;

if (!isBlackListed(url)) {
    if (location.href.includes("google.com/recaptcha")) {
        var clickCheck = setInterval(function() {
            if (document.querySelectorAll(".recaptcha-checkbox-checkmark").length > 0) {
                clearInterval(clickCheck);
                document.querySelector(".recaptcha-checkbox-checkmark").click();
            }
        }, 50);
    } else {
        window.onload = readyToHelp;
    }
}

function readyToHelp() {
    try {
        grecaptcha.execute();
    } finally {
        [...document.querySelectorAll(".g-recaptcha")].forEach(captcha => {
            let form = captcha.closest("form");
            var solveCheck = setInterval(function() {
                if (grecaptcha.getResponse().length > 0) {
                    clearInterval(solveCheck);
                    form.submit();
                }
            }, 50);
        });
    }
}

function isBlackListed(url) {
    return blacklistedUrls.every(bu => !url.includes(bu));
}
// ==/Code==
长期地址
遇到问题?请前往 GitHub 提 Issues。