Aternos 24/7 Open (Ad Anti-Anti) - Improved

Automatic server start for Aternos + bypasses anti-adblock checks - Improved version

// ==UserScript==
// @name         Aternos 24/7 Open (Ad Anti-Anti) - Improved
// @namespace    https://github.com/bylordwz/Aternos-24-7-Open-Ad-Anti-Anti
// @version      1.2
// @description  Automatic server start for Aternos + bypasses anti-adblock checks - Improved version
// @author       Warden Zone Studio
// @copyright    2025, Warden Zone Studio
// @match        https://aternos.org/*
// @icon         https://aternos.org/favicon.ico
// @grant        none
// @run-at       document-idle
// @license      Copyright
// @homepage     https://github.com/bylordwz/Aternos-24-7-Open-Ad-Anti-Anti
// ==/UserScript==

(function() {
    'use strict';

    let autoMode = false;
    let lastExtendClick = 0;
    let controlsAdded = false;

    // CSS stillerini ekle
    function addStyles() {
        const style = document.createElement('style');
        style.textContent = `
            .auto-control-div {
                display: inline-block !important;
                margin-left: 10px !important;
                visibility: visible !important;
                opacity: 1 !important;
                position: relative !important;
                z-index: 9999 !important;
            }
            
            .auto-control-btn {
                background-color: #ffc107 !important;
                border: 1px solid #e0a800 !important;
                color: #212529 !important;
                padding: 8px 16px !important;
                font-size: 14px !important;
                border-radius: 4px !important;
                cursor: pointer !important;
                transition: all 0.2s !important;
                display: inline-block !important;
                text-decoration: none !important;
                font-weight: 500 !important;
                line-height: 1.5 !important;
                text-align: center !important;
                vertical-align: middle !important;
                user-select: none !important;
                min-width: 140px !important;
            }
            
            .auto-control-btn:hover {
                background-color: #e0a800 !important;
                border-color: #d39e00 !important;
                transform: translateY(-1px) !important;
            }
            
            .auto-control-btn.btn-success {
                background-color: #28a745 !important;
                border-color: #1e7e34 !important;
                color: white !important;
            }
            
            .auto-control-btn.btn-success:hover {
                background-color: #218838 !important;
                border-color: #1e7e34 !important;
            }
            
            .auto-control-btn i {
                margin-right: 5px !important;
            }
        `;
        document.head.appendChild(style);
    }

    // Kontrol butonlarını ekle - geliştirilmiş versiyon
    function addControls() {
        if (controlsAdded) return;
        
        // Farklı seçiciler dene
        const selectors = [
            '#restart',
            '.btn-restart',
            '[data-page="restart"]',
            '.server-restart',
            '.restart-button'
        ];
        
        let restartButton = null;
        for (const selector of selectors) {
            restartButton = document.querySelector(selector);
            if (restartButton) break;
        }
        
        // Eğer restart buton yoksa, start butonunu ara
        if (!restartButton) {
            const startSelectors = [
                '#start',
                '.btn-start',
                '[data-page="start"]',
                '.server-start',
                '.start-button'
            ];
            
            for (const selector of startSelectors) {
                restartButton = document.querySelector(selector);
                if (restartButton) break;
            }
        }
        
        // Eğer hala buton yoksa, server kontrollerini ara
        if (!restartButton) {
            const serverControls = document.querySelector('.server-controls, .server-status, .status-controls');
            if (serverControls) {
                restartButton = serverControls;
            }
        }
        
        if (!restartButton) {
            console.log('Restart/Start button not found, retrying...');
            return;
        }

        const controlDiv = document.createElement('div');
        controlDiv.className = 'auto-control-div';

        const autoButton = document.createElement('button');
        autoButton.innerHTML = '<i class="fas fa-robot"></i> Auto Mode: OFF';
        autoButton.className = 'auto-control-btn btn-warning';
        autoButton.onclick = (e) => {
            e.preventDefault();
            e.stopPropagation();
            toggleAuto(autoButton);
        };

        controlDiv.appendChild(autoButton);
        
        // Butonu farklı yerlere eklemeyi dene
        try {
            if (restartButton.parentNode) {
                restartButton.parentNode.insertBefore(controlDiv, restartButton.nextSibling);
            } else {
                document.body.appendChild(controlDiv);
            }
            controlsAdded = true;
            console.log('Auto control button added successfully');
        } catch (e) {
            console.error('Error adding control button:', e);
        }
    }

    function toggleAuto(button) {
        autoMode = !autoMode;
        button.innerHTML = `<i class="fas fa-robot"></i> Auto Mode: ${autoMode ? 'ON' : 'OFF'}`;
        button.className = `auto-control-btn ${autoMode ? 'btn-success' : 'btn-warning'}`;
        console.log(`Auto mode ${autoMode ? 'enabled' : 'disabled'}`);
    }

    // Geliştirilmiş server kontrol mantığı
    function controlServer() {
        if (!autoMode) return;

        // Farklı status seçiciler dene
        const statusSelectors = [
            '.status',
            '.server-status',
            '[data-status]',
            '.status-indicator',
            '.server-state'
        ];
        
        let status = null;
        for (const selector of statusSelectors) {
            status = document.querySelector(selector);
            if (status) break;
        }
        
        if (!status) return;

        // Loading durumunu kontrol et
        if (status.classList.contains('loading') || 
            status.classList.contains('starting') ||
            status.classList.contains('stopping')) {
            return;
        }

        // Offline durumunda start butonuna bas
        if (status.classList.contains('offline') || 
            status.textContent.toLowerCase().includes('offline') ||
            status.textContent.toLowerCase().includes('kapalı')) {
            
            const startSelectors = [
                '#start',
                '.btn-start',
                '[data-action="start"]',
                '.server-start',
                '.start-button'
            ];
            
            for (const selector of startSelectors) {
                const startButton = document.querySelector(selector);
                if (startButton && startButton.offsetParent !== null) {
                    startButton.click();
                    console.log('Server start button clicked');
                    break;
                }
            }
        }
        
        // Online durumunda extend butonuna bas
        else if (status.classList.contains('online') || 
                 status.textContent.toLowerCase().includes('online') ||
                 status.textContent.toLowerCase().includes('açık')) {
            
            const extendSelectors = [
                '.server-extend-end',
                '.extend-button',
                '[data-action="extend"]',
                '.btn-extend',
                '.server-extend'
            ];
            
            const now = Date.now();
            
            for (const selector of extendSelectors) {
                const extendButton = document.querySelector(selector);
                if (extendButton && 
                    extendButton.offsetParent !== null && 
                    now - lastExtendClick > 5000) {
                    
                    extendButton.click();
                    lastExtendClick = now;
                    console.log('Server extend button clicked');
                    break;
                }
            }
        }
    }

    // Geliştirilmiş reklam bypass mantığı
    function bypassAd() {
        // Türkçe metin için
        const turkishText = "Yine de reklam engelleyiciyle devam et";
        // İngilizce metin için
        const englishText = "Continue with ad blocker anyway";
        
        const buttonSelectors = [
            'div.btn.btn-white.wZDWEUqRUPDi',
            '.btn-white',
            '.ad-blocker-continue',
            '[data-action="continue"]',
            '.continue-button'
        ];
        
        for (const selector of buttonSelectors) {
            const buttons = document.querySelectorAll(selector);
            for (const btn of buttons) {
                const text = btn.innerText.trim();
                if (text === turkishText || text === englishText) {
                    console.log('Ad blocker continue button found, clicking...');
                    btn.click();
                    console.log('Ad blocker warning bypassed');
                    return;
                }
            }
        }
        
        // Overlay'i kapat
        const overlays = document.querySelectorAll('.modal, .overlay, .popup, [class*="adblock"]');
        for (const overlay of overlays) {
            if (overlay.style.display !== 'none' && overlay.offsetParent !== null) {
                const closeBtn = overlay.querySelector('.close, .btn-close, [data-dismiss]');
                if (closeBtn) {
                    closeBtn.click();
                    console.log('Overlay closed');
                }
            }
        }
    }

    // Sayfa yüklendikten sonra başlat
    function initialize() {
        addStyles();
        
        // Kontrolleri eklemek için birkaç kez dene
        let attempts = 0;
        const addControlsInterval = setInterval(() => {
            attempts++;
            addControls();
            if (controlsAdded || attempts > 10) {
                clearInterval(addControlsInterval);
            }
        }, 1000);
        
        // Ana döngüyü başlat
        startMainLoop();
    }

    // Ana döngü - performans optimizasyonu ile
    function startMainLoop() {
        let lastCheck = 0;
        
        function mainLoop(timestamp) {
            // Her saniye kontrol et
            if (timestamp - lastCheck >= 1000) {
                try {
                    bypassAd();
                    controlServer();
                    
                    // Eğer kontroller eklenmemişse tekrar dene
                    if (!controlsAdded) {
                        addControls();
                    }
                } catch (e) {
                    console.error('Error in main loop:', e);
                }
                lastCheck = timestamp;
            }
            requestAnimationFrame(mainLoop);
        }
        
        requestAnimationFrame(mainLoop);
    }

    // Sayfa tam yüklendikten sonra başlat
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initialize);
    } else {
        initialize();
    }
    
    // Sayfa değişiklikleri için observer
    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.type === 'childList' && !controlsAdded) {
                setTimeout(addControls, 500);
            }
        });
    });
    
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址