ABL GROUPER

Group AntiBotLinks into one place for better manual solving

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

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

(I already have a user script manager, let me install it!)

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.

(I already have a user style manager, let me install it!)

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


    })

})();