reCAPTCHA Helper

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

Pada tanggal 05 Februari 2018. Lihat %(latest_version_link).

// ==UserScript==
// @name         reCAPTCHA Helper
// @icon         https://www.gstatic.com/recaptcha/admin/favicon.ico
// @version      1.1.3
// @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://greatest.deepsurf.us/scripts/18449-recaptcha-form-autosubmit/
// @homepageURL  https://greatest.deepsurf.us/scripts/18449-recaptcha-form-autosubmit/
// @supportURL   https://greatest.deepsurf.us/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 (isNotBlackListed(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() {
    console.log("Ready to help");
    var exec = function exec() {
        try {
            window.grecaptcha.execute();
        } catch(e) {
            console.log(e);
            setTimeout(exec, 50);
        }
    };
    setTimeout(exec, 50);
    [...document.forms].forEach(form => {
        if (form.innerHTML.includes("google.com/recaptcha")) {
            var solveCheck = setInterval(function() {
                if (!!grecaptcha.getResponse()) {
                    clearInterval(solveCheck);
                    form.submit();
                }
            }, 50);
        }
    });
}

function isNotBlackListed(url) {
    return blacklistedUrls.every(bu => !url.includes(bu));
}
// ==/Code==