您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AD BLOCKER FOR MULTIPLE WEBSITES: NETFLIX,YOUTUBE,X,TIKTOK,ETC..
当前为
// ==UserScript== // @name XOTA PANNEL ✨(AD BLOCKER✅) // @namespace http://xota.com/ // @version 1.0 // @description AD BLOCKER FOR MULTIPLE WEBSITES: NETFLIX,YOUTUBE,X,TIKTOK,ETC.. // @author julx // @license MIT // @icon https://raw.githubusercontent.com/juliantopyu/XOTAICONS/refs/heads/main/WhatsApp_Image_2025-03-26_at_20.24.13-removebg-preview.png // @match *://*/* // @grant GM_addStyle // @grant GM_openInTab // @grant GM_notification // @grant GM_setValue // @grant GM_getValue // @require https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js // @resource font1 https://fonts.googleapis.com/css2?family=Bungee+Shade&display=swap // @resource font2 https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap // @resource font3 https://fonts.googleapis.com/css2?family=Monoton&display=swap // @resource discordIcon https://assets-global.website-files.com/6257adef93867e50d84d30e2/636e0a6a49cf127bf92de1e2_icon_clyde_blurple_RGB.png // @resource youtubeIcon https://www.google.com/s2/favicons?domain=youtube.com // @resource twitterIcon https://www.google.com/s2/favicons?domain=twitter.com // @resource facebookIcon https://www.google.com/s2/favicons?domain=facebook.com // @resource redditIcon https://www.google.com/s2/favicons?domain=reddit.com // @resource twitchIcon https://www.google.com/s2/favicons?domain=twitch.tv // @resource xotaIcon https://raw.githubusercontent.com/juliantopyu/XOTAICONS/refs/heads/main/WhatsApp_Image_2025-03-26_at_20.24.13-removebg-preview.png // ==/UserScript== GM_addStyle(` @import url('https://fonts.googleapis.com/css2?family=Bungee+Shade&family=Press+Start+2P&family=Monoton&display=swap'); #xota-panel { position: fixed; top: 50%; right: 0; transform: translateY(-50%); width: 300px; background: linear-gradient(135deg, #ff00cc 0%, #3333ff 100%); border: 3px solid #00ffff; border-radius: 15px 0 0 15px; box-shadow: 0 0 25px rgba(255, 0, 204, 0.7), 0 0 50px rgba(51, 51, 255, 0.5); padding: 20px; z-index: 9999; transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); font-family: 'Press Start 2P', cursive; } #xota-panel:hover { box-shadow: 0 0 35px rgba(255, 0, 204, 0.9), 0 0 70px rgba(51, 51, 255, 0.7); right: 5px; } #xota-header { display: flex; align-items: center; justify-content: center; gap: 15px; font-family: 'Monoton', cursive; font-size: 2.5rem; margin-bottom: 20px; color: #fff; text-shadow: 0 0 10px #00ffff, 0 0 20px #ff00cc, 0 0 30px #3333ff; animation: glow 2s ease-in-out infinite alternate; } #xota-logo { width: 50px; height: 50px; object-fit: contain; filter: drop-shadow(0 0 10px #00ffff) drop-shadow(0 0 20px #ff00cc); animation: float 3s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } } @keyframes glow { from { text-shadow: 0 0 10px #00ffff, 0 0 20px #ff00cc, 0 0 30px #3333ff; } to { text-shadow: 0 0 15px #00ffff, 0 0 25px #ff00cc, 0 0 35px #3333ff, 0 0 45px #ff00cc; } } .xota-button { display: flex; align-items: center; width: 100%; padding: 12px; margin: 10px 0; border: none; border-radius: 8px; background: linear-gradient(to right, #ff00cc, #3333ff); color: white; font-family: 'Press Start 2P', cursive; font-size: 0.8rem; cursor: pointer; transition: all 0.3s ease; text-align: left; position: relative; overflow: hidden; } .xota-button:hover { transform: scale(1.05); box-shadow: 0 0 15px rgba(255, 255, 255, 0.7); } .xota-button:active { transform: scale(0.98); } .xota-button:before { content: ""; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: linear-gradient( to bottom right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 45%, rgba(255, 255, 255, 0.5) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100% ); transform: rotate(30deg); animation: shine 3s infinite; } @keyframes shine { 0% { left: -50%; top: -50%; } 100% { left: 150%; top: 150%; } } .xota-button i { margin-right: 10px; font-size: 1.2rem; width: 20px; text-align: center; } .site-icon { width: 20px; height: 20px; margin-right: 10px; } .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); z-index: 10000; justify-content: center; align-items: center; } .modal-content { background: linear-gradient(135deg, #1e1e2e 0%, #2a2a3a 100%); padding: 30px; border-radius: 15px; text-align: center; max-width: 500px; width: 90%; border: 3px solid #00ffff; box-shadow: 0 0 30px rgba(0, 255, 255, 0.8); animation: pulse 2s infinite; max-height: 80vh; overflow-y: auto; } @keyframes pulse { 0% { box-shadow: 0 0 30px rgba(0, 255, 255, 0.8); } 50% { box-shadow: 0 0 50px rgba(0, 255, 255, 1); } 100% { box-shadow: 0 0 30px rgba(0, 255, 255, 0.8); } } .modal h2 { color: white; font-family: 'Bungee Shade', cursive; margin-bottom: 20px; } .modal p { color: white; font-family: 'Press Start 2P', cursive; font-size: 0.8rem; margin-bottom: 20px; } .modal-close { background: #ff3366; color: white; border: none; padding: 10px 20px; border-radius: 5px; font-family: 'Press Start 2P', cursive; cursor: pointer; transition: all 0.3s ease; margin-top: 20px; } .modal-close:hover { background: #ff0044; transform: scale(1.1); } .button-active { animation: buttonClick 0.5s ease; } @keyframes buttonClick { 0% { transform: scale(1); } 50% { transform: scale(0.95); background: #00ffff; } 100% { transform: scale(1); } } #save-settings { background: #00cc66; margin-top: 10px; } #save-settings:hover { background: #00aa55; } .setting-item { margin-bottom: 15px; text-align: left; } .setting-item label { display: block; color: white; font-family: 'Press Start 2P', cursive; font-size: 0.7rem; margin-bottom: 5px; } .setting-item input[type="checkbox"] { margin-right: 10px; transform: scale(1.3); } .setting-item input[type="text"] { width: 100%; padding: 8px; border-radius: 5px; border: none; font-family: 'Press Start 2P', cursive; font-size: 0.7rem; } .popular-sites { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 20px 0; } .site-toggle { display: flex; align-items: center; background: rgba(255, 255, 255, 0.1); padding: 8px; border-radius: 5px; cursor: pointer; transition: all 0.2s; } .site-toggle:hover { background: rgba(255, 255, 255, 0.2); } .site-toggle input { margin-right: 8px; } /* INSANE EYE TOGGLE BUTTON - POSITIONED ON TOP */ #xota-eye-toggle { position: absolute; right: calc(100% + 15px); top: 20px; width: 50px; height: 50px; background: linear-gradient(45deg, #ff00cc, #3333ff); border: 3px solid #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; z-index: 10000; box-shadow: 0 0 20px rgba(255, 0, 204, 0.7), 0 0 40px rgba(51, 51, 255, 0.5); transition: all 0.3s ease; animation: eyeFloat 3s infinite ease-in-out; } @keyframes eyeFloat { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } } #xota-eye-toggle:hover { transform: scale(1.2) rotate(10deg); box-shadow: 0 0 30px rgba(255, 0, 204, 0.9), 0 0 60px rgba(51, 51, 255, 0.7), 0 0 90px rgba(0, 255, 255, 0.5); animation: none; } #xota-eye-toggle i { font-size: 24px; color: white; text-shadow: 0 0 10px #00ffff; transition: all 0.3s ease; } #xota-eye-toggle:hover i { transform: scale(1.3); text-shadow: 0 0 15px #00ffff, 0 0 30px #ff00cc; } /* EYE SPARKLE EFFECTS */ .eye-sparkle { position: absolute; width: 8px; height: 8px; background: white; border-radius: 50%; pointer-events: none; opacity: 0; filter: drop-shadow(0 0 5px cyan); } /* PANEL STATES */ .panel-hidden { transform: translateY(-50%) translateX(calc(100% + 20px)) !important; } .panel-hidden #xota-eye-toggle { right: calc(100% + 35px); } `); (function() { 'use strict'; // Initialize settings const defaultSettings = { adBlockEnabled: true, blockedSites: ['youtube.com', 'twitter.com', 'facebook.com', 'reddit.com', 'twitch.tv'], panelVisible: true }; let settings = GM_getValue('xotaSettings', defaultSettings); // Popular sites with icons const popularSites = [ { domain: 'youtube.com', name: 'YouTube', icon: 'https://www.google.com/s2/favicons?domain=youtube.com' }, { domain: 'twitter.com', name: 'Twitter', icon: 'https://www.google.com/s2/favicons?domain=twitter.com' }, { domain: 'facebook.com', name: 'Facebook', icon: 'https://www.google.com/s2/favicons?domain=facebook.com' }, { domain: 'reddit.com', name: 'Reddit', icon: 'https://www.google.com/s2/favicons?domain=reddit.com' }, { domain: 'twitch.tv', name: 'Twitch', icon: 'https://www.google.com/s2/favicons?domain=twitch.tv' }, { domain: 'instagram.com', name: 'Instagram', icon: 'https://www.google.com/s2/favicons?domain=instagram.com' }, { domain: 'tiktok.com', name: 'TikTok', icon: 'https://www.google.com/s2/favicons?domain=tiktok.com' }, { domain: 'netflix.com', name: 'Netflix', icon: 'https://www.google.com/s2/favicons?domain=netflix.com' } ]; // Create panel container const panel = document.createElement('div'); panel.id = 'xota-panel'; if (!settings.panelVisible) panel.classList.add('panel-hidden'); // Add header with logo const header = document.createElement('div'); header.id = 'xota-header'; // Create XOTA logo image const logoImg = document.createElement('img'); logoImg.id = 'xota-logo'; logoImg.src = 'https://raw.githubusercontent.com/juliantopyu/XOTAICONS/refs/heads/main/WhatsApp_Image_2025-03-26_at_20.24.13-removebg-preview.png'; logoImg.alt = 'XOTA Logo'; // Create header text const headerText = document.createElement('span'); headerText.textContent = 'XOTA'; // Add both to header header.appendChild(logoImg); header.appendChild(headerText); panel.appendChild(header); // Create Discord icon element const discordIcon = document.createElement('img'); discordIcon.className = 'site-icon'; discordIcon.src = 'https://assets-global.website-files.com/6257adef93867e50d84d30e2/636e0a6a49cf127bf92de1e2_icon_clyde_blurple_RGB.png'; discordIcon.alt = 'Discord'; // Create settings modal const settingsModal = document.createElement('div'); settingsModal.className = 'modal'; settingsModal.id = 'settings-modal'; // Create Discord modal const discordModal = document.createElement('div'); discordModal.className = 'modal'; discordModal.id = 'discord-modal'; // Add buttons const buttons = [ { icon: '<i class="fa fa-cog"></i>', text: 'AD-BLOCK SETTINGS', action: () => showModal('settings-modal') }, { icon: discordIcon.outerHTML, text: 'JOIN DISCORD', action: () => showModal('discord-modal') } ]; buttons.forEach(btn => { const button = document.createElement('button'); button.className = 'xota-button'; button.innerHTML = `${btn.icon} ${btn.text}`; button.addEventListener('click', function() { this.classList.add('button-active'); setTimeout(() => { this.classList.remove('button-active'); }, 500); btn.action(); }); panel.appendChild(button); }); // Build settings modal content const settingsContent = document.createElement('div'); settingsContent.className = 'modal-content'; settingsContent.innerHTML = ` <h2>XOTA AD-BLOCK SETTINGS</h2> <div class="setting-item"> <label> <input type="checkbox" id="ad-block-toggle" ${settings.adBlockEnabled ? 'checked' : ''}> ENABLE AD-BLOCK </label> </div> <h3>POPULAR SITES</h3> <div class="popular-sites" id="popular-sites-container"> <!-- Popular sites will be added here --> </div> <div class="setting-item"> <label for="blocked-sites">CUSTOM SITES (comma separated):</label> <input type="text" id="blocked-sites" value="${settings.blockedSites.filter(site => !popularSites.map(p => p.domain).includes(site)).join(', ')}"> </div> <button id="save-settings" class="xota-button"> <i class="fa fa-save"></i> SAVE SETTINGS </button> <button class="modal-close">CLOSE</button> `; settingsModal.appendChild(settingsContent); // Build Discord modal content const discordContent = document.createElement('div'); discordContent.className = 'modal-content'; discordContent.innerHTML = ` <h2>JOIN XOTA DISCORD!</h2> <p>CLICK BELOW TO JOIN OUR AWESOME COMMUNITY</p> <button id="discord-join" class="xota-button" style="margin: 0 auto;"> <img src="https://assets-global.website-files.com/6257adef93867e50d84d30e2/636e0a6a49cf127bf92de1e2_icon_clyde_blurple_RGB.png" class="site-icon" alt="Discord"> JOIN NOW </button> <button class="modal-close">CLOSE</button> `; discordModal.appendChild(discordContent); // Create INSANE EYE TOGGLE BUTTON (ON TOP OF PANEL) const eyeToggle = document.createElement('div'); eyeToggle.id = 'xota-eye-toggle'; eyeToggle.innerHTML = `<i class="fa ${settings.panelVisible ? 'fa-eye' : 'fa-eye-slash'}"></i>`; eyeToggle.addEventListener('click', function() { // Toggle panel visibility settings.panelVisible = !settings.panelVisible; GM_setValue('xotaSettings', settings); // Update icon this.innerHTML = `<i class="fa ${settings.panelVisible ? 'fa-eye' : 'fa-eye-slash'}"></i>`; // Toggle panel class panel.classList.toggle('panel-hidden'); // Create insane sparkle effect createSparkles(this); // Crazy bounce animation this.style.transform = 'scale(1.5) rotate(20deg)'; setTimeout(() => { this.style.transform = 'scale(1) rotate(0deg)'; }, 300); }); function createSparkles(element) { for (let i = 0; i < 15; i++) { const sparkle = document.createElement('div'); sparkle.className = 'eye-sparkle'; // Random position around the eye const angle = Math.random() * Math.PI * 2; const distance = 30 + Math.random() * 20; sparkle.style.left = '50%'; sparkle.style.top = '50%'; // Random animation const animName = `sparkleAnim${Date.now()}${i}`; const duration = 0.5 + Math.random() * 0.5; GM_addStyle(` @keyframes ${animName} { 0% { transform: translate(-50%, -50%) scale(0); opacity: 1; } 100% { transform: translate( ${Math.cos(angle) * distance}px, ${Math.sin(angle) * distance}px ) scale(${Math.random() * 0.5 + 0.5}); opacity: 0; } } `); sparkle.style.animation = `${animName} ${duration}s forwards`; element.appendChild(sparkle); // Remove after animation setTimeout(() => sparkle.remove(), duration * 1000); } } // Add eye toggle to panel (POSITIONED ON TOP) panel.appendChild(eyeToggle); // Add modals to body document.body.appendChild(settingsModal); document.body.appendChild(discordModal); document.body.appendChild(panel); // Populate popular sites const popularSitesContainer = document.getElementById('popular-sites-container'); popularSites.forEach(site => { const siteToggle = document.createElement('div'); siteToggle.className = 'site-toggle'; siteToggle.innerHTML = ` <input type="checkbox" id="site-${site.domain}" ${settings.blockedSites.includes(site.domain) ? 'checked' : ''}> <img src="${site.icon}" class="site-icon" alt="${site.name}"> <label for="site-${site.domain}">${site.name}</label> `; popularSitesContainer.appendChild(siteToggle); }); // Modal control functions function showModal(modalId) { document.getElementById(modalId).style.display = 'flex'; } function hideModal(modalId) { document.getElementById(modalId).style.display = 'none'; } // Close buttons document.querySelectorAll('.modal-close').forEach(btn => { btn.addEventListener('click', function() { hideModal(this.closest('.modal').id); }); }); // Save settings handler document.getElementById('save-settings').addEventListener('click', function() { const adBlockEnabled = document.getElementById('ad-block-toggle').checked; const blockedSites = [...settings.blockedSites]; // Get popular sites selections popularSites.forEach(site => { const checkbox = document.getElementById(`site-${site.domain}`); if (checkbox.checked && !blockedSites.includes(site.domain)) { blockedSites.push(site.domain); } else if (!checkbox.checked && blockedSites.includes(site.domain)) { const index = blockedSites.indexOf(site.domain); blockedSites.splice(index, 1); } }); // Add custom sites const customSites = document.getElementById('blocked-sites').value .split(',') .map(site => site.trim().toLowerCase()) .filter(site => site.length > 0 && !popularSites.map(p => p.domain).includes(site)); settings = { ...settings, adBlockEnabled, blockedSites: [...new Set([...blockedSites, ...customSites])] }; GM_setValue('xotaSettings', settings); GM_notification({ text: 'Settings saved successfully!', title: 'XOTA SETTINGS', timeout: 2000 }); // Reload to apply changes setTimeout(() => location.reload(), 1000); }); // Discord join button document.getElementById('discord-join').addEventListener('click', () => { GM_openInTab('https://discord.gg/NCsAVKkq', { active: true }); hideModal('discord-modal'); }); // Apply ad-blocking if enabled for current site const currentHost = window.location.hostname.replace('www.', ''); if (settings.adBlockEnabled && settings.blockedSites.some(site => currentHost.includes(site))) { applyAdBlocking(); } function applyAdBlocking() { console.log('XOTA Ad-blocker active on this site'); // Advanced ad-blocking selectors const adSelectors = [ // Universal ad selectors 'div[class*="ad"]', 'div[class*="Ad"]', 'div[id*="ad"]', 'div[id*="Ad"]', 'iframe[src*="ads"]', 'iframe[src*="ad."]', 'img[src*="ad"]', 'ins.adsbygoogle', 'div.ad-container', 'div.ad-wrapper', // Platform-specific selectors '#player-ads', // YouTube '.ytp-ad-module', // YouTube '.video-ads', // YouTube '[data-testid="placementTracking"]', // Twitter '[data-testid="ad"]', // Twitter '[aria-label="Ad"]', // Twitter '.ad-banner', // Common '.ad-sidebar', // Common '.ad-popup', // Common '.ad-overlay', // Common '.ad-notice', // Common '.advert', // Common '.sponsored-content', // Common '.promoted-content', // Common '.paid-content' // Common ]; // Remove ad elements adSelectors.forEach(selector => { document.querySelectorAll(selector).forEach(el => { el.remove(); console.log('Blocked ad element:', el); }); }); // Block ad scripts const adScripts = Array.from(document.scripts).filter(script => script.src && (script.src.includes('adservice') || script.src.includes('adsbygoogle') || script.src.includes('doubleclick') || script.src.includes('advertising')) ); adScripts.forEach(script => { script.remove(); console.log('Blocked ad script:', script.src); }); } })();