Greasy Fork

Greasy Fork is available in English.

不太灵VIP

删除不太灵的VIP查看限制和模糊效果

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         不太灵VIP
// @namespace    http://tampermonkey.net/
// @version      1.7
// @description  删除不太灵的VIP查看限制和模糊效果
// @author       kkzh
// @match        https://*.mukaku.com/*
// @match        https://www.butai0.club/*
// @match        https://www.butai0.xyz/*
// @match        https://www.butai0.dev/*
// @match        https://www.butai0.vip/*
// @match        https://www.butai0.one/*
// @match        https://www.0bt0.com/*
// @match        https://www.1bt0.com/*
// @match        https://www.2bt0.com/*
// @match        https://www.3bt0.com/*
// @match        https://www.4bt0.com/*
// @match        https://www.5bt0.com/*
// @match        https://www.6bt0.com/*
// @match        https://www.7bt0.com/*
// @match        https://www.8bt0.com/*
// @match        https://www.9bt0.com/*
// @grant        none
// @run-at       document-end
// @license MIT
// ==/UserScript==
(function() {
    'use strict';
 
    // 删除模糊效果的函数
    function removeBlurEffect() {
        let removedCount = 0;
 
        // 方法1: 查找包含模糊效果的元素(通过style属性)
        const blurredElements = document.querySelectorAll('div[style*="filter: blur"], div[style*="filter:blur"]');
        blurredElements.forEach(element => {
            element.style.filter = '';
            element.style.opacity = '';
            element.style.pointerEvents = '';
            element.style.userSelect = '';
            removedCount++;
        });
 
        // 方法2: 查找包含pointer-events: none的元素
        const disabledElements = document.querySelectorAll('div[style*="pointer-events: none"], div[style*="pointer-events:none"]');
        disabledElements.forEach(element => {
            // 检查是否同时包含模糊效果
            if (element.style.filter && element.style.filter.includes('blur')) {
                element.style.filter = '';
                element.style.opacity = '';
                element.style.pointerEvents = '';
                element.style.userSelect = '';
                removedCount++;
            }
        });
 
        // 方法3: 通过计算样式查找模糊元素
        const allDivs = document.querySelectorAll('div');
        allDivs.forEach(element => {
            const computedStyle = window.getComputedStyle(element);
            if (computedStyle.filter && computedStyle.filter.includes('blur')) {
                element.style.filter = 'none';
                element.style.pointerEvents = 'auto';
                element.style.userSelect = 'auto';
                removedCount++;
            }
        });
 
        if (removedCount > 0) {
            console.log(`已移除 ${removedCount} 个模糊效果元素`);
        }
    }
 
    // 删除VIP覆盖层的函数
    function removeVipOverlay() {
        let removedCount = 0;
 
        // 方法1: 通过类名查找VIP覆盖层
        const vipOverlays = document.querySelectorAll('.vip-gate-overlay, .vip-overlay, .vip-gate, .vip-notice');
        vipOverlays.forEach(element => {
            element.remove();
            removedCount++;
        });
 
        // 方法2: 查找包含VIP相关类名的元素
        const vipElements = document.querySelectorAll('[class*="vip-gate"], [class*="vip-overlay"], [class*="vip-notice"]');
        vipElements.forEach(element => {
            element.remove();
            removedCount++;
        });
 
        // 方法3: 查找包含VIP按钮的容器
        const vipButtons = document.querySelectorAll('.vip-gate-button, .vip-button, button[class*="vip"]');
        vipButtons.forEach(button => {
            // 查找包含该按钮的最外层容器
            let container = button;
            let attempts = 0;
            while (container.parentElement && attempts < 10) {
                const parent = container.parentElement;
                const style = window.getComputedStyle(parent);
 
                // 查找具有覆盖层特征的容器
                if (style.position === 'absolute' || style.position === 'fixed' ||
                    parseInt(style.zIndex) > 50 ||
                    parent.classList.toString().includes('overlay') ||
                    parent.classList.toString().includes('gate')) {
                    container = parent;
                } else {
                    break;
                }
                attempts++;
            }
 
            if (container && container !== document.body && container !== button) {
                container.remove();
                removedCount++;
            }
        });
 
        // 方法4: 查找具有高z-index的绝对定位元素(可能是覆盖层)
        const overlayElements = document.querySelectorAll('div');
        overlayElements.forEach(element => {
            const style = window.getComputedStyle(element);
            if ((style.position === 'absolute' || style.position === 'fixed') &&
                parseInt(style.zIndex) > 100) {
 
                // 检查是否包含VIP相关内容
                const text = element.textContent.toLowerCase();
                if (text.includes('vip') || text.includes('专属') || text.includes('开通') ||
                    text.includes('会员') || text.includes('升级')) {
                    element.remove();
                    removedCount++;
                }
            }
        });
 
        if (removedCount > 0) {
            console.log(`已移除 ${removedCount} 个VIP覆盖层元素`);
        }
    }
 
    // 移除所有可能的限制样式
    function removeAllRestrictions() {
        // 移除可能的CSS限制
        const style = document.createElement('style');
        style.textContent = `
            .vip-gate-overlay,
            .vip-overlay,
            .vip-gate,
            .vip-notice,
            [class*="vip-gate"],
            [class*="vip-overlay"] {
                display: none !important;
                visibility: hidden !important;
            }
 
            div[style*="filter: blur"],
            div[style*="filter:blur"] {
                filter: none !important;
                pointer-events: auto !important;
                user-select: auto !important;
                opacity: 1 !important;
            }
        `;
        document.head.appendChild(style);
    }
 
    // 主执行函数
    function removeRestrictions() {
        removeBlurEffect();
        removeVipOverlay();
        removeAllRestrictions();
    }
 
    // 强化的DOM监听器
    function setupObserver() {
        const observer = new MutationObserver((mutations) => {
            let shouldCheck = false;
 
            mutations.forEach((mutation) => {
                if (mutation.type === 'childList') {
                    mutation.addedNodes.forEach(node => {
                        if (node.nodeType === Node.ELEMENT_NODE) {
                            // 检查新添加的元素是否包含VIP相关内容
                            if (node.classList && (
                                node.classList.toString().includes('vip') ||
                                node.classList.toString().includes('gate') ||
                                node.classList.toString().includes('overlay')
                            )) {
                                shouldCheck = true;
                            }
 
                            // 检查是否有模糊效果
                            if (node.style && node.style.filter && node.style.filter.includes('blur')) {
                                shouldCheck = true;
                            }
                        }
                    });
                }
 
                if (mutation.type === 'attributes' &&
                    (mutation.attributeName === 'style' || mutation.attributeName === 'class')) {
                    shouldCheck = true;
                }
            });
 
            if (shouldCheck) {
                setTimeout(removeRestrictions, 100);
            }
        });
 
        observer.observe(document.body, {
            childList: true,
            subtree: true,
            attributes: true,
            attributeFilter: ['style', 'class']
        });
 
        return observer;
    }
 
    // 初始化脚本
    function init() {
        // 立即执行一次
        removeRestrictions();
 
        // 设置观察器
        setupObserver();
 
        // 定期检查(备用方案)
        setInterval(removeRestrictions, 3000);
 
        console.log('影视管理系统VIP限制移除脚本 v2.0 已加载');
    }
 
    // 页面加载完成后执行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
 
    // 页面完全加载后再执行一次
    window.addEventListener('load', () => {
        setTimeout(removeRestrictions, 1000);
    });
 
})();