// ==UserScript== // @name 去你妈的批站诈骗广告 // @version 1.6 // @description bilibili,B站,去广告,屏蔽小火箭推广视频,屏蔽首页左侧大图滑动推荐栏 // @author 爆菊大师 // @match *://*.bilibili.com/* // @grant none // @license MIT // @namespace http://tampermonkey.net/ // @downloadURL none // ==/UserScript== (function () { 'use strict'; const selectors = { pseudo: '.bili-video-card.is-rcmd', icons: '.vui_icon.bili-video-card__stats--icon', adFeed: '.bili-video-card__mask .bili-video-card__stats--text' }; const style = document.createElement('style'); style.textContent = ` .recommended-swipe.grid-anchor, .bili-live-card.is-rcmd.enable-no-interest, .ad-report.ad-floor-exp.left-banner, .activity-m-v1.act-end, .activity-m-v1.act-now, .video-card-ad-small, .video-page-game-card-small, .slide-ad-exp, .floor-single-card, .fixed-card { display: none !important; } .feed-card { margin-top: 0 !important; } `; document.head.appendChild(style); function runAllChecks() { checkElements(selectors.pseudo, el => isBlocked(el) || Array.from(el.children).some(isBlocked) ); checkElements(selectors.icons, null, '.bili-video-card'); checkElements(selectors.adFeed, el => el.textContent.includes('广告'), '.bili-video-card__wrap' ); } function hideElement(element) { if (element.dataset.processed) return; element.style.display = 'none'; element.dataset.processed = 'true'; } function isBlocked(element) { if (element.dataset.checked) return element.dataset.blocked === 'true'; const content = window.getComputedStyle(element, '::before').content; const blocked = content.includes('AdGuard') || content.includes('AdBlock'); element.dataset.checked = 'true'; element.dataset.blocked = blocked; return blocked; } function checkElements(selector, condition, parentSelector) { document.querySelectorAll(selector).forEach(el => { const target = parentSelector ? el.closest(parentSelector) : el; if (target && (!condition || condition(el))) hideElement(target); }); } const debounce = (fn, delay = 100) => { let timeout; return (...args) => { clearTimeout(timeout); timeout = setTimeout(() => fn(...args), delay); }; }; const observer = new MutationObserver(debounce(runAllChecks)); observer.observe(document.body, { subtree: true, childList: true }); runAllChecks(); })();