您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove all popups, overlays, and ads from YTS.mx and mirrors without breaking torrents. Includes on-page toggle to enable/disable cleanup.
// ==UserScript== // @name YTS Mirror Cleaner with Toggle // @namespace https://github.com/YOUR_USERNAME/yts-cleaner // @version 1.2 // @description Remove all popups, overlays, and ads from YTS.mx and mirrors without breaking torrents. Includes on-page toggle to enable/disable cleanup. // @author ChatGPT + You // @match *://yts.mx/* // @match *://yts.rs/* // @match *://yts.pm/* // @match *://yifytorrent/* // @match *://yts.lt/* // @match *://yts.ag/* // @icon https://yts.mx/assets/images/website/logo-YTS.svg // @grant none // ==/UserScript== (function () { 'use strict'; let enabled = true; const log = (...args) => console.log('[YTS Cleaner]', ...args); // Toggle Button UI function createToggle() { const toggle = document.createElement('div'); toggle.id = 'yts-clean-toggle'; toggle.textContent = '🧹 YTS Clean: ON'; toggle.style.position = 'fixed'; toggle.style.top = '10px'; toggle.style.right = '10px'; toggle.style.zIndex = 99999; toggle.style.background = '#0f0'; toggle.style.color = '#000'; toggle.style.padding = '5px 10px'; toggle.style.borderRadius = '6px'; toggle.style.fontSize = '14px'; toggle.style.cursor = 'pointer'; toggle.style.boxShadow = '0 0 5px #000'; toggle.style.userSelect = 'none'; toggle.addEventListener('click', () => { enabled = !enabled; toggle.textContent = enabled ? '🧹 YTS Clean: ON' : '🧹 YTS Clean: OFF'; toggle.style.background = enabled ? '#0f0' : '#f00'; }); document.body.appendChild(toggle); } // Main blocker logic function cleanUpPage() { if (!enabled) return; const selectors = [ 'iframe[src*="ads"]', 'iframe[src*="doubleclick"]', '.adsbox', '.ad-container', '#overlay', '.popupOverlay', '.underlay', 'div[id^="popup"]', 'div[class*="popup"]', 'div[class*="ads"]', 'div[onclick]', 'body > div:not([id]):not([class])' ]; selectors.forEach(sel => { document.querySelectorAll(sel).forEach(el => { el.remove(); log('Removed:', sel); }); }); const divs = document.querySelectorAll('div'); divs.forEach(el => { const style = getComputedStyle(el); const rect = el.getBoundingClientRect(); if (style.position === 'fixed' && rect.width >= window.innerWidth && rect.height >= window.innerHeight && style.zIndex > 1000) { el.remove(); log('Removed full overlay:', el); } }); document.documentElement.style.pointerEvents = 'auto'; document.body.style.pointerEvents = 'auto'; } // Prevent hijack clicks function blockHijackClicks() { document.addEventListener('click', e => { if (!enabled) return; if (!e.target.closest('a')) { e.stopImmediatePropagation(); } }, true); } // Block window.open entirely window.open = () => { if (!enabled) return; log('Blocked popup via window.open'); return null; }; // Setup function initCleaner() { createToggle(); cleanUpPage(); blockHijackClicks(); setInterval(cleanUpPage, 1000); window.addEventListener('load', cleanUpPage); window.addEventListener('scroll', cleanUpPage); } initCleaner(); })();