Ultimate Anti-Adblock Killer (v10.12 - Multilingual & Popup Hunter)

The definitive tool: Aggressive neutralization, Anti-Adblock Killer, Stealth Mode, Zapper Mode, Paywall protection/Anti-PayWall, Guardian Mode.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Ultimate Anti-Adblock Killer (v10.12 - Multilingual & Popup Hunter)
// @namespace    https://tampermonkey.net/
// @version      10.12
// @description  The definitive tool: Aggressive neutralization, Anti-Adblock Killer, Stealth Mode, Zapper Mode, Paywall protection/Anti-PayWall, Guardian Mode.
// @author       Tauã B. Kloch Leite
// @icon         https://img.icons8.com/fluency/64/shield.png
// @homepageURL  https://greasyfork.org/scripts/556237-ultimate-anti-adblock-killer
// @supportURL   https://greasyfork.org/scripts/556237-ultimate-anti-adblock-killer/feedback
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_addStyle
// @grant        unsafeWindow
// @license      GPL-3.0
// @run-at       document-start
// ==/UserScript==

(function() {

    'use strict';

    // =============================================
    // 0. CLOUDFLARE CHECK & STEALTH MODE
    // =============================================

    function isCloudflare() {
        try {
            const title = document.title;
            if (title === 'Just a moment...' || title.includes('Attention Required!')) return true;
            if (document.getElementById('challenge-form') || document.getElementById('cf-wrapper')) return true;
        } catch(e) {}
        return false;
    }

    if (isCloudflare()) return;

    function injectBait() {
        const baitVars = ['adsbygoogle', 'adblock', 'google_ad_client', 'showAds', 'adBlockDetected', 'hasAdBlocker'];
        const win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
        baitVars.forEach(varName => {
            if (!win[varName]) {
                Object.defineProperty(win, varName, {
                    get: function() { return varName === 'adsbygoogle' ? [] : true; },
                    set: function() {},
                    configurable: true
                });
            }
        });
    }
    injectBait();

    // =============================================
    // 1. CONFIGURATION & STATE
    // =============================================

    const sitesExcecao = [
        // --- Major Tech & Social ---
        'google.com', 'facebook.com', 'amazon.com', 'twitter.com',
        'instagram.com', 'linkedin.com', 'netflix.com', 'microsoft.com', 'apple.com',
        'wikipedia.org', 'reddit.com', 'whatsapp.com', 'tiktok.com', 'office.com',
        'zoom.us', 'x.com', 'discord.com', 'twitch.tv', 'spotify.com',
        'googleusercontent.com', 'paypal.com', 'ebay.com', 'aliexpress.com', 'walmart.com',
        'target.com', 'bestbuy.com', 'hulu.com', 'disneyplus.com', 'primevideo.com',
        'bankofamerica.com', 'chase.com', 'wellsfargo.com', 'capitalone.com', 'dropbox.com',
        'drive.google.com', 'docs.google.com', 'mail.google.com', 'outlook.com', 'hotmail.com',
        'yahoo.com', 'github.com', 'gitlab.com', 'stackoverflow.com', 'medium.com',
        'quora.com', 'pinterest.com', 'tumblr.com', 'flickr.com', 'imgur.com', 'wordpress.com',
        'blogger.com', 'shopify.com', 'etsy.com', 'airbnb.com', 'booking.com', 'expedia.com',
        'tripadvisor.com', 'craigslist.org', 'indeed.com', 'monster.com', 'glassdoor.com',
        'webmd.com', 'mayoclinic.org', 'healthline.com', 'cdc.gov', 'who.int', 'weather.com',
        'accuweather.com', 'espn.com', 'nba.com', 'nfl.com', 'mlb.com', 'nhl.com',
        'businessinsider.com', 'techcrunch.com', 'mashable.com', 'cnet.com', 'arstechnica.com',
        'wired.com', 'theverge.com', 'gizmodo.com', 'engadget.com', 'adobe.com', 'autodesk.com',
        'salesforce.com', 'oracle.com', 'ibm.com', 'intel.com', 'nvidia.com', 'amd.com',
        'dell.com', 'hp.com', 'lenovo.com', 'asus.com', 'acer.com', 'msi.com', 'logitech.com',
        'razer.com', 'steampowered.com', 'epicgames.com', 'origin.com', 'battle.net', 'ea.com',
        'ubisoft.com', 'rockstargames.com', 'playstation.com', 'xbox.com', 'nintendo.com',
        'riotgames.com', 'roblox.com', 'minecraft.net', 'notion.so', 'trello.com', 'asana.com',
        'slack.com', 'basecamp.com', 'atlassian.com', 'jira.com', 'confluence.com', 'figma.com',
        'sketch.com', 'canva.com', 'behance.net', 'dribbble.com', 'deviantart.com', 'vimeo.com',
        'dailymotion.com', 'soundcloud.com', 'bandcamp.com', 'shutterstock.com', 'gettyimages.com',
        'istockphoto.com', 'adobe.stock.com', 'unsplash.com', 'pexels.com', 'pixabay.com',
        'freepik.com', 'udemy.com', 'coursera.org', 'edx.org', 'khanacademy.org', 'skillshare.com',
        'lynda.com', 'pluralsight.com', 'codecademy.com', 'freecodecamp.org', 'udacity.com',
        'futurelearn.com', 'academia.edu', 'researchgate.net', 'scholar.google.com', 'jstor.org',
        'sciencedirect.com', 'ieee.org', 'acm.org', 'springer.com', 'wiley.com', 'tandfonline.com',
        'sagepub.com', 'oup.com', 'cambridge.org', 'nature.com', 'sciencemag.org', 'cell.com',
        'thelancet.com', 'nejm.org', 'jamanetwork.com', 'bmj.com', 'who.int', 'fda.gov',
        'nih.gov', 'nasa.gov', 'space.com', 'esa.int', 'nationalgeographic.com', 'discovery.com',
        'history.com', 'britannica.com', 'howstuffworks.com', 'ted.com', 'kickstarter.com',
        'indiegogo.com', 'gofundme.com', 'patreon.com', 'substack.com', 'onlyfans.com',
        'fiverr.com', 'upwork.com', 'freelancer.com', '99designs.com', 'toptal.com', 'gun.io',
        'wix.com', 'squarespace.com', 'weebly.com', 'godaddy.com', 'namecheap.com', 'bluehost.com',
        'hostgator.com', 'siteground.com', 'cloudflare.com', 'akamai.com', 'fastly.com',
        'aws.amazon.com', 'azure.microsoft.com', 'cloud.google.com', 'digitalocean.com',
        'linode.com', 'vultr.com', 'heroku.com', 'vercel.com', 'netlify.com', 'cloudinary.com',
        'imgix.com',
        // --- News & Journalism (Exceptions) ---
        'nytimes.com', 'washingtonpost.com', 'wsj.com', 'bloomberg.com', 'ft.com',
        'theguardian.com', 'usatoday.com', 'bbc.com', 'cnn.com', 'reuters.com',
        'globo.com', 'uol.com.br', 'folha.uol.com.br', 'estadao.com.br', 'abril.com.br',
        'terra.com.br', 'r7.com', 'metropoles.com', 'gazetadopovo.com.br',
        // --- AI & LLM Tools ---
        'chatgpt.com', 'openai.com', 'deepseek.com', 'claude.ai', 'anthropic.com',
        'perplexity.ai', 'poe.com', 'mistral.ai', 'huggingface.co', 'character.ai',
        'midjourney.com', 'leonardo.ai', 'civitai.com', 'grok.com', 'jasper.ai', 'copy.ai',
        'sora.com', 'runwayml.com', 'stability.ai', 'blackbox.ai', 'phind.com'
    ];

    let exceptions = JSON.parse(localStorage.getItem('antiAdblockExceptions') || '[]');
    let userFilters = JSON.parse(localStorage.getItem('antiAdblockUserFilters') || '{}');
    let blockedCount = 0;
    let isZapperActive = false;
    let isAggressiveMode = false;
    let isPaused = false;

    function checkExceptionStatus() {
        const hostname = window.location.hostname;
        if (sitesExcecao.some(site => hostname.includes(site))) return true;
        if (exceptions.some(exception => hostname.includes(exception))) return true;
        return false;
    }

    isPaused = checkExceptionStatus();

    function showNotification(message, duration = 3000) {
        if (!document.body) return;
        const existing = document.querySelectorAll('.anti-adblock-notification');
        existing.forEach(el => el.remove());
        const n = document.createElement('div');
        n.className = 'anti-adblock-notification';
        n.style.cssText = 'position:fixed;top:20px;right:20px;background:#2d3748;color:white;padding:15px 20px;border-radius:8px;z-index:2147483647;font-family:Arial,sans-serif;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,0.3);border-left:4px solid #4299e1;max-width:350px;white-space:pre-line;pointer-events:none;';
        n.textContent = message;
        document.body.appendChild(n);
        setTimeout(() => n.remove(), duration);
    }

    function addException() {
        const h = window.location.hostname;
        if (!exceptions.includes(h)) {
            exceptions.push(h);
            localStorage.setItem('antiAdblockExceptions', JSON.stringify(exceptions));
            showNotification(`✅ ${h} added to exceptions`);
            setTimeout(() => location.reload(), 1000);
        }
    }

    function removeException() {
        const h = window.location.hostname;
        exceptions = exceptions.filter(site => site !== h && !h.includes(site));
        localStorage.setItem('antiAdblockExceptions', JSON.stringify(exceptions));
        showNotification(`❌ ${h} removed from exceptions\nReloading...`);
        setTimeout(() => location.reload(), 1000);
    }

    function removeAllDomainExceptions() {
        const h = window.location.hostname;
        exceptions = exceptions.filter(site => !site.includes(h));
        localStorage.setItem('antiAdblockExceptions', JSON.stringify(exceptions));
        if (userFilters[h]) {
            delete userFilters[h];
            localStorage.setItem('antiAdblockUserFilters', JSON.stringify(userFilters));
        }
        showNotification(`🗑️ Full Reset for ${h}\nReloading...`);
        setTimeout(() => location.reload(), 1000);
    }

    function undoManualZaps() {
        const h = window.location.hostname;
        if (userFilters[h]) {
            delete userFilters[h];
            localStorage.setItem('antiAdblockUserFilters', JSON.stringify(userFilters));
            showNotification(`↩️ Manual Blocks cleared for ${h}\nReloading...`);
            setTimeout(() => location.reload(), 1000);
        } else {
            showNotification(`ℹ️ No manual blocks found for ${h}`);
        }
    }

    function showHelp() {
        const helpText = `
🛡️ Ultimate Anti-Adblock Killer (v10.12)

• Ctrl+Shift+E → Add/Remove exception
• Ctrl+Shift+X → Reset ALL (Exceptions + Zaps)
• Ctrl+Shift+Z → ⚡ Zapper Mode (Manual Block)
• Ctrl+Shift+H → Help & Stats

Threats Neutralized: ${blockedCount}
Site: ${window.location.hostname}
Status: ${isPaused ? '⛔ PAUSED' : '✅ ACTIVE'}
        `.trim();
        showNotification(helpText, 5000);
    }

    GM_registerMenuCommand('➕ Add to exceptions', addException);
    GM_registerMenuCommand('➖ Remove from exceptions', removeException);
    GM_registerMenuCommand('↩️ Undo Manual Zaps', undoManualZaps);
    GM_registerMenuCommand('🗑️ Full Reset (Domain)', removeAllDomainExceptions);
    GM_registerMenuCommand('⚡ Toggle Zapper Mode', toggleZapper);
    GM_registerMenuCommand('❓ Help / Stats', showHelp);

    window.addEventListener('keydown', function(e) {
        if (e.ctrlKey && e.shiftKey && !e.altKey && !e.metaKey) {
            switch(e.key.toLowerCase()) {
                case 'e': e.preventDefault(); e.stopImmediatePropagation(); isPaused && !sitesExcecao.some(s => window.location.hostname.includes(s)) ? removeException() : addException(); break;
                case 'x': e.preventDefault(); removeAllDomainExceptions(); break;
                case 'h': e.preventDefault(); showHelp(); break;
                case 'z': e.preventDefault(); toggleZapper(); break;
            }
        }
    }, true);

    // =============================================
    // 1.1 RIGHT CLICK FORCE
    // =============================================
    function enableRightClick() {
        const blockedEvents = ['contextmenu', 'copy', 'cut', 'paste'];

        blockedEvents.forEach(eventName => {
            window.addEventListener(eventName, function(e) {
                e.stopPropagation();
            }, true);
        });

        function cleanEvents() {
            if (typeof document === 'undefined') return;
            const elements = [document.body, ...document.querySelectorAll('*[oncontextmenu]')];
            elements.forEach(el => {
                if (el && el.style) {
                    el.oncontextmenu = null;
                }
            });
        }

        setInterval(cleanEvents, 1000);
        cleanEvents();

        if (typeof unsafeWindow !== 'undefined' && unsafeWindow.jQuery) {
            unsafeWindow.jQuery(document).unbind('contextmenu');
            unsafeWindow.jQuery(document.body).unbind('contextmenu');
        }
    }


    // =============================================
    // 2. VIDEO SAFEGUARD
    // =============================================

    function isVideoPlayer(el) {
        if (!el || !el.tagName) return false;
        const tag = el.tagName.toLowerCase();
        const cls = (el.className || '').toString().toLowerCase();
        const id = (el.id || '').toString().toLowerCase();

        // 1. Standard Tags
        if (tag === 'video' || tag === 'iframe' || tag === 'object' || tag === 'embed') return true;

        // 2. RedeCanais / Generic Player Wrappers
        if (id === 'player' || cls.includes('player') || cls.includes('video-wrapper')) return true;

        // 3. Play Buttons
        if (cls.includes('play') || id.includes('play') || cls.includes('overlay')) {
            if (el.querySelector('svg') || el.innerText.includes('▶')) return true;
        }

        // 4. DEEP CHILD CHECK
        if (el.querySelector('iframe, video, object, embed')) return true;

        return false;
    }

    function isPlayerIframe() {
        try {
            if (window.self === window.top) return false;
            if (document.querySelector('video, canvas, embed, object')) return true;
            if (window.location.href.includes('player') || window.location.href.includes('video') || window.location.href.includes('embed')) return true;
            return false;
        } catch (e) { return false; }
    }

    // =============================================
    // 3. ZAPPER MODE
    // =============================================

    function getCssPath(el) {
        if (!(el instanceof Element)) return;
        var path = [];
        while (el.nodeType === Node.ELEMENT_NODE) {
            var selector = el.nodeName.toLowerCase();
            if (el.id && !/\d{3,}/.test(el.id) && el.id.length < 30) {
                selector += '#' + el.id;
                path.unshift(selector);
                break;
            } else {
                var sib = el, nth = 1;
                while (sib = sib.previousElementSibling) { if (sib.nodeName.toLowerCase() == selector) nth++; }
                if (nth != 1) selector += ":nth-of-type("+nth+")";
            }
            path.unshift(selector);
            el = el.parentNode;
        }
        return path.join(" > ");
    }

    function saveUserBlock(element) {
        const selector = getCssPath(element);
        const host = window.location.hostname;
        if (!userFilters[host]) userFilters[host] = [];
        if (!userFilters[host].includes(selector)) {
            userFilters[host].push(selector);
            localStorage.setItem('antiAdblockUserFilters', JSON.stringify(userFilters));
        }
    }

    function applyUserBlocks() {
        const host = window.location.hostname;
        if (!userFilters[host]) return;
        userFilters[host].forEach(selector => {
            try {
                document.querySelectorAll(selector).forEach(el => {
                    if (!isVideoPlayer(el)) {
                        hideElementRobustly(el);
                        blockedCount++;
                    }
                });
            } catch(e) {}
        });
    }

    function toggleZapper() {
        isZapperActive = !isZapperActive;
        if (isZapperActive) {
            showNotification("⚡ Zapper ON\nClick to delete + Unlock Screen", 4000);
            addStyle(`
                .uaak-zapper-active * { cursor: crosshair !important; pointer-events: auto !important; }
                .uaak-zapper-hover {
                    outline: 4px solid #ff0000 !important;
                    box-shadow: inset 0 0 20px rgba(255, 0, 0, 0.5) !important;
                    opacity: 0.9 !important;
                    z-index: 2147483647 !important;
                }
            `);
            document.body.classList.add('uaak-zapper-active');
            document.addEventListener('mouseover', zapperHover, true);
            document.addEventListener('mouseout', zapperUnhover, true);
            document.addEventListener('click', zapperClick, true);
            document.addEventListener('keydown', zapperKey, true);
        } else {
            showNotification("Zapper OFF");
            document.body.classList.remove('uaak-zapper-active');
            document.removeEventListener('mouseover', zapperHover, true);
            document.removeEventListener('mouseout', zapperUnhover, true);
            document.removeEventListener('click', zapperClick, true);
            document.removeEventListener('keydown', zapperKey, true);
            document.querySelectorAll('.uaak-zapper-hover').forEach(el => el.classList.remove('uaak-zapper-hover'));
        }
    }

    function zapperHover(e) {
        e.preventDefault(); e.stopPropagation();
        e.target.classList.add('uaak-zapper-hover');
    }

    function zapperUnhover(e) {
        e.target.classList.remove('uaak-zapper-hover');
    }

    function zapperClick(e) {
        if (!isZapperActive) return;
        e.preventDefault(); e.stopImmediatePropagation();
        if (e.target.tagName === 'BODY' || e.target.tagName === 'HTML') return;

        saveUserBlock(e.target);
        hideElementRobustly(e.target);
        blockedCount++;

        forceJailbreak();
        removeShadows();
        enableRightClick();

        showNotification("💥 Zapped & Unlocked!");
        toggleZapper(); // Turn off after zap
    }

    function zapperKey(e) { if (e.key === 'Escape') toggleZapper(); }

    // =============================================
    // 4. CORE ENGINE
    // =============================================

    var enable_debug = false;
    var adblock_pattern = /ad-block|adblock|ad block|blocking ads|bloqueur|bloqueador|Werbeblocker|آدبلوك بلس|блокировщиком/i;
    var disable_pattern = /kapat|disabl|désactiv|desactiv|desativ|deaktiv|detect|enabled|turned off|turn off|απενεργοποίηση|запрещать|állítsd le|publicités|рекламе|verhindert|advert|kapatınız|allow|permitir|whitelist/i;
    var premium_pattern = /premium|upgrade|subscription|subscribe|assine|assinatura|s'abonner|suscribirse|member access|read the full|paywall|register free|create a free account|log in|great deal|limited time offer|support us|keep reading|this is not a paywall|unlock this article|funding choices/i;
    var tagNames_pattern = /b|center|div|font|i|iframe|s|span|section|u/i;
    var is_core_protected = false;
    var classes = [];

    function debug( msg, val ) {
        if ( !enable_debug ) return;
        console.log( '%c ANTI-ADBLOCKER \n','color: white; background-color: red', msg );
    }

    function addStyle(str) {
        if (typeof GM_addStyle !== 'undefined') {
            GM_addStyle(str);
            return;
        }
        var style = document.createElement('style');
        style.textContent = str;
        (document.body || document.head || document.documentElement).appendChild(style);
    }

    function randomInt( min, max ) {
        if ( max === undefined ) { max = min; min = 0; }
        return Math.floor(min + Math.random() * (max - min + 1));
    }

    function getRandomName( size ) {
        var charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        var name = '';
        for (var i = 0; i < (size||randomInt(10,20)); ++i) {
            name += charset.charAt( Math.floor( Math.random() * charset.length) );
        }
        return name;
    }

    function addRandomClass( el ) {
        let name = getRandomName();
        el.classList.add( name );
        return name;
    }

    function isElementFixed( el ) {
        if (el instanceof Element) {
          return window.getComputedStyle(el).getPropertyValue('position') == 'fixed';
        }
    }

    function isNotHidden( el ) {
        if (el instanceof Element) {
          return window.getComputedStyle(el).getPropertyValue('display') != 'none';
        }
    }

    function isBlackoutModal( el ) {
        if (el instanceof Element) {
          if (isVideoPlayer(el)) return false;
          var style = window.getComputedStyle( el );
          if (style.position !== 'fixed' && style.position !== 'absolute') return false;
          var top = parseInt( style.top ) || 0;
          var left = parseInt( style.left ) || 0;
          var right = parseInt( style.right ) || 0;
          var bottom = parseInt( style.bottom ) || 0;
          var coversHeight = el.offsetHeight >= window.innerHeight * 0.9;
          var coversWidth = el.offsetWidth >= window.innerWidth * 0.9;
          var anchored = (top <= 5 && left <= 5) || (right <= 5 && bottom <= 5) || (top <= 5 && right <= 5);
          return coversHeight && coversWidth && anchored;
        }
        return false;
    }

    function isAntiAdblockText( value ) {
        if (adblock_pattern.test( value ) && disable_pattern.test( value )) return true;
        if (premium_pattern.test(value) && (value.toLowerCase().includes('ads') || value.toLowerCase().includes('account') || value.toLowerCase().includes('continue') || value.toLowerCase().includes('offer') || value.toLowerCase().includes('access') || value.toLowerCase().includes('subscri'))) return true;
        return false;
    }

    function isModalWindows( el ) {
        if (el.className && (el.className.includes('pop_content') || el.className.includes('fc-ab-dialog'))) return true;
        return isElementFixed ( el ) && ( isAntiAdblockText( el.textContent ) || isBlackoutModal( el ) );
    }

    function isSafetyHeader( el ) {
        if (!el || !el.getBoundingClientRect) return false;
        if (el.tagName === 'HEADER' || el.tagName === 'NAV' || el.tagName === 'ASIDE') return true;
        if (el.closest('[data-elementor-type="header"]')) return true;

        const rect = el.getBoundingClientRect();
        if (rect.top <= 5 && rect.height < 300 && rect.width > window.innerWidth * 0.8) {
             if (el.querySelector('nav') || el.querySelector('[role="navigation"]') || el.querySelector('.menu')) return true;
        }
        if (rect.width < 400 && rect.height > window.innerHeight * 0.5) {
            if (!isAntiAdblockText(el.innerText)) return true;
        }
        return false;
    }

    function isSafetyContent(el) {
        if (!el) return false;
        const idClass = (el.id + " " + el.className).toLowerCase();

        if (isAggressiveMode) {
            if (idClass.includes('fides') || idClass.includes('privacy') || idClass.includes('consent') || idClass.includes('gateway') || idClass.includes('modal') || idClass.includes('paywall')) {
                return false;
            }
        }

        if (isVideoPlayer(el)) return true;

        if (isElementFixed(el) && premium_pattern.test(el.innerText)) return false;

        if (el.tagName === 'ARTICLE' || el.tagName === 'MAIN') return true;
        if (el.innerText && el.innerText.length > 600) return true;
        if (el.querySelectorAll('p').length > 5) return true;
        return false;
    }

    function forceContentRestore(el) {
        el.classList.add('uaak-force-visible');
        el.style.setProperty('filter', 'none', 'important');
        el.style.setProperty('opacity', '1', 'important');
        el.style.setProperty('visibility', 'visible', 'important');
        el.style.setProperty('max-height', 'none', 'important');

        if (isAggressiveMode) {
            el.style.setProperty('display', 'block', 'important');
            el.style.setProperty('z-index', '9999', 'important');
        }
    }

    function protectCore() {
        if ( is_core_protected ) return;
        if (typeof unsafeWindow === 'undefined') {
          const unsafeWindow = window;
        }

        const $_removeChild = unsafeWindow.Node.prototype.removeChild;
        unsafeWindow.Node.prototype.removeChild = function( node ) {
            if (isCloudflare()) {
                return $_removeChild.apply( this, arguments );
            }

            if ( node.nodeName == 'HEAD' || node.nodeName == 'BODY' ){
                return debug( 'Blocked delete ' + node.nodeName, node );
            }
            if (node.nodeType === 1 && isSafetyContent(node)) {
                return node;
            }
            $_removeChild.apply( this, arguments );
        };

        const $_innerHTML = Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML');
        if ($_innerHTML && $_innerHTML.set) {
            Object.defineProperty(Element.prototype, 'innerHTML', {
                set: function (value) {
                    if (isCloudflare()) return $_innerHTML.set.call(this, value);
                    if ( this.nodeName == 'BODY' || isAntiAdblockText( value ) ) return debug( 'Blocked innerHTML change', value );
                    try { return $_innerHTML.set.call(this, value); } catch(e) {}
                },
                get: function() { return $_innerHTML.get.call(this); },
                configurable: true
            });
        }
        is_core_protected = true;
    }

    function forceJailbreak() {
        if (isCloudflare()) return;

        [document.documentElement, document.body].forEach(el => {
            if(!el) return;
            el.classList.add('uaak-force-scroll');
            el.style.setProperty('overflow', 'visible', 'important');
            el.style.setProperty('overflow-y', 'auto', 'important');
            if (window.getComputedStyle(el).position === 'fixed') {
                 el.style.setProperty('position', 'static', 'important');
            }
        });
        if (document.body) {
            const badClasses = ['modal-open', 'no-scroll', 'stop-scrolling', 'adblock-blur', 'fides-overlay-modal-link-shown', 'nyt-hide-scroll', 'overflow-hidden'];
            document.body.classList.forEach(cls => {
                if (badClasses.some(bc => cls.includes(bc))) document.body.classList.remove(cls);
            });
        }
    }

    function removeShadows() {
        if (isPlayerIframe()) return;

        document.querySelectorAll('div, section, .modal-backdrop, .fade.in, .fc-dialog-overlay').forEach(el => {
            if (isVideoPlayer(el)) return;

            const style = window.getComputedStyle(el);
            if ((style.position === 'fixed' || style.position === 'absolute') &&
                parseInt(style.height) > window.innerHeight * 0.8 &&
                parseInt(style.width) > window.innerWidth * 0.8) {

                const bgColor = style.backgroundColor;
                if (bgColor.includes('rgba') || style.opacity < 1 || style.filter.includes('blur') || el.className.includes('backdrop') || el.className.includes('overlay')) {
                     if (!isSafetyHeader(el) && !isSafetyContent(el)) {
                          hideElementRobustly(el);
                     }
                }
            }
        });
    }

    function cleanBackgroundWrappers() {
        if (isPlayerIframe()) return;

        if (document.querySelector('.vi-gateway-container, #gateway-content, #fides-overlay, #fides-overlay-wrapper')) {
            isAggressiveMode = true;
        }

        document.querySelectorAll('.pop_content, .fc-ab-dialog, .fc-dialog-overlay').forEach(el => hideElementRobustly(el));

        if (isAggressiveMode) {
            const nytSelectors = [
                '.vi-gateway-container', '#gateway-content', '.css-1bd8bfl',
                '.css-1k28tcn-formStyles-formStyles-EnterEmailSsoBottom',
                '[data-testid="onsite-messaging-unit-gateway"]',
                '.fides-overlay', '#fides-overlay', '#fides-overlay-wrapper', '#fides-modal', '.fides-modal-container'
            ];
            document.querySelectorAll(nytSelectors.join(', ')).forEach(el => hideElementRobustly(el));

            document.querySelectorAll('#app, #site-content, #main, .main-content, #story, article').forEach(el => {
                forceContentRestore(el);
            });
        }

        document.querySelectorAll('.background, .backdrop, .modal-paywall-overlay').forEach(el => {
            if (isVideoPlayer(el)) return;
            const style = window.getComputedStyle(el);
            if (style.position === 'fixed' && parseInt(style.height) > window.innerHeight * 0.9) {
                if (!isSafetyContent(el)) hideElementRobustly(el);
            }
        });
        removeShadows();
    }

    function removeBackStuff() {
        if (isPlayerIframe()) return;

        document.querySelectorAll( 'b,center,div,font,i,iframe,s,span,section,u' ).forEach( ( el ) => {
            if (isSafetyContent(el)) forceContentRestore(el);
            else if ( isBlackoutModal( el ) && !isSafetyHeader(el) ) hideElementRobustly(el);
            else if ( (/blur/i).test( window.getComputedStyle(el).filter ) ) forceContentRestore(el);
        });
        cleanBackgroundWrappers();
        setTimeout( forceJailbreak, 50);
    }

    function hideElementRobustly(el) {
        if(!el) return;
        if (isVideoPlayer(el)) return;
        if (isPlayerIframe()) return;

        el.removeAttribute('id');
        el.removeAttribute('class');
        var class_name = addRandomClass( el );
        classes.push( class_name );
        el.setAttribute('style', (el.getAttribute('style')||'') + ';display: none !important;');
        addStyle( '.' + class_name + '{ display: none !important; }' );
    }

    function checkModals() {
        if (isCloudflare()) return;
        if (isPlayerIframe()) return;

        var modalFound = false;
        document.querySelectorAll( 'b,center,div,font,i,iframe,s,span,section,u' ).forEach( ( el ) => {
            if ( isModalWindows( el ) && isNotHidden( el ) ) {
                modalFound = true;
                removeModal( el );
            }
        });
        if ( modalFound ) setTimeout( removeBackStuff, 150);
    }

    function removeModal( el, isNew ) {
        if ( (new RegExp(classes.join('|'))).test( el.classList ) ) return;
        if (isSafetyHeader(el)) return;

        if (el.className && (el.className.includes('pop_content') || el.className.includes('fc-ab-dialog'))) {
             hideElementRobustly(el);
             return;
        }

        if (isAntiAdblockText(el.textContent)) {
             hideElementRobustly(el);
             blockedCount++;
             try {
                var p = el.parentElement;
                if (p && window.getComputedStyle(p).position === 'fixed') hideElementRobustly(p);
             } catch(e){}

             if (isNew) setTimeout( removeBackStuff, 150);
             forceJailbreak();
             return;
        }

        if (isSafetyContent(el)) {
            forceContentRestore(el);
            return;
        }

        hideElementRobustly(el);
        blockedCount++;
        forceJailbreak();
    }

    // =============================================
    // 5. EXECUTION FLOW
    // =============================================

    window.addEventListener('DOMContentLoaded', (event) => {
        if (isCloudflare()) return;

        classes.push( getRandomName() );
        applyUserBlocks();

        if (!isPaused) {
            if (isPlayerIframe()) {
                enableRightClick();
                return;
            }

            var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
            var observer = new MutationObserver( (mutations) => {
                mutations.forEach( (mutation) => {
                    if ( mutation.addedNodes.length ) {
                        Array.prototype.forEach.call( mutation.addedNodes, ( el ) => {
                            if ( !tagNames_pattern.test ( el.tagName ) ) return;
                            if ( isModalWindows( el ) && isNotHidden( el ) ) {
                                removeModal( el, true );
                            }
                        });
                    }
                });
            });

            if (document.body) {
                observer.observe(document.body, { childList : true, subtree : true });
                setTimeout(() => showNotification('🛡️ Ultimate Anti-Adblock Killer (v10.12) Active'), 1000);
            }

            setTimeout( function() { checkModals(); }, 150 );
            setTimeout(function(){ document.querySelectorAll('iframe[id^="google_ads_iframe"]').forEach(el => el.style.display='none'); }, 2000);

            let checkCount = 0;
            let checkInterval = setInterval(() => {
                checkModals();
                removeBackStuff();
                cleanBackgroundWrappers();
                checkCount++;
                if(checkCount > 20) clearInterval(checkInterval);
            }, 1500);

            protectCore();
        }

        addStyle(`
            body { user-select: auto !important; }
            .uaak-force-scroll, body.scroll_on, html.scroll_on { overflow: visible !important; overflow-y: auto !important; }
            .hide_modal, .pop_content, .fc-ab-dialog, .fc-dialog-overlay { display: none !important; }
            .un_blur, .uaak-force-visible {
                filter: none !important; opacity: 1 !important; visibility: visible !important; max-height: none !important;
            }
            #fides-overlay, #fides-modal-overlay, #fides-overlay-wrapper {
                display: none !important;
                pointer-events: none !important;
                width: 0 !important;
                height: 0 !important;
                opacity: 0 !important;
                background: transparent !important;
            }
        `);
    });

    window.addEventListener('load', (event) => {
        if (isCloudflare()) return;
        setTimeout( function() {
            enableRightClick();
            if (!isPaused && !isPlayerIframe()) {
                checkModals();
                forceJailbreak();
            }
        }, 1500 );
    });

})();