ABL GROUPER

Group AntiBotLinks into one place for better manual solving

// ==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)


    })

})();