Greasy Fork

Greasy Fork is available in English.

Bilibili Live Unmasker (B站直播去马赛克脚本)

通过更温和的方式隐藏B站直播的马赛克块,避免触发“违规操作”提示。

当前为 2025-06-21 提交的版本,查看 最新版本

// ==UserScript==
// @name         Bilibili Live Unmasker (B站直播去马赛克脚本)
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  通过更温和的方式隐藏B站直播的马赛克块,避免触发“违规操作”提示。
// @author       morinekiyohisa
// @match        *://live.bilibili.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    const MASK_ID = 'web-player-module-area-mask-panel';
    let hide_timer = null; // 用于延迟执行的计时器

    const hideMaskGently = () => {
        const maskPanel = document.getElementById(MASK_ID);
        if (maskPanel && maskPanel.style.opacity !== '0') {
            // 不直接删除,也不用display:none
            // 而是让它完全透明,并且无法被鼠标点击
            // 这是最不容易被检测到的方法
            maskPanel.style.setProperty('opacity', '0', 'important');
            maskPanel.style.setProperty('pointer-events', 'none', 'important');
            console.log('[B站直播去马赛克脚本] 已成功将马赛克“隐身”。');
        }
    };

    const observer = new MutationObserver(mutations => {
        // 不要立即执行!B站的脚本可能在看着我们!
        // 我们设置一个非常短的延迟,比如100毫秒,来错开检测。
        // 这模仿了“慢半拍”的反应,从而绕过检测。
        clearTimeout(hide_timer); // 如果在延迟期间有新的变化,则重置计时器
        hide_timer = setTimeout(hideMaskGently, 100);
    });

    observer.observe(document.documentElement, {
        childList: true,
        subtree: true,
        attributes: true
    });

    // 页面加载时也尝试执行一次
    setTimeout(hideMaskGently, 500);

})();