4chan(nel) fallback captcha

fallback captcha for native extension

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==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);
})();