Reboxlinks skipper Auto-Clicker

Auto skip

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         Reboxlinks skipper Auto-Clicker
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Auto skip
// @author       Shiva
// @match        *://reboxlinks.xyz/*
// @match        *://*.reboxlinks.xyz/*
// @match        *://marathivacancy.com/*
// @match        *://*.marathivacancy.com/*
// @grant        unsafeWindow
// @run-at       document-start
// @license      GPL-3.0-only
// ==/UserScript==

(function() {
    'use strict';

    // ==================== TIMEHOOKER-STYLE TIMER MANIPULATION ====================

    const win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;

    const originalSetInterval = win.setInterval;
    win.setInterval = function(callback, delay, ...args) {
        const newDelay = Math.min(delay, 50);  // Even faster - 50ms max
        return originalSetInterval.call(win, callback, newDelay, ...args);
    };

    const originalSetTimeout = win.setTimeout;
    win.setTimeout = function(callback, delay, ...args) {
        const newDelay = Math.min(delay, 50);  // Even faster - 50ms max
        return originalSetTimeout.call(win, callback, newDelay, ...args);
    };

    const originalDateNow = Date.now;
    let timeOffset = 0;
    Date.now = function() {
        return originalDateNow() + timeOffset;
    };

    setInterval(() => {
        timeOffset += 950;  // 20x speed
    }, 50);

    // ==================== AUTO-CLICKER LOGIC ====================

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initAutoClicker);
    } else {
        setTimeout(initAutoClicker, 100);
    }

    function initAutoClicker() {
        const CONFIG = {
            checkInterval: 100,    // Check every 100ms - FAST
            clickDelay: 0,         // NO DELAY - INSTANT CLICK
            maxWaitTime: 120000,
            showLogs: false,
            enableTimerBypass: true
        };

        let processedButtons = [];
        let intervalId = null;
        let isScriptStopped = false;
        let isOnStep4 = false;
        let tp98TimerFinished = false;
        const currentSite = window.location.hostname;

        function logClick(buttonText) {
            console.log(`%c✓ ${buttonText}`, 'color: #4CAF50; font-weight: bold; font-size: 13px');
        }

        function checkTP98TimerFinished() {
            try {
                const tpText = document.getElementById('tp-text');
                if (tpText) {
                    const text = (tpText.textContent || tpText.innerText || '').toLowerCase();
                    const style = window.getComputedStyle(tpText);
                    if (text.includes('you may continue') && style.display !== 'none') {
                        return true;
                    }
                }

                const tp98Link = document.getElementById('tp98');
                if (tp98Link) {
                    const style = window.getComputedStyle(tp98Link);
                    if (style.display === 'block') {
                        const button = tp98Link.querySelector('button.tp-btn.tp-blue');
                        if (button) {
                            const btnStyle = button.style.pointerEvents || 'auto';
                            if (btnStyle === 'auto') {
                                return true;
                            }
                        }
                    }
                }
            } catch (e) {
                // Silently fail
            }
            return false;
        }

        function checkForStep4() {
            try {
                const pageText = document.body?.innerText || document.body?.textContent || '';

                const step4Patterns = [
                    /step\s*4\s*\/\s*4/i,
                    /step\s*4\s*of\s*4/i,
                    /You are currently on step 4\/4/i,
                    /You are currently on step 4 of 4/i
                ];

                for (let pattern of step4Patterns) {
                    if (pattern.test(pageText)) return true;
                }

                const stepElements = document.querySelectorAll('[class*="step"], [id*="step"], .progress, .stepper');
                for (let el of stepElements) {
                    const text = el.textContent || el.innerText || '';
                    for (let pattern of step4Patterns) {
                        if (pattern.test(text)) return true;
                    }
                }
            } catch (e) {
                // Silently fail
            }
            return false;
        }

        function stopScript(reason = 'Completed') {
            if (isScriptStopped) return;

            isScriptStopped = true;

            if (intervalId) {
                clearInterval(intervalId);
                intervalId = null;
            }

            updateBadge('stopped', reason);
        }

        function wasProcessed(button) {
            return processedButtons.some(b => b === button);
        }

        function markProcessed(button) {
            processedButtons.push(button);
        }

        function isInsideTP98Link(button) {
            try {
                let parent = button.parentElement;
                while (parent) {
                    if (parent.id === 'tp98' && parent.tagName === 'A') {
                        return true;
                    }
                    parent = parent.parentElement;
                }
            } catch (e) {
                // Silently fail
            }
            return false;
        }

        function enableButton(button) {
            if (!button) return;

            try {
                button.disabled = false;
                button.removeAttribute('disabled');
                button.style.pointerEvents = 'auto';
                button.style.opacity = '1';
                button.style.cursor = 'pointer';
                button.classList.remove('disabled');
            } catch (e) {
                // Silently fail
            }
        }

        function isVisible(button) {
            if (!button) return false;

            try {
                const rect = button.getBoundingClientRect();
                const style = window.getComputedStyle(button);
                return (
                    rect.width > 0 &&
                    rect.height > 0 &&
                    style.display !== 'none' &&
                    style.visibility !== 'hidden' &&
                    style.opacity !== '0'
                );
            } catch (e) {
                return false;
            }
        }

        function tryClick(button, name) {
            if (!button || wasProcessed(button) || isScriptStopped) return false;

            try {
                // Smart tp98 handling
                if (isInsideTP98Link(button)) {
                    if (!tp98TimerFinished) {
                        return false;
                    }
                }

                // Skip Continue on step 4/4
                if (isOnStep4) {
                    const text = button.textContent.toLowerCase().trim();
                    if (text === 'continue' || text.includes('continue')) {
                        markProcessed(button);
                        return false;
                    }
                }

                if (!isVisible(button)) {
                    return false;
                }

                const text = button.textContent.trim();
                enableButton(button);

                // INSTANT CLICK - NO DELAY
                try {
                    button.click();

                    try {
                        const clickEvent = new MouseEvent('click', {
                            bubbles: true,
                            cancelable: true,
                            view: window
                        });
                        button.dispatchEvent(clickEvent);
                    } catch (e) {
                        // Silently fail
                    }

                    markProcessed(button);
                    logClick(text);
                } catch(e) {
                    // Silently fail
                }

                return true;
            } catch (e) {
                return false;
            }
        }

        function speedUpTimers() {
            if (!CONFIG.enableTimerBypass || isOnStep4) {
                return;
            }

            try {
                const timerElements = document.querySelectorAll(
                    '[id*="timer"], [class*="timer"], [id*="countdown"], [class*="countdown"], ' +
                    '[id*="wait"], [class*="wait"], .time, #time'
                );

                timerElements.forEach(el => {
                    try {
                        const text = el.textContent || '';
                        if (text.match(/\d+/)) {
                            el.textContent = '0';  // Set to 0 instantly
                            el.style.opacity = '0';
                            el.style.pointerEvents = 'none';
                        }
                    } catch (e) {
                        // Silently fail
                    }
                });
            } catch (e) {
                // Silently fail
            }
        }

        function checkForButtons() {
            try {
                const wasTP98Finished = tp98TimerFinished;
                tp98TimerFinished = checkTP98TimerFinished();

                const wasOnStep4 = isOnStep4;
                isOnStep4 = checkForStep4();

                if (isOnStep4 && !wasOnStep4) {
                    updateBadge('step4');
                }

                if (isScriptStopped) return;

                speedUpTimers();

                const allButtons = document.querySelectorAll('button, input[type="button"], input[type="submit"]');
                allButtons.forEach(btn => {
                    enableButton(btn);
                });

                // Priority checks - INSTANT
                const btn6 = document.getElementById('btn6');
                if (btn6 && !wasProcessed(btn6)) {
                    if (tryClick(btn6, 'btn6')) return;
                }

                const tpButtons = document.querySelectorAll('button.tp-btn:not(.processed)');
                for (let btn of tpButtons) {
                    if (!wasProcessed(btn)) {
                        if (tryClick(btn, 'tp-btn')) return;
                    }
                }

                const tpBlueButtons = document.querySelectorAll('button.tp-blue:not(.processed)');
                for (let btn of tpBlueButtons) {
                    if (!wasProcessed(btn)) {
                        if (tryClick(btn, 'tp-blue')) return;
                    }
                }

                for (let btn of allButtons) {
                    const text = btn.textContent?.toLowerCase().trim() || '';

                    if ((text.includes('continue') ||
                         text.includes('get link') ||
                         text.includes('unlock') ||
                         text.includes('proceed') ||
                         text.includes('verify') ||
                         text.includes('next')) &&
                        !wasProcessed(btn)) {

                        if (tryClick(btn, 'action-btn')) return;
                    }
                }
            } catch (e) {
                // Silently fail
            }
        }

        function updateBadge(state = 'running', reason = '') {
            try {
                const badge = document.getElementById('auto-clicker-badge');
                if (!badge) return;

                let bgColor, text;

                switch(state) {
                    case 'running':
                        bgColor = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)';
                        text = `⚡ ${processedButtons.length}`;
                        break;
                    case 'step4':
                        bgColor = '#FF9800';
                        text = '⚠️ Step 4/4';
                        break;
                    case 'stopped':
                        bgColor = '#F44336';
                        text = `🛑`;
                        break;
                    case 'complete':
                        bgColor = '#4CAF50';
                        text = `✓`;
                        break;
                }

                badge.innerHTML = `
                    <div style="
                        position: fixed;
                        bottom: 20px;
                        right: 20px;
                        background: ${bgColor};
                        color: white;
                        padding: 8px 14px;
                        border-radius: 20px;
                        font-family: 'Segoe UI', Arial, sans-serif;
                        font-size: 11px;
                        font-weight: 600;
                        z-index: 9999999;
                        box-shadow: 0 2px 8px rgba(0,0,0,0.2);
                    ">
                        ${text}
                    </div>
                `;
            } catch (e) {
                // Silently fail
            }
        }

        function createIndicator() {
            try {
                const existing = document.getElementById('auto-clicker-badge');
                if (existing) existing.remove();

                const indicator = document.createElement('div');
                indicator.id = 'auto-clicker-badge';
                document.body.appendChild(indicator);

                updateBadge('running');
            } catch (e) {
                setTimeout(createIndicator, 500);
            }
        }

        function start() {
            if (checkForStep4()) {
                isOnStep4 = true;
            }

            setTimeout(createIndicator, 500);

            setTimeout(() => {
                checkForButtons();
                if (!isOnStep4) updateBadge('running');

                intervalId = setInterval(() => {
                    checkForButtons();
                    if (!isOnStep4 && !isScriptStopped) updateBadge('running');
                }, CONFIG.checkInterval);  // Checks every 100ms now

                setTimeout(() => {
                    if (!isScriptStopped) {
                        stopScript('Time limit');
                        updateBadge('complete');
                    }
                }, CONFIG.maxWaitTime);

            }, 500);  // Reduced startup delay
        }

        if (document.readyState === 'complete') {
            start();
        } else {
            window.addEventListener('load', start);
        }

        document.addEventListener('visibilitychange', () => {
            if (!document.hidden && !isScriptStopped) {
                checkForButtons();
            }
        });
    }

})();