// ==UserScript== // @name Bye Bye YouTube Ads - Undetected by YouTube's anti-AdBlocker // @version 2.0 // @description Fastest + Lightest YouTube AdBlocker which actually works // @author DishantX // @match *://www.youtube.com/* // @exclude *://www.youtube.com/*/music* // @exclude *://music.youtube.com/* // @exclude *://m.youtube.com/* // @icon https://tenor.com/view/manifest-meditate-pepe-gif-12464108004541162266 // @icon64 https://tenor.com/view/manifest-meditate-pepe-gif-12464108004541162266 // @license MIT // @namespace https://greasyfork.org/users/1467023 // @downloadURL https://update.greasyfork.icu/scripts/535271/Bye%20Bye%20YouTube%20Ads%20-%20Undetected%20by%20YouTube%27s%20anti-AdBlocker.user.js // @updateURL https://update.greasyfork.icu/scripts/535271/Bye%20Bye%20YouTube%20Ads%20-%20Undetected%20by%20YouTube%27s%20anti-AdBlocker.meta.js // ==/UserScript== (() => { 'use strict'; // 1. Inject only ad-overlay CSS (no panel removals). const style = document.createElement('style'); style.textContent = [ '.ytp-ad-overlay.ytp-overlay-loading', // in-video overlays '.ytp-featured-product' // featured product promos ].join(',') + ' { display: none !important; }'; document.head.appendChild(style); // 2. Click “Skip Ad” when it appears function clickSkip() { const btn = document.querySelector('button.ytp-ad-skip-button, button.ytp-ad-skip-button-modern'); if (btn) btn.click(); return !!btn; } // 3. Jump past unskippable ads function jumpAd() { const v = document.querySelector('video'); if (v && isFinite(v.duration)) v.currentTime = v.duration; } // 4. Observe only the player’s 'ad-showing' class const player = document.getElementById('movie_player'); if (player) { const obs = new MutationObserver(muts => { if (player.classList.contains('ad-showing')) { if (!clickSkip()) jumpAd(); } }); obs.observe(player, { attributes: true, attributeFilter: ['class'] }); } })();