ouo.io bypass

Bypass ouo.io

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==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();
    }

})();