ABL GROUPER

Group AntiBotLinks into one place for better manual solving

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         ABL GROUPER
// @description  Group AntiBotLinks into one place for better manual solving
// @version      1.0
// @author       WXC
// @match        *://*/*
// @grant        none
// @require      https://code.jquery.com/jquery-3.6.0.min.js
// @run-at document-idle
// @noframes
// @namespace https://greasyfork.org/users/713625
// ==/UserScript==

this.$ = this.jQuery = jQuery.noConflict(true);

(function() {
    'use strict';


    var $ = window.jQuery;
    $(document).ready(function() {



        var auto_last_word = 1; // 0/1 auto click last word (1)
        var resize_small_q = 1; // 0/1 scale up small-height question (1)



        setTimeout( function() {


            function cl( text ) {
                var cssRule = "border-left: 3px solid #f1b44c; padding-left: 5px; ";
                setTimeout(console.log.bind(console, "%c"+ text, cssRule), 0);
            }


            if( $("#antibotlinks").length > -1 ) {

                var abl_q_src = $("#antibotlinks_reset").prev("img").attr("src");

                var abl_tmp = new Image();
                abl_tmp.src = abl_q_src;
                var abl_q_width = abl_tmp.clientWidth;
                var abl_q_height = abl_tmp.clientHeight;
                var my_height_q = '';
                var my_height_b = '';

                if( resize_small_q == 1 ) {

                    my_height_q = 35; // question img height (35)
                    my_height_b = 50; // buttons img height (50)

                    // you can set own dimension and scale
                    if( abl_q_width < 150 ) my_height_q *= 1.3; // 1.3 = +30%
                }

                var abl_q_img = '<img src="' + abl_q_src +'" style="height: '+ my_height_q +'px !important; ">';


                var img = '';
                var rel = '';
                var abl_btn_data = '';
                var abl_cnt = 0;
                var abl_clicks = 0;


                $("#antibotlinks").closest('form').find('a').each( function() {

                    rel = $(this).attr('rel')
                    img = $(this).find("img").attr("src");

                    if( rel > 0 && img.length > 0 ) {
                        abl_btn_data += `<img src="`+ img +`" height="`+ my_height_b +`" data-abl="`+ rel +`" class="abl_btn abl_abl_hand">`;
                        abl_cnt ++;
                    }

                });



                if( $("#antibotlinks").closest('form').is(":visible") ) {

                    cl( "ABL visible" );

                    if(!$("#i_bg").length) {

                        $("html").append(`
                        <div id="i_bg" style="position: fixed; z-index: 99999999; background-color: #212529; opacity: 0.98; top: 0px; left: 0px; width: 100%; height: 100%; display: none;">
                        <div id="i_box" style="position: fixed; z-index: 99999998; top: 10%; left: 50%; transform: translateX(-50%); text-align: center; font: bold 16px arial; line-height: 150%; opacity: 1; border: 1px solid #000; padding: 50px; border-radius: 10px;" class="abl_bg_light">
                        `+ abl_q_img +`
                        <br><br>

                        <div style="font: 14px arial;">
                        <span class="abl_theme" style="float:left; margin: 0px 20px;">Hover to THEME</span>
                        <span class="abl_reset abl_abl_hand" style="float:right; margin: 0px 20px;">Click to RESET</span>
                        </div>

                        <br><br><br>
                        `+ abl_btn_data +`

                        </div>
                        </div>
                        <style>
                        #i_box a, #i_box a:visited { line-height: 150%; font-size: 24px; color: #000000; }
                        .abl_btn { margin: 0px 10px; border-bottom: 1px solid #ccc; }
                        .abl_abl_hand { cursor: pointer; }
                        .abl_bg_light { background-color: #ffffff; color: #cccccc; }
                        .abl_bg_dark { background-color: #000000; color: #303030
                        </style>
                        `);

                        $("#i_bg").fadeIn("fast");


                        var tit1 = document.title;
                        setInterval(function(){
                            var title = document.title;
                            var tit2 = "ABL!";
                            document.title = (title == tit2 ? tit1 : tit2 );
                        }, 1000);


                    }

                }
                else {
                    cl( "ABL not visible" );
                }



                $(document).on("click", "img[data-abl]", function(e){

                    $("#antibotlinks").val( $("#antibotlinks").val() + " "+ $(this).data("abl") ); // starting space needed!
                    $(this).hide();
                    abl_clicks++;

                    if( auto_last_word == 1 && abl_clicks == ( abl_cnt -1 ) ) { // auto click last word
                        $(".abl_btn:visible").click();
                        abl_clicks++;
                    }

                    if( abl_clicks == abl_cnt ) { // all btns clicked

                        $("#i_bg").fadeOut("fast");
                        $("#antibotlinks").closest('form').find(':submit').removeClass('d-none').show().css('display','block'); // try to display submit button
                        cl( "ABL solution:"+ $("#antibotlinks").val() );

                        // hide original buttons
                        for (let i = 1; i <= abl_cnt; i++) {
                            $("#antibotlinks").closest('form').find("a").eq(i).fadeOut();
                        }

                        $("#antibotlinks_reset").after(`<p>`+ $("#antibotlinks").val() +`</p>`);

                    }

                });



                $(document).on("click", ".abl_reset", function(e){ // reset

                    $("#antibotlinks").val("");
                    $("img[data-abl]").show();
                    abl_clicks = 0;
                    cl( abl_clicks );

                });



                $(document).on("mouseover", ".abl_theme", function() {
                    $("#i_box").toggleClass("abl_bg_light abl_bg_dark");
                });


            }
            else {
                cl( "No ABL detected" );
            }


        }, ( 2 * 1000 ) ); // wait for site fully load (sec)


    })

})();