☰

πŸ—‘οΈ Pro Upsell Remover (Layout Fixed + Error Killer)

Remove "Unlock pro models" + Error screens + Fix ALL layout issues

이 μŠ€ν¬λ¦½νŠΈλŠ” 직접 μ„€μΉ˜ν•˜λŠ” μš©λ„κ°€ μ•„λ‹™λ‹ˆλ‹€. λ‹€λ₯Έ μŠ€ν¬λ¦½νŠΈμ—μ„œ 메타 μ§€μ‹œλ¬Έ // @require https://update.greatest.deepsurf.us/scripts/574222/1800763/%F0%9F%97%91%EF%B8%8F%20Pro%20Upsell%20Remover%20%28Layout%20Fixed%20%2B%20Error%20Killer%29.js을(λ₯Ό) μ‚¬μš©ν•˜μ—¬ ν¬ν•¨ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ Tampermonkey, Greasemonkey λ˜λŠ” Violentmonkey와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ Tampermonkey와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ Tampermonkey λ˜λŠ” Violentmonkey와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ Tampermonkey λ˜λŠ” Userscripts와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ Tampermonkey와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ μœ μ € 슀크립트 κ΄€λ¦¬μž ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

(이미 μœ μ € 슀크립트 κ΄€λ¦¬μžκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€!)

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ Stylus와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ Stylus와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ Stylus와 같은 ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ μœ μ € μŠ€νƒ€μΌ κ΄€λ¦¬μž ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ μœ μ € μŠ€νƒ€μΌ κ΄€λ¦¬μž ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ„€μΉ˜ν•˜λ €λ©΄ μœ μ € μŠ€νƒ€μΌ κ΄€λ¦¬μž ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

(이미 μœ μ € μŠ€νƒ€μΌ κ΄€λ¦¬μžκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€!)

// ==UserScript==
// @name         πŸ—‘οΈ Pro Upsell Remover (Layout Fixed + Error Killer)
// @namespace    http://violentmonkey.github.io/
// @version      3.1
// @description  Remove "Unlock pro models" + Error screens + Fix ALL layout issues
// @author       You
// @match        *://*/*
// @grant        none
// @run-at       document-start
// @noframes
// ==/UserScript==

