去 VIP 遮罩 – butai0

移除 butai0.xyz 上的 VIP 弹窗 / 遮罩

// ==UserScript==
// @name         去 VIP 遮罩 – butai0
// @namespace    https://github.com/yourname
// @version      1.0
// @description  移除 butai0.xyz 上的 VIP 弹窗 / 遮罩
// @author       你的名字
// @match        https://www.butai0.xyz/*
// @match        https://butai0.xyz/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function () {
    'use strict';

    /* 通用遮罩黑名单(CSS 隐藏 + DOM 删除双保险) */
    const css = `
        .vip-mask,
        .vip-popup,
        .vip-modal,
        .vip-dialog,
        .vip-overlay,
        [class*="vip"][class*="mask"],
        [class*="vip"][class*="popup"],
        [id*="vip"][id*="mask"],
        [id*="vip"][id*="popup"] {
            display: none !important;
            visibility: hidden !important;
        }
    `;

    /* 插入样式 */
    const style = document.createElement('style');
    style.textContent = css;
    document.documentElement.appendChild(style);

    /* 等待 DOM 后删除节点(防止懒加载) */
    const killVip = () => {
        document.querySelectorAll(`
            .vip-mask,
            .vip-popup,
            .vip-modal,
            .vip-dialog,
            .vip-overlay,
            [class*="vip"][class*="mask"],
            [class*="vip"][class*="popup"],
            [id*="vip"][id*="mask"],
            [id*="vip"][id*="popup"]
        `).forEach(el => el.remove());
    };

    /* 页面变化时持续清理 */
    const obs = new MutationObserver(killVip);
    obs.observe(document, { childList: true, subtree: true });

    /* 首次立即执行一次 */
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', killVip);
    } else {
        killVip();
    }
})();