// ==UserScript== // @name Xchina disable popup // @namespace http://tampermonkey.net/ // @version 1.5 // @description 绕过xChina弹窗检测 // @author Aloazny && Grok // @license MIT // @run-at document-start // @match *://*.1909.me/* // @match *://*.8se.me/* // @match *://*.crxs.me/* // @match *://*.litu100.xyz/* // @match *://*.shise.me/* // @match *://*.xbbs.me/* // @match *://*.xbookcn.org/* // @match *://*.xchina*.*/* // @match *://*.xchina-cn.com/* // @match *://*.xchina.biz/* // @match *://*.xchina.co/* // @match *://*.xchina.com/* // @match *://*.xchina.fit/* // @match *://*.xchina.fun/* // @match *://*.xchina.ink/* // @match *://*.xchina.pro/* // @match *://*.xchina.site/* // @match *://*.xchina.store/* // @match *://*.xchina.tv/* // @match *://*.xchina001.site/* // @match *://*.xchina003.site/* // @match *://1909.me/* // @match *://8se.me/* // @match *://crxs.me/* // @match *://litu100.xyz/* // @match *://shise.me/* // @match *://xbbs.me/* // @match *://xbookcn.org/* // @match *://xchina*.*/* // @match *://xchina-cn.com/* // @match *://xchina.biz/* // @match *://xchina.co/* // @match *://xchina.com/* // @match *://xchina.fit/* // @match *://xchina.fun/* // @match *://xchina.ink/* // @match *://xchina.pro/* // @match *://xchina.site/* // @match *://xchina.store/* // @match *://xchina.tv/* // @match *://xchina001.site/* // @match *://xchina003.site/* // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsSAAALEgHS3X78AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAIKSURBVFiF1ZexSxtRHMc/d2B0MBoJUpw8hKZTIZA/oNc/oLTg5tK4nJukUCh0aYcOduvYZGhT6JbFEimO10HrYFAREQKm51KXSBouS+JwHV6Cjd673JlLjn6XhB+/e59P3uW9d6fQjZPHAAwgw2hTqdsU5l9SAlC68HwXPrbYbUoz66wpzkdeobAxTngvpxe8V5w8Z8BSFALtKxpqVHCAyQnm1KjgvfxnAsk0PDHBcMRnLOHepz2DFeu6L5mWDqk4eRxf8FhCDBqbva5Vv4CZ7e9LZUH/3F+7+AFl3XVY/zPwINsPB0g9h7jmDQdYeCQddvj/QCrrDQe4PApBwNp0rz/MiXssgwP8zIUgYFtgfbtdj83C8oH8OnMVfpshCABUi4HaMVcHXhNMwNqE1nlo8OACAMcfQoPfTcBjUwkKDy6gF8Xa94pstQwt4AcOYsMKXcAvHMS+EKpAEDjA9KI4jEIRyLyVwztNcRi5JeX/NsgF4hpk3sjhZR12c+L7zWhP+w+pOwl4/YrdHFweQuePfF8YWsC23Os317nbmu80oX44pEC1KB4kemmdw9bj20DbElL/9pV1MTs+MviJKJmGyYTniQaIKY9rg/sCC4w4KlCLCl5v0VCbbQpRCXzdo6Ym1inYbfGmOs5sn1B7UaKiAHMA+68x7t/DmJka7avarzqNTzvU3n2nAvAXteumoVQH+scAAAAASUVORK5CYII= // @grant unsafeWindow // @grant GM_addStyle // @grant GM_cookie // ==/UserScript== (function() { 'use strict'; const w = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window; const d = document; function setCookie(name, value) { const domain = '.' + location.hostname.split('.').slice(-2).join('.'); const secure = location.protocol === 'https:' ? '; secure' : ''; const expires = new Date(Date.now() + 31536e6).toUTCString(); d.cookie = `${name}=${value}; expires=${expires}; path=/; domain=${domain}${secure}`; } function injectCSS(css) { if (typeof GM_addStyle === 'function') { GM_addStyle(css); } else { const style = Object.assign(d.createElement('style'), { textContent: css }); (d.head || d.documentElement).appendChild(style); } } // Css样式注入 const baseCSS =` .modal-alert, .block-overlay, .adblock-overlay {display:none!important} `.trim(); const hideCSS = ` .a-media.ex-728-90, .ad, .exoclick_300x250, .exoclick_300x500, .google-adsbygoogle, .media, .outer-banner, .photos > div.item > div > a[target="_blank"], .photos > div.item > div[class^="exoclick_"], .push-bottom, .push-bottom-container[clickmode="cpt"], .push-bottom-container[key] > .push-bottom, .push-slider[key^="clicked_cpt"], .push-top, .push-top-container > .push-top[key], .slider-ad, [adid], [class*="exoclick_"], [class*="fa-ban"], [class^="photoMask"], [class^="playerMask"], [href="#"]:not([data-page]), [src^="https://xchina.click/"], a[clickmode="ad"], a[clickmode="cpt"], a[clickmode="cpt"][target="_blank"][rel="nofollow noopener"] > img[src*="xchina"], a[href*="//go.mnaspm.com"], a[href*="/xchina.fun/redirect/ad"], a[href*="xchina.click/prepare."], a[href^="https://xchina.app"], a[href^="https://xchina.click/"], div > div:only-child > .media img[src*="/ad/"], div.ex-300-250, div.item > div.a-media, div.media > a > img[src*="xchina"], div.recommendation_widget, div[class*="jquery-modal"], div[class*="modalAd"], div[class^="item photo zone"], div[linkurl^="https://xchina.click/"], div[style*="width: 300px;"][style*="height: 455px;"], div[url^="https://xchina.click/"], iframe[src*=".magsrv.com/"], iframe[width="728"][height="90"], ins.adsbygoogle[data-ad-slot], script[src$="/ad-provider.js"] + ins {display:none!important} `.trim(); const imgCSS = ` div.media > a > img[src^="https://upload.xchina.biz/ad/"] {display:none!important} div.media > a > img[src^="https://upload.xchina.biz/ad/"] ~ * {display:none!important} `.trim(); const cssContents = [baseCSS, hideCSS, imgCSS]; const styleIds = ['xchina-base', 'xchina-hide', 'xchina-img']; let injectedStyles = new Set(); function ensureCSSInjection() { cssContents.forEach((css, index) => { const styleId = styleIds[index]; if (!injectedStyles.has(styleId)) { const existing = d.getElementById(styleId); if (!existing) { const style = Object.assign(d.createElement('style'), { textContent: css, id: styleId }); (d.head || d.documentElement).appendChild(style); injectedStyles.add(styleId); } } }); } const cookieFix = /showed_adscarat_shuffle_box=0|clicked_modal=0/g; setCookie('showed_adscarat_shuffle_box', '1'); setCookie('clicked_modal', '1'); if (typeof GM_cookie === 'function') { ['showed_adscarat_shuffle_box', 'clicked_modal'].forEach(c => { try { GM_cookie.set({ name: c, value: '1', domain: location.hostname, path: '/', expirationDate: Math.floor(Date.now() / 1000) + 31536000 }); } catch (e) { setCookie(c, '1'); } }); } const cookieDesc = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie'); if (cookieDesc && cookieDesc.configurable) { Object.defineProperty(d, 'cookie', { get: function() { const cookies = cookieDesc.get.call(this); return cookies.replace(cookieFix, (match) => match.replace(/=0/g, '=1')); }, set: function(v) { v = v.replace(cookieFix, (match) => match.replace(/=0/g, '=1')); cookieDesc.set.call(this, v); }, configurable: true }); } w.googleAdsInstance = { initGoogleTag: () => { w.googletag = { cmd: [] }; }, initAdSense: () => { w.adsbygoogle = []; } }; w.googleAdsInstance.initGoogleTag(); w.googleAdsInstance.initAdSense(); const realFetch = w.fetch; w.fetch = function(input, init) { const url = typeof input === 'string' ? input : input.url || ''; if (/recordDetect|adblock|detect/i.test(url)) { return Promise.resolve(new Response('{"success":true}', { status: 200, headers: { 'Content-Type': 'application/json' } })); } if (url.includes && url.includes('6888.site/v2.php')) { return Promise.resolve(new Response('', { status: 200, statusText: 'OK' })); } return realFetch.apply(this, arguments); }; Object.defineProperty(w, 'googleAdsInstance', { value: w.googleAdsInstance, writable: false }); w.adConfigInstance = { active: true }; w.adsSystemLoaded = w.AD_SCRIPT_LOADED = true; w.google_ad_client = 'ca-pub-2085856493428967'; const noop = { fire: () => {}, show: () => {}, hide: () => {}, close: () => {}, showModal: () => {}, setContent: () => noop }; ['Swal', 'sweetAlert', 'layer', 'artDialog', 'dialog', 'modal', 'Modal', 'ModalAlert'].forEach(name => Object.defineProperty(w, name, { value: noop, writable: false, configurable: false }) ); const blockRegex = /Swal|modal_alert|请关闭广告拦截|isBlocked/i; w.setTimeout = new Proxy(w.setTimeout, { apply: (t, _, a) => blockRegex.test(a[0] + '') ? 0 : t(...a) }); w.setInterval = new Proxy(w.setInterval, { apply: (t, _, a) => blockRegex.test(a[0] + '') ? 0 : t(...a) }); d.addEventListener('beforescriptexecute', e => { if (blockRegex.test(e.target.textContent)) { e.preventDefault(); e.stopPropagation(); e.target.remove(); } }, true); ensureCSSInjection(); // 兼容Webview105以下 d.addEventListener('DOMContentLoaded', () => { d.querySelectorAll('[class$="article"]').forEach(el => { if (el.querySelector('.media > a > img[src^="https://upload.xchina.biz/ad/"]')) el.style.display = 'none'; }); d.querySelectorAll('div.item').forEach(el => { if (el.querySelector('div.a-media')) el.style.display = 'none'; }); d.querySelectorAll('div.media').forEach(el => { if (el.querySelector('a > img[src*="xchina"]')) el.style.display = 'none'; }); d.querySelectorAll('.photos > div.item').forEach(el => { if (el.querySelector('div > a[target="_blank"]') || el.querySelector('div[class^="exoclick_"]')) { el.style.display = 'none'; } }); d.querySelectorAll('div').forEach(el => { const child = el.firstElementChild; if (child && child === el.lastElementChild && child.querySelector && child.querySelector('.media img[src*="/ad/"]')) { el.style.display = 'none'; } }); }, false); const f = { detected: false, details: { first: false, second: false }, timestamp: Date.now() }; const h = (t, p) => { try { Object.defineProperty(t, p, { value: f, writable: true, configurable: true }); } catch(e) {} }; const c = Document.prototype.createElement; Document.prototype.createElement = function(t) { const e = c.call(this, t); if (t === 'script') { const desc = Object.getOwnPropertyDescriptor(HTMLScriptElement.prototype, 'src') || {}; Object.defineProperty(e, 'src', { set(v) { if (v && /ads?\.js|ad[\/.]|advertisement/.test(v)) { setTimeout(() => e.dispatchEvent(new Event('load')), 10); return; } desc.set ? desc.set.call(this, v) : this.setAttribute('src', v); }, get: () => e.getAttribute('src') }); } return e; }; const x = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(m, u) { if (u && /recordDetect|adblock|detect/i.test(u)) return; return x.apply(this, arguments); }; const o = w.registerSiteProbeCallback; w.registerSiteProbeCallback = function(cb) { if (o) o(cb); try { cb(f); } catch(e) {} }; const g = w.getSiteProbeKey; w.getSiteProbeKey = function() { let k = g ? g() : '__' + Math.random().toString(36).slice(2,8); h(w, k); return k; }; setTimeout(() => { const k = w.getSiteProbeKey(); h(w, k); w.dispatchEvent(new CustomEvent('site:probe:complete', { detail: { key: k, result: f } })); }, 100); const cssObserver = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.removedNodes.forEach((node) => { if (node.nodeType === 1 && node.tagName === 'STYLE' && styleIds.includes(node.id)) { setTimeout(ensureCSSInjection, 10); } }); }); ensureCSSInjection(); }); const elementObserver = new MutationObserver(() => { d.querySelectorAll('.block-overlay,[class*="block"][class*="overlay"],[class*="adb"][class*="overlay"]').forEach(e => e.remove()); }); cssObserver.observe(d.documentElement, { childList: true, subtree: true, attributes: false }); elementObserver.observe(d.documentElement, { childList: true, subtree: true }); })();