4chan(nel) fallback captcha

fallback captcha for native extension

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name           4chan(nel) fallback captcha
// @author         sanya_v_litvyak
// @version        0.1.1
// @description    fallback captcha for native extension
// @include        http://boards.4chan.org/*
// @include        https://boards.4chan.org/*
// @include        http://boards.4channel.org/*
// @include        https://boards.4channel.org/*
// @run-at         document-end
// @namespace https://greatest.deepsurf.us/users/173264
// ==/UserScript==

// >>>>>>>>>>>>>>>>>>>>>>>>>>READ THIS OTHERWISE IT WON'T WORK<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// This will work only if scripts from google.com is blocked. (and for good reason)
// Add the following to ad blocker filter:
// ||www.google.com/recaptcha/api.js*$script,domain=boards.4channel.org|boards.4chan.org,important

(function() {
    'use strict';

    //ref https://pastebin.com/jYZUJKvb
    function fixCaptcha(){
        var url = "https://www.google.com/recaptcha/api/fallback?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc&hl=en",
            answerBox = '<div style="border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px; height: 60px; width: 300px;"><textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 200px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; "></textarea></div>';
        var iframe = document.createElement('iframe');
        var name = "#qrCaptchaContainer";
        //var name = "#g-recaptcha";
        document.querySelector(name).appendChild(iframe);
        document.querySelector(name + " iframe").setAttribute("src", url);
        document.querySelector(name + " iframe").height = "350px;";
        document.querySelector(name).setAttribute("style", "height: 350px;");
        document.querySelector(name).insertAdjacentHTML("beforeend", answerBox);
    }

    var bdNode = document.documentElement || document.body;
    var config = { childList: true, subtree: true };
    var callback = function(mutationsList, observer) {
        for(var mutation of mutationsList) {
            if (mutation.type == 'childList') {
                for(var node of mutation.addedNodes) {
                    if (node.id == 'qr' || node.id == 'quickReply') {
                        fixCaptcha();
                    }
                }
            }
        }
    };
    var observer = new MutationObserver(callback);
    observer.observe(document, config);
})();