您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
拋棄雜七雜八的廣吿攔截器,試試這款輕量級 屏蔽廣告、彈窗、追蹤器
// ==UserScript== // @name AD block(Weiren) // @namespace http://tampermonkey.net/ // @version 2.0 // @description 拋棄雜七雜八的廣吿攔截器,試試這款輕量級 屏蔽廣告、彈窗、追蹤器 // @author Weiren // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; // Google Ads 域名列表(包括子網) const googleAdsDomains = [ '*://*.googleads.g.doubleclick.net/*', '*://*.pagead2.googlesyndication.com/*', '*://*.adservice.google.com/*', '*://*.gstatic.com/ads/*', '*://*.googletagservices.com/*', '*://*.googlesyndication.com/*' ]; // cat.sg1 廣告域名 const catSg1AdsDomains = [ '*://cat.sg1/*', // 假設這是 cat.sg1 的廣告域名,根據實際情況調整 '*://*.cat.sg1/*' // 子網也加入 ]; // 通用廣告及追蹤器域名 const adAndTrackerDomains = [ '*://*.doubleclick.net/*', '*://*.adnxs.com/*', '*://*.adsafeprotected.com/*', '*://*.adform.net/*', '*://*.taboola.com/*', '*://*.outbrain.com/*', '*://*.criteo.com/*' ]; // Google Forms 廣告元素識別 const formsAdSelectors = [ 'iframe[src*="doubleclick.net"]', 'iframe[src*="googlesyndication.com"]', '.adsbygoogle', // 常見的 Google Ads 類 '.google-ads-frame' // 另一種常見的 Google Forms 廣告標識 ]; // cat.sg1 廣告元素識別(假設的元素名稱,根據實際情況調整) const catSg1AdSelectors = [ 'iframe[src*="cat.sg1"]', // 針對 cat.sg1 網站中的 iframe 廣告 '.cat-ad', // 假設的廣告 class 名稱,根據實際情況調整 '[id*="cat-ad"]', // 假設的廣告 ID 名稱 '.cat-popup', // 假設的彈窗 class 名稱 '[data-ad*="cat.sg1"]' // 假設的屬性選擇器 ]; const allBlockedDomains = [...googleAdsDomains, ...catSg1AdsDomains, ...adAndTrackerDomains]; const domainRegex = new RegExp(allBlockedDomains.map(domain => domain.replace(/\*/g, '.*')).join('|'), 'i'); let adRegexList = []; let trackerRegexList = []; // 載入規則文件 function loadRules(url, targetList) { GM_xmlhttpRequest({ method: 'GET', url: url, onload: function (response) { const rules = response.responseText.split('\n'); const regexList = rules .filter(rule => rule.startsWith('||') && rule.includes('^')) .map(rule => new RegExp(rule.replace('||', '').replace('^', '').trim())); targetList.push(...regexList); console.log(`規則已載入:${url},共解析到 ${regexList.length} 條規則`); }, onerror: function () { console.error(`無法載入規則:${url}`); }, }); } // 攔截 XMLHttpRequest const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (method, url, async, user, password) { if (domainRegex.test(url) || adRegexList.some(regex => regex.test(url)) || trackerRegexList.some(regex => regex.test(url))) { console.log(`攔截請求: ${url}`); return; // 阻止請求 } return originalOpen.apply(this, arguments); }; // 攔截 Fetch API const originalFetch = window.fetch; window.fetch = function (url, options) { if (domainRegex.test(url.toString()) || adRegexList.some(regex => regex.test(url.toString())) || trackerRegexList.some(regex => regex.test(url.toString()))) { console.log(`攔截 Fetch API 請求: ${url}`); return Promise.reject('攔截的廣告或追蹤請求'); } return originalFetch.apply(this, arguments); }; // 隱藏廣告、追蹤器和彈窗元素 GM_addStyle(` iframe, .ad, .ads, .sponsored, .advertisement, [id*="ad"], [class*="ad"], [data-ad], [aria-label*="advertisement"], [id*="popup"], [class*="popup"], [data-popup], .modal, .overlay, ${formsAdSelectors.join(', ')}, ${catSg1AdSelectors.join(', ')} { display: none !important; } `); // 使用 MutationObserver 隱藏動態生成的彈窗和廣告元素 const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { // 元素節點 const nodeHtml = node.outerHTML || ''; if ( node.matches('[id*="popup"], [class*="popup"], .modal, .overlay') || domainRegex.test(nodeHtml) || formsAdSelectors.some(selector => node.matches(selector)) || catSg1AdSelectors.some(selector => node.matches(selector)) ) { console.log('動態攔截並移除元素:', node); node.remove(); } } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); // 阻止常見的彈窗事件 window.addEventListener('load', () => { document.querySelectorAll('[onclick*="popup"], [onmouseover*="popup"]').forEach(el => el.removeAttribute('onclick')); }); window.addEventListener('beforeunload', e => e.preventDefault()); window.addEventListener('popstate', e => e.preventDefault()); // 加載廣告過濾規則 loadRules('https://easylist.to/easylist/easylist.txt', adRegexList); // EasyList 廣告規則 loadRules('https://easylist.to/easylist/easyprivacy.txt', trackerRegexList); // EasyPrivacy 追蹤器規則 loadRules('https://filters.adtidy.org/extension/chromium/filters/2.txt', adRegexList); // AdGuard Base filter loadRules('https://filters.adtidy.org/extension/chromium/filters/3.txt', trackerRegexList); // AdGuard Tracking Protection console.log('最強廣告攔截腳本已啟動'); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址