ouo.io bypass

Bypass ouo.io

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

You will need to install an extension such as Tampermonkey to install this 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         ouo.io bypass
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Bypass ouo.io
// @author       nth-zik
// @match        https://ouo.io/*
// @match        https://ouo.press/*
// @match        https://*.ouo.io/*
// @match        https://*.ouo.press/*
// @run-at       document-end
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    let running = true;
    let currentUrl = window.location.href;
    let submitCount = 0;
    let pageChangeDetected = false;

    console.log('🚀 ouo.io Stop On Page Change v9.0');
    console.log('📍 Starting URL:', currentUrl);

    // Tạo UI
    function createUI() {
        const ui = document.createElement('div');
        ui.id = 'ouo-status-ui';
        ui.innerHTML = `
            <div style="
                position: fixed !important;
                top: 20px !important;
                right: 20px !important;
                background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
                color: white !important;
                padding: 15px 20px !important;
                border-radius: 10px !important;
                font-family: Arial, sans-serif !important;
                font-size: 14px !important;
                box-shadow: 0 4px 20px rgba(0,0,0,0.3) !important;
                z-index: 999999 !important;
                min-width: 280px !important;
                border: 2px solid rgba(255,255,255,0.3) !important;
            ">
                <div style="font-weight: bold; font-size: 16px; margin-bottom: 10px;">
                    🎯 ouo.io Bypass v9.0
                </div>
                <div id="status-text" style="
                    background: rgba(255,255,255,0.1);
                    padding: 8px 12px;
                    border-radius: 5px;
                    margin-bottom: 8px;
                ">Đang khởi động...</div>
                <div id="url-monitor" style="font-size: 11px; opacity: 0.8; margin-bottom: 8px;">
                    URL: ${currentUrl.substring(0, 50)}...
                </div>
                <div id="submit-counter" style="text-align: center; font-weight: bold;">
                    Lần thử: 0
                </div>
            </div>
        `;

        document.body.appendChild(ui);
        return ui;
    }

    // Cập nhật UI
    function updateUI(status, counter = null) {
        const statusEl = document.getElementById('status-text');
        const counterEl = document.getElementById('submit-counter');
        const urlEl = document.getElementById('url-monitor');

        if (statusEl) statusEl.textContent = status;
        if (counter !== null && counterEl) counterEl.textContent = `Lần thử: ${counter}`;
        if (urlEl) urlEl.textContent = `URL: ${window.location.href.substring(0, 50)}...`;

        console.log('📊', status);
    }

    // Phát hiện chuyển trang
    function detectPageChange() {
        // Phương pháp 1: Theo dõi URL change
        const urlWatcher = setInterval(() => {
            if (!running) {
                clearInterval(urlWatcher);
                return;
            }

            if (window.location.href !== currentUrl) {
                console.log('🎉 PAGE CHANGE DETECTED!');
                console.log('📍 Old URL:', currentUrl);
                console.log('📍 New URL:', window.location.href);

                pageChangeDetected = true;
                running = false;

                updateUI('🎉 Thành công! Đã chuyển trang');

                // Đổi màu UI thành công
                const ui = document.getElementById('ouo-status-ui');
                if (ui) {
                    ui.querySelector('div').style.background = 'linear-gradient(135deg, #4CAF50 0%, #45a049 100%)';
                }

                clearInterval(urlWatcher);
            }
        }, 500); // Check mỗi 0.5 giây

        // Phương pháp 2: Theo dõi beforeunload
        window.addEventListener('beforeunload', function() {
            if (running) {
                console.log('🚪 beforeunload event - trang sắp chuyển');
                pageChangeDetected = true;
                running = false;
                updateUI('🚪 Đang chuyển trang...');
            }
        });

        // Phương pháp 3: Theo dõi popstate
        window.addEventListener('popstate', function() {
            if (running) {
                console.log('🔙 popstate event - navigation change');
                pageChangeDetected = true;
                running = false;
                updateUI('🔙 Navigation changed');
            }
        });

        // Phương pháp 4: Theo dõi document title change
        let lastTitle = document.title;
        const titleWatcher = setInterval(() => {
            if (!running) {
                clearInterval(titleWatcher);
                return;
            }

            if (document.title !== lastTitle) {
                console.log('📄 Title changed:', lastTitle, '->', document.title);
                lastTitle = document.title;

                // Nếu title thay đổi đáng kể, có thể là chuyển trang
                if (!document.title.toLowerCase().includes('ouo')) {
                    console.log('🎯 Có thể đã bypass thành công (title change)');
                    pageChangeDetected = true;
                    running = false;
                    updateUI('🎯 Bypass thành công! (title change)');
                }
            }
        }, 1000);
    }

    // Click I'm a human
    function clickHuman() {
        const buttons = document.querySelectorAll('button, input[type="button"], input[type="submit"], div[role="button"]');

        for (const btn of buttons) {
            const text = (btn.textContent || btn.value || '').toLowerCase().trim();

            if ((text.includes('human') || text.includes('verify') || text.includes('not a robot')) &&
                btn.offsetParent !== null && !btn.disabled) {

                console.log('👤 Click I\'m a human:', text);
                updateUI('👤 Đang click "I\'m a human"...');
                btn.click();
                return true;
            }
        }

        return false;
    }

    // Submit form-go
    function submitFormGo() {
        if (!running || pageChangeDetected) {
            console.log('⏹️ Stopped - không submit nữa');
            return false;
        }

        submitCount++;
        updateUI(`🔄 Đang tìm form-go... (lần ${submitCount})`, submitCount);

        const formGo = document.getElementById('form-go');

        if (formGo) {
            console.log('✅ Tìm thấy form-go, đang submit...');
            updateUI(`📤 Submit form-go (lần ${submitCount})`, submitCount);

            try {
                // Submit form
                formGo.submit();
                console.log('📤 Form submitted');

                // Backup: Click button trong form
                setTimeout(() => {
                    if (running && !pageChangeDetected) {
                        const btn = formGo.querySelector('#btn-main, button[type="submit"], button');
                        if (btn && !btn.disabled) {
                            console.log('🖱️ Backup click button');
                            btn.click();
                        }
                    }
                }, 200);

                return true;

            } catch (error) {
                console.error('❌ Submit error:', error);

                // Fallback click button
                const btn = formGo.querySelector('#btn-main, button[type="submit"], button');
                if (btn && !btn.disabled) {
                    console.log('🔄 Fallback click button');
                    btn.click();
                    return true;
                }
            }
        } else {
            console.log('❌ Không tìm thấy form-go');
            updateUI(`❌ Chưa có form-go (lần ${submitCount})`, submitCount);
        }

        return false;
    }

    // Main loop
    function startBypassLoop() {
        console.log('🔄 Bắt đầu bypass loop...');
        updateUI('🔄 Bắt đầu bypass loop...');

        // Click human trước
        setTimeout(() => {
            if (running && !pageChangeDetected) {
                clickHuman();
            }
        }, 2000);

        // Loop submit form-go
        const submitInterval = setInterval(() => {
            if (!running || pageChangeDetected) {
                console.log('⏹️ Dừng loop - page changed hoặc stopped');
                clearInterval(submitInterval);
                return;
            }

            submitFormGo();

            // Dừng sau 30 lần thử
            if (submitCount >= 30) {
                console.log('⚠️ Dừng sau 30 lần thử');
                running = false;
                updateUI('⚠️ Dừng sau 30 lần thử');
                clearInterval(submitInterval);
            }

        }, 2000); // Mỗi 2 giây
    }

    // Init
    function init() {
        console.log('🔥 Init bypass script...');

        // Tạo UI
        createUI();
        updateUI('🔥 Script đã khởi động');

        // Setup page change detection
        detectPageChange();

        // Bắt đầu bypass sau 3 giây
        setTimeout(() => {
            if (running) {
                startBypassLoop();
            }
        }, 3000);
    }

    // Chạy script
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }

})();