SmallShorts Advanced Multi-Step Bypass v3.1

Complete bypass for SmallShorts

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         SmallShorts Advanced Multi-Step Bypass v3.1
// @namespace    http://tampermonkey.net/
// @version      3.1
// @description  Complete bypass for SmallShorts
// @author       Shiva
// @match        https://smallshorts.com/*
// @match        https://*.smallshorts.com/*
// @match        https://india.hindivigyan.in/*
// @match        https://*.hindivigyan.in/*
// @match        https://paidinsurance.in/*
// @match        https://*.paidinsurance.in/*
// @match        https://loan.reelwealthreport.com/*
// @match        https://*.reelwealthreport.com/*
// @match        https://ww.smallshorts.com/*
// @match        https://devuploads.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=smallshorts.com
// @grant        GM_setValue
// @grant        GM_getValue
// @license      GPL-3.0-only
// @grant        window.close
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // ============================================
    // CONFIGURATION
    // ============================================
    const config = {
        debug: true,
        removeOverlays: false,  // DISABLED - was causing errors
        bypassAdblock: true,
        autoNavigate: true,
        removeTimers: true,
        autoClickDelay: 1500,
        maxWaitTime: 30000
    };

    // Track clicked elements
    const clickedElements = new Set();

    // ============================================
    // UTILITY FUNCTIONS
    // ============================================
    function log(message, type = 'info') {
        if (!config.debug) return;
        const prefix = '[SmallShorts v3.1]';
        const timestamp = new Date().toLocaleTimeString();
        switch(type) {
            case 'error': console.error(`${prefix} [${timestamp}] ❌`, message); break;
            case 'warn': console.warn(`${prefix} [${timestamp}] ⚠️`, message); break;
            case 'success': console.log(`%c${prefix} [${timestamp}] ✓ ${message}`, 'color: #00ff00; font-weight: bold'); break;
            case 'click': console.log(`%c${prefix} [${timestamp}] 🖱️ ${message}`, 'color: #00bfff; font-weight: bold'); break;
            default: console.log(`${prefix} [${timestamp}]`, message);
        }
    }

    function getCurrentDomain() {
        return window.location.hostname;
    }

    function clickElement(element, description) {
        if (!element) return false;

        const elementId = element.outerHTML.substring(0, 100);
        if (clickedElements.has(elementId)) {
            log(`Already clicked: ${description}`, 'warn');
            return false;
        }

        try {
            element.click();
            element.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));

            clickedElements.add(elementId);
            log(`Clicked: ${description}`, 'click');
            return true;
        } catch (e) {
            log(`Failed to click ${description}: ${e.message}`, 'error');
            return false;
        }
    }

    // ============================================
    // ADBLOCK DETECTION BYPASS
    // ============================================
    function bypassAdblockDetection() {
        log('Bypassing adblock detection...');

        // Override common adblock detection properties
        Object.defineProperty(window, 'adsbygoogle', {
            configurable: false,
            get: function() { return [{}]; },
            set: function() { return true; }
        });

        // Mock Google Tag Manager
        window.googletag = window.googletag || {
            cmd: [],
            pubads: function() {
                return {
                    enableSingleRequest: function(){},
                    collapseEmptyDivs: function(){},
                    setTargeting: function(){},
                    enableServices: function(){}
                };
            },
            defineSlot: function() { return { addService: function(){} }; },
            enableServices: function(){},
            display: function(){}
        };

        // Block common anti-adblock scripts
        const blockPatterns = [
            /adblock/i,
            /antiblock/i,
            /blockadblock/i,
            /antiAdBlock/i,
            /detect.*ad/i,
            /cloudflareinsights/i,
            /beacon\.min\.js/i
        ];

        // Override fetch
        const originalFetch = window.fetch;
        window.fetch = function(...args) {
            const url = args[0];
            if (typeof url === 'string' && blockPatterns.some(pattern => pattern.test(url))) {
                return Promise.resolve(new Response('{}', { status: 200 }));
            }
            return originalFetch.apply(this, args);
        };

        // Override XMLHttpRequest
        const originalOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open = function(method, url, ...rest) {
            if (typeof url === 'string' && blockPatterns.some(pattern => pattern.test(url))) {
                url = 'about:blank';
            }
            return originalOpen.call(this, method, url, ...rest);
        };
    }

    // ============================================
    // TIMER BYPASS
    // ============================================
    function bypassTimers() {
        log('Setting up timer bypass...');

        const originalSetTimeout = window.setTimeout;
        const originalSetInterval = window.setInterval;

        // Override setTimeout
        window.setTimeout = function(callback, delay, ...args) {
            if (delay > 3000 && config.removeTimers) {
                log(`Reduced timer from ${delay}ms to 500ms`);
                delay = 500;
            }
            return originalSetTimeout.call(this, callback, delay, ...args);
        };

        // Override setInterval
        window.setInterval = function(callback, delay, ...args) {
            if (delay >= 1000 && delay <= 2000 && config.removeTimers) {
                log(`Reduced interval from ${delay}ms to 500ms`);
                delay = 500;
            }
            return originalSetInterval.call(this, callback, delay, ...args);
        };
    }

    // ============================================
    // SAFE OVERLAY HIDING (NOT REMOVAL)
    // ============================================
    function hideOverlaySafely() {
        try {
            // Just hide the overlay, don't remove it
            const overlay = document.getElementById('overlay');
            if (overlay && overlay.style.display !== 'none') {
                overlay.style.display = 'none';
                log('Hidden overlay (not removed)', 'success');
            }

            // Re-enable scrolling
            if (document.body && document.body.style.overflow === 'hidden') {
                document.body.style.overflow = 'auto';
            }
        } catch (e) {
            // Silently ignore errors
        }
    }

    // ============================================
    // REMOVE ADS SAFELY
    // ============================================
    function removeAdsSafely() {
        try {
            const adSelectors = [
                '[class*="adsbygoogle"]',
                '[id*="div-gpt-ad"]'
            ];

            adSelectors.forEach(selector => {
                document.querySelectorAll(selector).forEach(element => {
                    try {
                        if (element.parentNode) {
                            element.remove();
                        }
                    } catch (e) {
                        // Silently ignore
                    }
                });
            });
        } catch (e) {
            // Silently ignore
        }
    }

    // ============================================
    // DOMAIN-SPECIFIC HANDLERS
    // ============================================

    // Handler for ww.smallshorts.com - IMPROVED
    async function handleSmallShortsWW() {
        log('Handling ww.smallshorts.com...', 'success');

        // Hide timer elements
        setTimeout(() => {
            const timerElements = document.querySelectorAll('.countdown, .timer, #timer, #countdown');
            timerElements.forEach(el => {
                el.textContent = '0';
                el.style.display = 'none';
            });
        }, 500);

        // Poll for "Get Link" button
        const selectors = [
            'a.get-link',
            '.btn.btn-success.btn-lg.get-link',
            'a[href*="devuploads"]',
            'a.btn.get-link',
            'button.get-link',
            '#get-link',
            'a[class*="get-link"]'
        ];

        let attempts = 0;
        const maxAttempts = 60;

        const checkForButton = setInterval(() => {
            attempts++;

            for (const selector of selectors) {
                const button = document.querySelector(selector);
                if (button) {
                    const isVisible = button.offsetParent !== null;
                    const isEnabled = !button.hasAttribute('disabled') && !button.classList.contains('disabled');

                    if (isVisible) {
                        if (!isEnabled) {
                            button.removeAttribute('disabled');
                            button.classList.remove('disabled');
                        }

                        if (clickElement(button, 'Get Link button')) {
                            clearInterval(checkForButton);
                            log('Successfully navigated to final link!', 'success');
                            return;
                        }
                    }
                }
            }

            if (attempts >= maxAttempts) {
                log('Max attempts reached, button not found', 'error');
                clearInterval(checkForButton);
            }
        }, 500);
    }

    // Handler for india.hindivigyan.in
    async function handleHindivigyan() {
        log('Handling hindivigyan.in...', 'success');

        setTimeout(() => {
            const selectors = ['a.continue-btn', '#continue-btn', 'a[href*="hindivigyan.in"]'];
            for (const sel of selectors) {
                const btn = document.querySelector(sel);
                if (btn) {
                    clickElement(btn, 'Continue button');
                    break;
                }
            }
        }, 1000);

        setTimeout(() => {
            const initialButton = document.getElementById('initialButton');
            if (initialButton) {
                clickElement(initialButton, 'I\'M NOT ROBOT button');
                setTimeout(() => hideOverlaySafely(), 500);
            }
        }, 4000);

        setTimeout(() => {
            const images = document.querySelectorAll('img[alt*="CLICK"], img[alt*="GENERATE"], img[alt*="DOWNLOAD"]');
            images.forEach((img, index) => {
                setTimeout(() => clickElement(img, `Image button ${index + 1}`), index * 1000);
            });
        }, 7000);
    }

    // Handler for paidinsurance.in
    async function handlePaidInsurance() {
        log('Handling paidinsurance.in...', 'success');

        hideOverlaySafely();

        setTimeout(() => {
            const img1 = document.querySelector('img[alt*="CLICK 2X"], img[src*="wp-safelink/assets/2.png"]');
            if (img1 && clickElement(img1, 'First image (GENERATE)')) {
                setTimeout(() => {
                    const img2 = document.querySelector('img[alt*="DOWNLOAD LINK"], img#image3, img[src*="wp-safelink/assets/4.png"]');
                    if (img2 && clickElement(img2, 'Second image (DOWNLOAD)')) {
                        setTimeout(() => {
                            const form = document.getElementById('redirectForm');
                            if (form) {
                                log('Submitting redirect form...', 'success');
                                form.submit();
                            }
                        }, 500);
                    }
                }, 1500);
            }
        }, 1500);
    }

    // Handler for loan.reelwealthreport.com
    async function handleReelWealth() {
        log('Handling reelwealthreport.com...', 'success');

        hideOverlaySafely();

        setTimeout(() => {
            const robotBtn = document.querySelector('button[onclick*="proceedNext"], form#redirectForm button');
            if (robotBtn) clickElement(robotBtn, 'I\'M NOT ROBOT button');
        }, 1500);

        setTimeout(() => {
            const images = document.querySelectorAll('img[alt*="CLICK 2X"], img[alt*="GENERATE"], img[alt*="DOWNLOAD"], img#image3');
            images.forEach((img, index) => {
                setTimeout(() => clickElement(img, `Image ${index + 1}`), index * 1500);
            });
        }, 3500);
    }

    // Handler for main smallshorts.com
    async function handleSmallShorts() {
        log('Handling smallshorts.com...', 'success');

        hideOverlaySafely();

        setTimeout(() => {
            document.querySelectorAll('button[disabled], a[disabled]').forEach(btn => {
                btn.removeAttribute('disabled');
                btn.classList.remove('disabled');
            });

            const continueBtn = document.querySelector('a.continue-btn, button.continue-btn, .get-link, #continue-btn');
            if (continueBtn) clickElement(continueBtn, 'Continue button');
        }, 1500);
    }

    // ============================================
    // SAFE OBSERVER - NO AGGRESSIVE REMOVAL
    // ============================================
    function initSafeObserver() {
        log('Initializing safe observer...');

        let lastCheck = 0;
        const observer = new MutationObserver(() => {
            const now = Date.now();
            if (now - lastCheck > 3000) {
                lastCheck = now;
                hideOverlaySafely();
                removeAdsSafely();
            }
        });

        const observeBody = () => {
            if (document.body) {
                observer.observe(document.body, {
                    childList: true,
                    subtree: true
                });
                log('Safe observer started', 'success');
            } else {
                setTimeout(observeBody, 100);
            }
        };

        observeBody();
    }

    // ============================================
    // INITIALIZATION
    // ============================================
    function init() {
        const domain = getCurrentDomain();
        log(`🚀 Initialized on: ${domain}`, 'success');

        bypassAdblockDetection();
        bypassTimers();

        const onReady = () => {
            hideOverlaySafely();
            removeAdsSafely();
            initSafeObserver();

            // Domain-specific handlers
            if (domain.includes('hindivigyan.in')) {
                handleHindivigyan();
            } else if (domain.includes('paidinsurance.in')) {
                handlePaidInsurance();
            } else if (domain.includes('reelwealthreport.com')) {
                handleReelWealth();
            } else if (domain === 'ww.smallshorts.com') {
                handleSmallShortsWW();
            } else if (domain.includes('smallshorts.com')) {
                handleSmallShorts();
            }

            // Enable buttons periodically
            setInterval(() => {
                document.querySelectorAll('button[disabled], a[disabled]').forEach(btn => {
                    btn.removeAttribute('disabled');
                    btn.classList.remove('disabled');
                });
            }, 3000);
        };

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

        window.addEventListener('load', () => {
            setTimeout(() => {
                hideOverlaySafely();
                removeAdsSafely();
            }, 1000);
        });
    }

    init();

})();