// ==UserScript== // @name 4khd 广告屏蔽 // @namespace https://viayoo.com // @version 0.44 // @description 移除4khd广告。 // @author Via // @license MIT // @match *://*.4khd.com/* // @match *://*.xxtt.ink/* // @match *://*.uuss.uk/* // @run-at document-start // @grant none // ==/UserScript== (function() { 'use strict'; const AD_SELECTORS = '.exo_wrapper,.popup,.centbtd,.exo-native-widget,.exo-native-widget-outer-container,ins[data-processed="true"],.popup-iframe,ins.adsbynetwork'; const BLOCK_URL_PATTERNS = [/(magsrv|pemsrv|ad-provider|exoclick)\.com/i]; const BLOCK_CONTENT_PATTERNS = [/(magsrv|pemsrv|ad-provider|exoclick)\.com/i, /ad-provider\.js/i, /AdProvider/i, /RocketBrowser/i, /data-rocketlazyloadscript/i]; Object.defineProperty(window, 'AdProvider', { value: [], writable: false }); location.reload = function() { return false; }; if (navigator.serviceWorker && navigator.serviceWorker.controller) { navigator.serviceWorker.controller.postMessage = function() {}; } const originalFetch = window.fetch; window.fetch = function(...args) { let url = ''; if (typeof args[0] === 'string') { url = args[0]; } else if (args[0] && typeof args[0] === 'object' && args[0].url) { url = args[0].url; } if (BLOCK_URL_PATTERNS.some(function(p) { return p.test(url); })) { return Promise.resolve(new Response('', { status: 200 })); } if (url.indexOf('venor.php') !== -1) { return Promise.resolve(new Response('1', { status: 200 })); } if (url.indexOf('popunder1000.js') !== -1 || url.indexOf('pemsrv.com') !== -1) { return Promise.resolve(new Response('', { status: 200 })); } return originalFetch.apply(this, args); }; const origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { if (typeof url === 'string') { if (BLOCK_URL_PATTERNS.some(function(p) { return p.test(url); }) || url.indexOf('venor.php') !== -1) { return; } } return origOpen.apply(this, arguments); }; if (navigator.serviceWorker && typeof navigator.serviceWorker.register === 'function') { navigator.serviceWorker.register = function() { return Promise.reject(); }; } const origOpenWin = window.open; window.open = function(...args) { const url = args[0] || ''; const target = args[1] || ''; if (/magsrv|ads|pop/i.test(url)) return null; if ( url.indexOf('splash.php') !== -1 || url.indexOf('syndication') !== -1 || target === '_blank' || target === '_self' || url === document.URL || url === document.referrer ) { return null; } return origOpenWin.apply(this, args); }; const origCreate = document.createElement; document.createElement = function(tag) { const el = origCreate.call(this, tag); if (tag === 'a') { el.click = function() {}; el.dispatchEvent = function() {}; } return el; }; document.addEventListener('click', function(e) { if (e.isTrusted === false) { e.stopImmediatePropagation(); e.preventDefault(); return false; } }, true); const blockScript = function(node) { if (node.tagName !== 'SCRIPT') return false; const src = node.src || ''; const txt = node.textContent || ''; if (BLOCK_CONTENT_PATTERNS.some(function(re) { return re.test(src) || re.test(txt); })) { node.parentNode && node.parentNode.removeChild(node); return true; } if (node.hasAttribute && node.hasAttribute('data-rocketlazyloadscript')) { node.parentNode && node.parentNode.removeChild(node); return true; } if ( txt.indexOf('popMagic') !== -1 || txt.indexOf('popunder1000.js') !== -1 || txt.indexOf('venor.php') !== -1 || txt.indexOf('ad-provider.js') !== -1 || txt.indexOf('adConfig') !== -1 || src.indexOf('ad-provider.js') !== -1 ) { node.textContent = ''; node.parentNode && node.parentNode.removeChild(node); return true; } return false; }; const clearStorage = function() { var keys = ['storedResult', 'inData', 'extranks', 'contentSize', 'Better', 'inData2', 'BetterJsPop_lastOpenedAt']; for (var i = 0; i < keys.length; i++) { localStorage.removeItem(keys[i]); } var cookies = document.cookie.split(';'); for (var j = 0; j < cookies.length; j++) { var name = cookies[j].split('=')[0].replace(/^\s+|\s+$/g, ''); if (name.indexOf('zone-cap-') === 0) { document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'; } } }; const removeAds = function() { var elements = document.querySelectorAll(AD_SELECTORS); for (var i = 0; i < elements.length; i++) { var el = elements[i]; if (el && el.parentNode) { el.parentNode.removeChild(el); } } clearStorage(); }; var removeTimer = 0; const debouncedRemoveAds = function() { clearTimeout(removeTimer); removeTimer = setTimeout(removeAds, 80); }; var observer = new MutationObserver(function(muts) { for (var i = 0; i < muts.length; i++) { var m = muts[i]; for (var j = 0; j < m.addedNodes.length; j++) { var n = m.addedNodes[j]; if (n.nodeType !== 1) continue; if (blockScript(n)) continue; var scripts = n.querySelectorAll ? n.querySelectorAll('script') : []; for (var k = 0; k < scripts.length; k++) { blockScript(scripts[k]); } debouncedRemoveAds(); } } }); observer.observe(document, { childList: true, subtree: true }); const init = function() { if (document.body) { removeAds(); clearStorage(); setInterval(clearStorage, 3000); } else { setTimeout(init, 10); } }; if (document.readyState === 'loading' || document.readyState === 'interactive') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();