Space Theme for StumbleChat (Stealth)

Space theme with anti-detection measures

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==UserScript==
// @name         Space Theme for StumbleChat (Stealth)
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  Space theme with anti-detection measures
// @author       You
// @match        https://stumblechat.com/room/*
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // Randomize function and variable names to avoid detection
    const randomString = (length = 10) => {
        const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        let result = '';
        for (let i = 0; i < length; i++) {
            result += chars.charAt(Math.floor(Math.random() * chars.length));
        }
        return result;
    };

    // Create a random namespace for our functions
    const namespace = randomString(8);
    window[namespace] = {};

    // Obfuscate the CSS injection
    const injectStyles = function() {
        try {
            const styleElement = document.createElement('style');
            styleElement.id = randomString(12);
            styleElement.textContent = `
                /* Space Theme CSS */
                body {
                    background: linear-gradient(135deg, #0a0a2e 0%, #16213e 50%, #0f3460 100%) !important;
                    color: #e0e0e0 !important;
                }

                #room {
                    background: rgba(10, 10, 46, 0.8) !important;
                    border-radius: 10px !important;
                    box-shadow: 0 0 20px rgba(138, 43, 226, 0.3) !important;
                }

                #userlist {
                    background: rgba(15, 52, 96, 0.7) !important;
                    border-right: 1px solid rgba(138, 43, 226, 0.3) !important;
                }

                .room-name {
                    color: #a78bfa !important;
                    text-shadow: 0 0 10px rgba(167, 139, 250, 0.5) !important;
                }

                #chat-wrapper {
                    background: rgba(15, 52, 96, 0.7) !important;
                    border-left: 1px solid rgba(138, 43, 226, 0.3) !important;
                }

                #chat-content {
                    background: rgba(10, 10, 46, 0.5) !important;
                    border-radius: 8px !important;
                    margin: 5px !important;
                    padding: 10px !important;
                }

                #textarea {
                    background: rgba(10, 10, 46, 0.7) !important;
                    border: 1px solid rgba(138, 43, 226, 0.5) !important;
                    color: #e0e0e0 !important;
                    border-radius: 5px !important;
                }

                #videos {
                    background: rgba(10, 10, 46, 0.5) !important;
                }

                .header {
                    background: rgba(15, 52, 96, 0.7) !important;
                    border-bottom: 1px solid rgba(138, 43, 226, 0.3) !important;
                }

                button, .dropbtn {
                    background: linear-gradient(135deg, #3a1c71, #d76d77, #ffaf7b) !important;
                    border: none !important;
                    color: white !important;
                    border-radius: 5px !important;
                    transition: all 0.3s ease !important;
                }

                button:hover, .dropbtn:hover {
                    background: linear-gradient(135deg, #d76d77, #ffaf7b, #3a1c71) !important;
                    box-shadow: 0 0 10px rgba(255, 175, 123, 0.5) !important;
                }

                .list li {
                    background: rgba(15, 52, 96, 0.5) !important;
                    border-radius: 5px !important;
                    margin: 3px 0 !important;
                    padding: 5px !important;
                    transition: all 0.3s ease !important;
                }

                .list li:hover {
                    background: rgba(58, 28, 113, 0.5) !important;
                    transform: translateX(5px) !important;
                }

                #chat-content > div {
                    background: rgba(10, 10, 46, 0.3) !important;
                    border-radius: 5px !important;
                    padding: 5px !important;
                    margin: 3px 0 !important;
                    border-left: 3px solid #8a2be2 !important;
                }

                .user-menu, .video-menu {
                    background: linear-gradient(135deg, #16213e, #0f3460) !important;
                    border: 1px solid rgba(138, 43, 226, 0.5) !important;
                    border-radius: 10px !important;
                    box-shadow: 0 0 15px rgba(138, 43, 226, 0.3) !important;
                }

                .user-menu-item, .video-menu-item {
                    border-bottom: 1px solid rgba(138, 43, 226, 0.2) !important;
                }

                .user-menu-item:hover, .video-menu-item:hover {
                    background: rgba(58, 28, 113, 0.3) !important;
                }

                .on-white-scroll::-webkit-scrollbar {
                    width: 8px !important;
                }

                .on-white-scroll::-webkit-scrollbar-track {
                    background: rgba(10, 10, 46, 0.3) !important;
                    border-radius: 4px !important;
                }

                .on-white-scroll::-webkit-scrollbar-thumb {
                    background: linear-gradient(135deg, #8a2be2, #ffaf7b) !important;
                    border-radius: 4px !important;
                }
            `;

            // Hide the style element to avoid detection
            styleElement.style.display = 'none';

            // Add the style to head in a stealthy way
            const head = document.head || document.getElementsByTagName('head')[0];
            if (head) {
                head.appendChild(styleElement);
            }

            return styleElement.id;
        } catch (e) {
            console.error('Style injection failed:', e);
            return null;
        }
    };

    // Create starfield with stealth techniques
    window[namespace].createStarfield = function() {
        try {
            const containerId = randomString(10);
            const starsContainer = document.createElement('div');
            starsContainer.id = containerId;
            starsContainer.className = 'stars-container';
            starsContainer.style.position = 'fixed';
            starsContainer.style.top = '0';
            starsContainer.style.left = '0';
            starsContainer.style.width = '100%';
            starsContainer.style.height = '100%';
            starsContainer.style.pointerEvents = 'none';
            starsContainer.style.zIndex = '-1';

            // Create stars
            for (let i = 0; i < 200; i++) {
                const star = document.createElement('div');
                star.className = 'star';
                star.style.position = 'absolute';
                star.style.backgroundColor = 'white';
                star.style.borderRadius = '50%';
                star.style.left = Math.random() * 100 + '%';
                star.style.top = Math.random() * 100 + '%';

                const size = Math.random() * 3;
                star.style.width = size + 'px';
                star.style.height = size + 'px';
                star.style.animation = `twinkle ${3 + Math.random() * 2}s infinite`;
                star.style.animationDelay = Math.random() * 3 + 's';

                starsContainer.appendChild(star);
            }

            // Create planets
            for (let i = 0; i < 3; i++) {
                const planet = document.createElement('div');
                planet.className = 'planet';
                planet.style.position = 'absolute';
                planet.style.borderRadius = '50%';
                planet.style.opacity = '0.7';
                planet.style.left = Math.random() * 100 + '%';
                planet.style.top = Math.random() * 100 + '%';

                const size = 30 + Math.random() * 50;
                planet.style.width = size + 'px';
                planet.style.height = size + 'px';

                const colors = [
                    'linear-gradient(135deg, #ff6b6b, #4ecdc4)',
                    'linear-gradient(135deg, #8a2be2, #ffaf7b)',
                    'linear-gradient(135deg, #ff9a00, #ff00ff)'
                ];
                planet.style.background = colors[Math.floor(Math.random() * colors.length)];
                planet.style.animation = `float ${15 + Math.random() * 10}s infinite linear`;

                starsContainer.appendChild(planet);
            }

            // Add animation keyframes if not already added
            if (!document.getElementById('space-animations')) {
                const animStyle = document.createElement('style');
                animStyle.id = 'space-animations';
                animStyle.textContent = `
                    @keyframes twinkle {
                        0% { opacity: 0.3; }
                        50% { opacity: 1; }
                        100% { opacity: 0.3; }
                    }
                    @keyframes float {
                        0% { transform: translateY(0) rotate(0deg); }
                        50% { transform: translateY(-20px) rotate(180deg); }
                        100% { transform: translateY(0) rotate(360deg); }
                    }
                `;
                document.head.appendChild(animStyle);
            }

            document.body.appendChild(starsContainer);
            return containerId;
        } catch (e) {
            console.error('Starfield creation failed:', e);
            return null;
        }
    };

    // Add space emoji button with stealth
    window[namespace].addSpaceEmojis = function() {
        try {
            const textarea = document.getElementById('textarea');
            if (!textarea) return false;

            const emojiButtonId = randomString(10);
            const emojiButton = document.createElement('button');
            emojiButton.id = emojiButtonId;
            emojiButton.textContent = '🪐';
            emojiButton.style.position = 'absolute';
            emojiButton.style.right = '10px';
            emojiButton.style.top = '5px';
            emojiButton.style.background = 'transparent';
            emojiButton.style.border = 'none';
            emojiButton.style.fontSize = '20px';
            emojiButton.style.cursor = 'pointer';
            emojiButton.style.zIndex = '10';

            const spaceEmojis = ['🚀', '🪐', '🌌', '⭐', '🌟', '🌠', '🌙', '🛸', '👽', '🛰️', '🌍', '🌎', '🌏', '☄️'];

            emojiButton.addEventListener('click', function() {
                const randomEmoji = spaceEmojis[Math.floor(Math.random() * spaceEmojis.length)];
                textarea.value += randomEmoji;
                textarea.focus();
            });

            textarea.parentElement.style.position = 'relative';
            textarea.parentElement.appendChild(emojiButton);
            return emojiButtonId;
        } catch (e) {
            console.error('Space emoji button creation failed:', e);
            return false;
        }
    };

    // Main initialization function with stealth
    window[namespace].initTheme = function() {
        try {
            // Inject styles
            const styleId = injectStyles();

            // Create starfield
            const starsId = window[namespace].createStarfield();

            // Add space emojis after a delay
            setTimeout(function() {
                window[namespace].addSpaceEmojis();
            }, 1000);

            // Store references for potential cleanup
            window[namespace].elements = {
                style: styleId,
                stars: starsId
            };

            return true;
        } catch (e) {
            console.error('Theme initialization failed:', e);
            return false;
        }
    };

    // Override common detection methods
    const originalQuerySelector = document.querySelector;
    document.querySelector = function(selector) {
        if (selector && selector.includes('userscript') && selector.includes('tampermonkey')) {
            return null;
        }
        return originalQuerySelector.call(this, selector);
    };

    // Override console methods to hide our traces
    const originalLog = console.log;
    console.log = function() {
        if (arguments[0] && typeof arguments[0] === 'string' &&
            (arguments[0].includes('tampermonkey') || arguments[0].includes('userscript'))) {
            return;
        }
        return originalLog.apply(console, arguments);
    };

    // Initialize with a delay to avoid detection
    setTimeout(function() {
        if (document.readyState === 'complete' || document.readyState === 'interactive') {
            window[namespace].initTheme();
        } else {
            window.addEventListener('load', function() {
                window[namespace].initTheme();
            });
        }
    }, Math.random() * 1000 + 500);
})();