// ==UserScript== // @name bilibili直播去遮挡 // @author 醒悦哥哥 // @description 浏览器去除直播页面遮挡块。绕过b站强制直播姬开播限制,修复OBS无法获取推流码的问题。 // @version 2.0.0 // @match https://link.bilibili.com/p/center/index* // @match https://live.bilibili.com/* // @icon https://jujufatu.com/file/90dca92bc72742cc08214.png // ==/UserScript== (function () { 'use strict'; // 网页端观看去除遮挡块 // 获取 id 为 live-player 的元素 const targetNode = document.getElementById('live-player'); // 确保元素存在 if (targetNode) { // 配置 MutationObserver 选项 const config = { childList: true, subtree: true }; // 创建回调函数,处理DOM变化 const callback = function (mutationsList) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { // 检查是否存在目标元素 const targetElement = document.getElementById('web-player-module-area-mask-panel'); if (targetElement) { // 删除目标元素 targetElement.remove(); console.log('已去除遮挡'); } } } }; // 创建一个 MutationObserver 实例 const observer = new MutationObserver(callback); // 开始观察目标节点 observer.observe(targetNode, config); } else { console.info('当前未发现遮挡'); } // 主播网页obs开播避免强制直播姬开播遮挡 // 拦截XMLHttpRequest的open方法 const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (method, url) { // 判断是否是目标请求 if (method === 'POST' && url.includes('room/v1/Room/startLive')) { // 拦截send方法以修改请求体 const originalSend = this.send; this.send = function (body) { // 将请求体转换为键值对 const params = new URLSearchParams(body); // 修改platform参数 params.set('platform', 'android_link'); // 用修改后的请求体调用原始的send方法 originalSend.call(this, params.toString()); }; } // 调用原始的open方法 originalOpen.apply(this, arguments); }; })();