(function() {
    'use strict';

    console.log('☠️ UPSell + ERROR KILLER v4.1 - LOCKING ON ALL TARGETS...');

    // ========== STEP 1: IMMEDIATE CSS STRIKE ==========
    const killerCSS = document.createElement('style');
    killerCSS.id = 'upsell-killer';
    killerCSS.textContent = `
        /* Upsell targets */
        div.relative.z-10.p-3.sm\\:p-4,
        div[class*="relative z-10 p-3 sm:p-4"],
        div[class*="p-3 sm:p-4"][class*="z-10"] {
            all: unset !important;
            display: none !important !important;
            visibility: hidden !important !important;
            opacity: 0 !important !important;
            height: 0px !important !important;
            width: 0px !important !important;
            margin: 0 !important !important;
            padding: 0 !important !important;
            border: none !important !important;
            position: absolute !important !important;
            left: -10000px !important !important;
            top: -10000px !important !important;
            z-index: -100000 !important !important;
            transform: scale(0) !important !important;
            pointer-events: none !important !important;
            overflow: hidden !important !important;
        }

        /* ERROR SCREEN KILLER */
        div[style*="height: 100vh"],
        div[style*="height: 100vh"][style*="text-align: center"],
        div[style*="display: flex"][style*="flex-direction: column"][style*="align-items: center"][style*="justify-content: center"],
        h2[style*="font-size: 14px"][style*="font-weight: 400"][style*="line-height: 28px"] {
            display: none !important;
            visibility: hidden !important;
            height: 0 !important;
            width: 0 !important;
            opacity: 0 !important;
            position: absolute !important;
            left: -9999px !important;
            top: -9999px !important;
            z-index: -99999 !important;
        }

        /* Force children hidden */
        div.relative.z-10.p-3.sm\\:p-4 *,
        div[class*="relative z-10 p-3"] *,
        div[style*="height: 100vh"] * {
            display: none !important;
        }

        /* Layout repair */
        div.relative.z-10.p-3.sm\\:p-4 ~ *,
        div[class*="p-3 sm:p-4"] ~ *,
        div[style*="height: 100vh"] ~ * {
            margin-top: 0 !important;
            padding-top: 0 !important;
        }
    `;
    (document.head || document.documentElement).appendChild(killerCSS);

    // ========== STEP 2: DOM HUNTER ==========
    function huntAndDestroy() {
        let killed = false;

        // Exact upsell match
        const exactTarget = document.querySelector('div.relative.z-10.p-3.sm\\:p-4');
        if (exactTarget) {
            exactTarget.remove();
            console.log('🎯 EXACT UPSELL TARGET DESTROYED!');
            killed = true;
        }

        // ERROR SCREEN HUNT
        const errorTargets = document.querySelectorAll('div[style*="height: 100vh"], h2[style*="font-size: 14px"][style*="Application error"]');
        errorTargets.forEach(el => {
            if (el.textContent?.includes('Application error') || el.style?.height === '100vh') {
                el.remove();
                console.log('🚨 ERROR SCREEN DESTROYED!');
                killed = true;
            }
        });

        // Partial class match (upsell)
        const partialTargets = document.querySelectorAll('div[class*="relative"][class*="z-10"][class*="p-3"]');
        partialTargets.forEach(el => {
            if (el.querySelector('h2')?.textContent?.includes('Unlock')) {
                el.remove();
                console.log('πŸ”₯ PARTIAL UPSELL TARGET DESTROYED!');
                killed = true;
            }
        });

        // Text-based hunt (upsell + error)
        document.querySelectorAll('*').forEach(el => {
            const text = (el.textContent || '').toLowerCase();
            if (text.includes('unlock pro models') || text.includes('application error')) {
                const parent = el.closest('div[class*="relative"], div[class*="p-3"], div[style*="height: 100vh"]');
                if (parent) {
                    parent.remove();
                    console.log('πŸ’€ TEXT HUNT SUCCESS!');
                    killed = true;
                }
            }
        });

        return killed;
    }

    // ========== STEP 3: RELENTLESS ASSAULT ==========
    let killCount = 0;
    const assault = setInterval(() => {
        if (huntAndDestroy()) {
            killCount++;
            console.log(`⚑ KILL #${killCount} - Target eliminated!`);
        }

        // Check if page is fully loaded
        if (document.readyState === 'complete' && killCount >= 5) {
            clearInterval(assault);
            console.log('πŸ† ASSAULT COMPLETE - ALL TARGETS ELIMINATED');
        }
    }, 10); // 10ms intervals - NO MERCY

    // ========== STEP 4: MUTATION SHIELD ==========
    function deployShield() {
        const shield = new MutationObserver(mutations => {
            for (let mutation of mutations) {
                if (mutation.type === 'childList') {
                    mutation.addedNodes.forEach(node => {
                        if (node.nodeType === 1) {
                            // New upsell div?
                            if (node.className && (
                                node.className.includes('relative') &&
                                node.className.includes('z-10') &&
                                node.className.includes('p-3')
                            )) {
                                node.remove();
                                console.log('πŸ›‘οΈ SHIELD: Upsell threat destroyed!');
                            }

                            // New ERROR screen?
                            if (node.style && (
                                node.style.height === '100vh' ||
                                (node.style.display === 'flex' && node.style.alignItems === 'center')
                            )) {
                                node.remove();
                                console.log('πŸ›‘οΈ SHIELD: Error screen destroyed!');
                            }

                            // Check for error text in children
                            const h2 = node.querySelector?.('h2');
                            if (h2?.textContent?.includes('Unlock') || h2?.textContent?.includes('Application error')) {
                                node.remove();
                                console.log('πŸ›‘οΈ SHIELD: Threat by text destroyed!');
                            }
                        }
                    });
                }
            }
        });

        if (document.documentElement) {
            shield.observe(document.documentElement, {
                childList: true,
                subtree: true,
                attributes: true,
                attributeFilter: ['class', 'style']
            });
        }
    }

    // ========== STEP 5: CSS REINFORCEMENT ==========
    setInterval(() => {
        const css = document.getElementById('upsell-killer');
        if (!css || css.sheet.cssRules.length === 0) {
            (document.head || document.documentElement).appendChild(killerCSS.cloneNode(true));
        }
    }, 500);

    // ========== INITIAL STRIKE ==========
    setTimeout(huntAndDestroy, 0);
    setTimeout(huntAndDestroy, 50);
    setTimeout(huntAndDestroy, 200);
    setTimeout(huntAndDestroy, 500);
    setTimeout(deployShield, 100);

    // ========== VICTORY CONFIRMATION ==========
    setTimeout(() => {
        console.log(`
        ☠️========== MISSION ACCOMPLISHED ==========
        βœ… Upsell Target: div.relative.z-10.p-3.sm:p-4 βœ“
        βœ… ERROR Screen: height: 100vh + "Application error" βœ“
        βœ… CSS: Deployed βœ“
        βœ… Assault: 10ms intervals βœ“
        βœ… Shield: Active βœ“
        βœ… Total Kills: ${killCount}
        ☠️ NO SURVIVORS - CLEAN PAGE!
        `);
    }, 3000);

})();