// ==UserScript== // @name Google广告 全网站广告拦截 // @namespace https://openuserjs.org/scripts/ner0/Google_AdSense_Ads_Remover // @version 1.0.0 // @description 拦截所有网站的Google AdSense广告,移除广告节点,阻止广告脚本加载 // @author ner0 & 社区优化 // @match *://*/* // @grant none // @license MIT // @run-at document-start // @downloadURL https://update.greasyfork.icu/scripts/575420/Google%E5%B9%BF%E5%91%8A%20%E5%85%A8%E7%BD%91%E7%AB%99%E5%B9%BF%E5%91%8A%E6%8B%A6%E6%88%AA.user.js // @updateURL https://update.greasyfork.icu/scripts/575420/Google%E5%B9%BF%E5%91%8A%20%E5%85%A8%E7%BD%91%E7%AB%99%E5%B9%BF%E5%91%8A%E6%8B%A6%E6%88%AA.meta.js // ==/UserScript== (function() { 'use strict'; // 1. 拦截Google广告脚本加载 const blockAdScripts = () => { const adScripts = document.querySelectorAll('script'); adScripts.forEach(script => { // 匹配Google广告核心脚本域名 if ( script.src.includes('pagead2.googlesyndication.com') || script.src.includes('adsbygoogle.js') || script.src.includes('googleads.g.doubleclick.net') || script.src.includes('static.doubleclick.net') ) { script.remove(); script.type = 'javascript/blocked'; // 阻止脚本执行 console.log('已拦截Google广告脚本:', script.src); } }); }; // 2. 移除已渲染的广告节点 const removeAdNodes = () => { const adSelectors = [ 'ins.adsbygoogle', // AdSense核心广告容器 'div[id*="google_ads_"]', 'div[class*="google-ad"]', 'iframe[src*="doubleclick.net"]', 'iframe[src*="googleadservices.com"]', 'div[data-google-av-ad-container]', ]; adSelectors.forEach(selector => { const ads = document.querySelectorAll(selector); ads.forEach(ad => ad.remove()); }); }; // 页面加载早期拦截脚本 document.addEventListener('beforescriptexecute', (e) => { const src = e.target.src; if ( src.includes('pagead2.googlesyndication.com') || src.includes('adsbygoogle.js') || src.includes('doubleclick.net') ) { e.preventDefault(); e.stopPropagation(); console.log('已提前阻止Google广告脚本执行'); } }); // 全周期执行拦截 window.addEventListener('DOMContentLoaded', () => { blockAdScripts(); removeAdNodes(); }); window.addEventListener('load', () => { blockAdScripts(); removeAdNodes(); }); // 动态监听拦截 const observer = new MutationObserver(() => { blockAdScripts(); removeAdNodes(); }); observer.observe(document.documentElement, { childList: true, subtree: true }); })();