Ubits去广告

移除ubits.club网站上的两个特定广告元素

// ==UserScript==
// @name         Ubits去广告
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  移除ubits.club网站上的两个特定广告元素
// @author       You
// @match        https://ubits.club/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ubits.club
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 定义两个广告的特征选择器
    const adSelectors = [
        {
            selector: 'div[style*="margin-bottom: 10px"] a[href*="adredir.php"] img[src="https://ubits.club/pic/ad/zspace_2015_01.jpg"]',
            parent: 'div'
        },
        {
            selector: 'td.clear.nowrap a[href*="adredir.php"] img[src="https://ubits.club/pic/ad/JohnRay.jpg"]',
            parent: 'td'
        }
    ];

    // 广告移除函数
    function removeAds() {
        let removedCount = 0;

        adSelectors.forEach(ad => {
            const target = document.querySelector(ad.selector);
            if (target) {
                const container = target.closest(ad.parent);
                if (container) {
                    container.remove();
                    console.log(`已移除 ${ad.parent} 广告容器`);
                    removedCount++;
                }
            }
        });

        return removedCount;
    }

    // 使用MutationObserver监听DOM变化
    const observer = new MutationObserver(() => {
        if (removeAds() === adSelectors.length) {
            observer.disconnect();
            console.log('所有目标广告已移除,停止监听');
        }
    });

    // 配置观察选项
    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    // 立即执行初始清理
    const initialRemoved = removeAds();
    console.log(`初始移除广告数量:${initialRemoved}`);

    // 设置定时器检查残留
    setTimeout(() => {
        const finalCheck = removeAds();
        if (finalCheck > 0) {
            console.log(`最终检查移除广告数量:${finalCheck}`);
        }
    }, 3000);
})();