// ==UserScript==
// @name Bloqueador Universal de Anúncios
// @namespace http://tampermonkey.net/
// @version 3.1
// @description O bloqueador de anúncios mais agressivo para todos os sites
// @author _PeDeCoca
// @match *://*/*
// @match http://*/*
// @match https://*/*
// @grant GM_addStyle
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_webRequest
// @run-at document-start
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Estilos do ícone do escudo
const iconStyles = `
#adblock-indicator {
position: fixed;
top: 10px;
right: 10px;
width: 40px;
height: 40px;
cursor: pointer;
z-index: 9999999;
display: flex;
align-items: center;
justify-content: center;
font-size: 25px;
background: white;
border-radius: 50%;
transition: all 0.3s ease;
}
#adblock-indicator::before {
content: '🛡️';
position: relative;
z-index: 2;
}
#adblock-indicator::after {
content: '';
position: absolute;
inset: -3px;
background: conic-gradient(
from 0deg,
#ff0000,
#ff7300,
#fffb00,
#48ff00,
#00ffd5,
#002bff,
#7a00ff,
#ff00c8,
#ff0000
);
border-radius: 50%;
z-index: 0;
animation: rotate 3s linear infinite, glow 2s ease-in-out infinite alternate;
opacity: 0.8;
}
#adblock-indicator:hover {
transform: scale(1.1);
}
#adblock-indicator:hover::after {
animation: rotate 1s linear infinite, glow 1s ease-in-out infinite alternate;
opacity: 1;
}
@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes glow {
0% {
filter: hue-rotate(0deg) brightness(1) blur(2px);
transform: rotate(0deg) scale(1);
}
100% {
filter: hue-rotate(360deg) brightness(1.2) blur(3px);
transform: rotate(360deg) scale(1.05);
}
}
`;
// Seletores para bloqueio agressivo de anúncios
const aggressiveAdStyles = `
/* Seletores específicos de anúncios */
ins.adsbygoogle,
.adsbygoogle,
iframe[src*="adsbygoogle"],
[id*="google_ads_"],
[id*="adcontainer"],
[class*="adsbygoogle"],
[data-ad-client],
[id*="doubleclick"],
/* Seletores adicionais */
[id*="taboola"],
[id*="outbrain"],
[class*="partner-ads"],
[class*="commercial-unit"],
[data-ad],
[data-native-ad],
[data-advertisement],
[data-adslot],
[data-ad-placement],
[data-ad-unit],
[data-admanager],
[data-ad-client],
[data-ad-slot],
[data-ad-format],
[data-adsbygoogle-status],
[data-ad-status],
/* Padrões comuns de containers de anúncios */
.ad-container,
.ad-wrapper,
.advertisement,
.advertising,
.sponsor-container,
.sponsored-content,
.promoted-content,
.native-ad,
.premium-ad,
.sticky-ad,
.top-ad,
.side-ad,
.bottom-ad,
/* Alvos adicionais */
[class*="-ad-"],
[id*="-ad-"],
[class*="sponsored"],
[class*="promotion"],
[class*="advertisement"],
[class*="adsense"],
[id*="adsense"],
[data-purpose*="advertisement"],
[aria-label*="Advertisement"],
/* Padrões comuns de redes de anúncios */
[src*="serving-sys.com"],
[src*="pubmatic"],
[src*="criteo"],
[src*="outbrain"],
[src*="taboola"],
[src*="adnxs"],
[src*="yieldmo"],
[src*="amazon-adsystem"] {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
pointer-events: none !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
overflow: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
z-index: -999 !important;
}
`;
// Adiciona ambos os estilos
GM_addStyle(iconStyles + aggressiveAdStyles);
// Adiciona simulador de YouTube Premium
const simulatePremium = {
init() {
// Simula status premium
Object.defineProperty(window, 'ytplayer', {
writable: false,
value: {
config: {
args: {
raw_player_response: {
adPlacements: [],
videoDetails: {
isLiveContent: false
}
},
account_playback_token: "PREMIUM_USER_TOKEN",
enablecsi: "0",
accountType: "PREMIUM",
user_display_image: "https://yt3.ggpht.com",
user_display_name: "Premium User",
external_fullscreen: true,
autoplay: "1",
kicked: "0",
innertube_api_version: "v1",
format: "json",
premium_navigation: "1",
has_premium_navigation: "1",
premium_features: ["premium_content", "premium_music", "background_play"],
premium: "1",
is_premium_user: true
}
}
}
});
// Simula funcionalidades premium
window.yt = {
config_: {
PLAYER_CONFIG: {
args: {
raw_player_response: { adPlacements: [] },
premium: "1"
}
}
}
};
// Injeta cookies premium
document.cookie = "VISITOR_INFO1_LIVE=premium; path=/";
document.cookie = "LOGIN_INFO=premium:1; path=/";
document.cookie = "PREF=f6=40000000&f7=100; path=/";
},
injectPremiumScript() {
const script = document.createElement('script');
script.textContent = `
if (typeof ytplayer !== 'undefined') {
ytplayer.config.args.raw_player_response.adPlacements = [];
ytplayer.config.args.raw_player_response.playerAds = [];
ytplayer.config.args.premium = "1";
}
window.isPremiumUser = true;
window.isMonetized = false;
`;
document.head.appendChild(script);
}
};
const simulateSpotifyPremium = {
init() {
// Força status Premium de forma agressiva
Object.defineProperty(window, 'Spotify', {
writable: false,
value: {
Player: {
prototype: {
skipAd: () => true,
isPremium: true,
getAdState: () => false,
shouldShowAd: () => false
}
}
}
});
// Injeta cookies premium
document.cookie = "sp_dc=aggressive_premium_token; path=/";
document.cookie = "sp_key=fake_premium_key; path=/";
},
injectPremiumScript() {
const script = document.createElement('script');
script.textContent = `
if (window.Spotify && window.Spotify.Player) {
window.Spotify.Player.prototype.isPremium = true;
}
window.isPremiumUser = true;
`;
document.head.appendChild(script);
}
};
const simulateTwitchPremium = {
init() {
// Força status de conta premium/turbo
document.cookie = "twitch_turbo_user=1; path=/";
Object.defineProperty(window, 'TwitchTurboUser', {
writable: false,
value: true
});
},
injectPremiumScript() {
const script = document.createElement('script');
script.textContent = `
window.isTurboUser = true;
if (window.Twitch) {
Twitch.isTurboUser = true;
}
`;
document.head.appendChild(script);
}
};
const simulateYouTubeMusicPremium = {
init() {
// Simula status Premium para YouTube Music
document.cookie = "YTMUSIC_PREF=premium; path=/";
Object.defineProperty(window, 'ytmusic', {
writable: false,
value: { isPremium: true }
});
},
injectPremiumScript() {
const script = document.createElement('script');
script.textContent = `
if (typeof ytmusic !== 'undefined') {
ytmusic.isPremium = true;
}
window.isYTMusicPremiumUser = true;
`;
document.head.appendChild(script);
}
};
const youtubeSpecificFixes = {
// Restaura elementos importantes do YouTube
restoreYouTubeUI() {
const importantSelectors = [
'ytd-app',
'ytd-page-manager',
'ytd-watch-flexy',
'ytd-search-box',
'#content',
'#columns',
'#primary',
'#secondary',
'#masthead',
'#player'
];
importantSelectors.forEach(selector => {
const element = document.querySelector(selector);
if (element) {
element.style.display = '';
element.style.visibility = '';
element.style.opacity = '';
}
});
},
// Bypass novo sistema anti-adblock
bypassNewDetection() {
Object.defineProperty(window, 'ytplayer', {
writable: false,
value: {
config: {
loaded: true,
args: {
raw_player_response: {
adPlacements: [],
playerAds: [],
adSlots: [],
videoDetails: {
isLiveContent: false
}
},
ad3_module: '0',
allow_html5_ads: '0',
enablecsi: '0',
use_player_ads_pageshell: false
}
}
}
});
// Força remoção de overlay anti-adblock
setInterval(() => {
document.querySelectorAll('tp-yt-paper-dialog, .style-scope.ytd-enforcement-message-view-model').forEach(el => el.remove());
}, 100);
},
// Restaura funcionalidade de vídeo
fixVideoPlayer() {
const restoreVideo = () => {
const video = document.querySelector('video');
if (video) {
video.style.display = '';
video.play().catch(() => {});
}
};
setInterval(restoreVideo, 1000);
},
// Adiciona bypass para tela inicial
bypassInitialScreen() {
const removeInitialOverlay = () => {
// Remove diálogo de bloqueio inicial
const selectors = [
'ytd-popup-container',
'tp-yt-iron-overlay-backdrop',
'ytd-enforcement-message-view-model',
'.opened',
'[dialog]',
'#dialog',
'.ytd-popup-container'
];
selectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => {
el.remove();
});
});
// Remove classe de bloqueio do body
document.body.classList.remove('opened');
document.documentElement.classList.remove('opened');
// Força exibição do conteúdo
const content = document.querySelector('ytd-app');
if (content) {
content.removeAttribute('dialog-shown');
content.style.display = 'block';
}
// Restaura scroll
document.body.style.overflow = '';
document.documentElement.style.overflow = '';
};
// Remove overlay imediatamente e monitora por novos
removeInitialOverlay();
setInterval(removeInitialOverlay, 100);
// Força carregamento do conteúdo inicial
const forceInitialLoad = () => {
const app = document.querySelector('ytd-app');
if (app) {
app.removeAttribute('loading');
const content = document.querySelector('#content');
if (content) {
content.style.display = 'block';
content.removeAttribute('hidden');
}
}
};
// Força carregamento após um breve delay
setTimeout(forceInitialLoad, 500);
},
init() {
// Inicializa simulação premium primeiro
simulatePremium.init();
simulatePremium.injectPremiumScript();
// Remove espera e executa diretamente
this.bypassInitialScreen();
this.bypassNewDetection();
this.restoreYouTubeUI();
this.fixVideoPlayer();
// Monitora mudanças de forma mais agressiva
const observer = new MutationObserver(() => {
this.restoreYouTubeUI();
this.fixVideoPlayer();
// Remove elementos problemáticos imediatamente
document.querySelectorAll(`
ytd-popup-container,
tp-yt-iron-overlay-backdrop,
ytd-enforcement-message-view-model,
.opened,
[dialog],
#dialog,
.ytd-popup-container,
.video-ads,
.ytp-ad-overlay-slot,
#masthead-ad,
#player-ads,
ytd-promoted-video-renderer,
.ytd-promoted-sparkles-web-renderer
`).forEach(el => el.remove());
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true
});
}
};
const youtubeMusicSpecificFixes = {
init() {
simulateYouTubeMusicPremium.init();
simulateYouTubeMusicPremium.injectPremiumScript();
// ...existing code...
this.removeMusicAds();
this.setupMusicAdBypass();
},
removeMusicAds() {
// ...existing code...
},
setupMusicAdBypass() {
// ...existing code...
}
};
const twitchSpecificFixes = {
init() {
simulateTwitchPremium.init();
simulateTwitchPremium.injectPremiumScript();
this.removeTwitchAds();
this.bypassTwitchDetection();
this.setupTwitchObserver();
this.injectTwitchAdBlock();
this.hookTwitchPlayer();
},
removeTwitchAds() {
const adSelectors = [
'[data-test-selector="ad-banner"]',
'.tw-tower',
'.video-player__overlay',
'[data-a-target="ads-banner"]',
'.ads-manager-banner',
'.stream-display-ad',
'.beneath-the-stream-ad',
// Novos seletores mais específicos
'.video-player__overlay-ads',
'.extension-taskbar__overlay-placement',
'.tw-absolute.tw-full-width.tw-full-height',
'.player-overlay-background',
'[data-a-target*="preroll"]',
'[data-test-selector*="ad-strip"]',
'.top-bar-ad',
'.player-ad-notice',
'.player-advert'
];
adSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => el.remove());
});
},
bypassTwitchDetection() {
// Simula que não tem adblock
Object.defineProperties(window, {
showAd: { value: false, writable: false },
isAdBlockEnabled: { value: false, writable: false },
hasAdBlock: { value: false, writable: false }
});
// Força remoção de overlay de ad
const removeOverlay = () => {
const video = document.querySelector('video');
if (video) {
video.style.filter = 'none';
video.style.opacity = '1';
video.play();
}
document.querySelectorAll('.player-overlay').forEach(el => el.remove());
};
setInterval(removeOverlay, 100);
},
injectTwitchAdBlock() {
const script = document.createElement('script');
script.textContent = `
// Override player methods
if (window.Player) {
Player.prototype.triggerAd = function() { return false; };
Player.prototype.shouldShowAd = function() { return false; };
}
// Block ad requests
window.addEventListener('beforescriptexecute', function(e) {
if (e.target.src.includes('amazon-adsystem') ||
e.target.src.includes('amazon-ads') ||
e.target.src.includes('adswizz') ||
e.target.src.includes('doubleclick')) {
e.preventDefault();
e.stopPropagation();
return false;
}
}, true);
`;
document.head.appendChild(script);
},
hookTwitchPlayer() {
// Hook no player da Twitch
const hookPlayer = () => {
const video = document.querySelector('video');
if (video && !video.hooked) {
video.hooked = true;
// Força volume e remove mute durante ads
video.addEventListener('volumechange', () => {
if (document.querySelector('[data-a-target*="ad"]')) {
video.volume = 0;
video.muted = true;
}
});
// Força playback durante ads
video.addEventListener('pause', () => {
if (document.querySelector('[data-a-target*="ad"]')) {
video.play();
}
});
// Força pular ads
video.addEventListener('timeupdate', () => {
if (document.querySelector('[data-a-target*="ad"]')) {
video.currentTime = video.duration;
}
});
}
};
setInterval(hookPlayer, 1000);
},
setupTwitchObserver() {
const observer = new MutationObserver(() => {
this.removeTwitchAds();
// Remove qualquer elemento que contenha "ad" no data-a-target
document.querySelectorAll('[data-a-target*="ad"]').forEach(el => el.remove());
// Remove scripts de anúncios dinamicamente
document.querySelectorAll('script[src*="amazon-adsystem"], script[src*="adswizz"]').forEach(el => el.remove());
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['src', 'data-a-target']
});
}
};
const spotifySpecificFixes = {
init() {
simulateSpotifyPremium.init();
simulateSpotifyPremium.injectPremiumScript();
this.removeSpotifyAds();
this.bypassPremiumCheck();
this.setupSpotifyObserver();
this.injectSpotifyAudioFix();
},
removeSpotifyAds() {
const adSelectors = [
'.spotify-ads',
'[data-ad-type]',
'[data-ad-token]',
'.ad-container',
'.ad-placeholder',
'.sponsor-message',
'.advertisement',
'[data-testid*="ad"]',
'[data-testid="sponsored-shelf"]',
'[data-testid="premium-upsell"]',
'.upgrade-button',
'.advertising'
];
adSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => el.remove());
});
},
bypassPremiumCheck() {
// Simula conta premium
Object.defineProperties(window, {
Spotify: {
value: {
Player: {
prototype: {
skipAd: () => true,
getAdState: () => false,
shouldShowAd: () => false
}
}
}
}
});
// Simula cookies premium
document.cookie = "premium=1; path=/";
document.cookie = "spotify_premium=1; path=/";
},
injectSpotifyAudioFix() {
const script = document.createElement('script');
script.textContent = `
// Override audio context
const originalAudioContext = window.AudioContext || window.webkitAudioContext;
window.AudioContext = window.webkitAudioContext = function(...args) {
const instance = new originalAudioContext(...args);
const originalResume = instance.resume.bind(instance);
instance.resume = function() {
return originalResume().then(() => {
return Promise.resolve();
});
};
return instance;
};
// Força qualidade máxima de áudio
Object.defineProperty(window, 'MediaSource', {
writable: true,
value: class extends window.MediaSource {
constructor() {
super();
this.setQualityLevel = () => {};
}
}
});
`;
document.head.appendChild(script);
},
setupSpotifyObserver() {
const observer = new MutationObserver(() => {
// Remove anúncios dinamicamente
this.removeSpotifyAds();
// Mantém a música tocando
const audioElement = document.querySelector('audio');
if (audioElement && audioElement.paused) {
audioElement.play().catch(() => {});
}
// Remove overlays de upgrade
document.querySelectorAll('[data-testid*="upsell"],[data-testid*="premium"]').forEach(el => el.remove());
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true
});
}
};
const bodyContentFixes = {
init() {
this.removeCommonAds();
this.blockImageAds();
this.blockThumbnailAds();
this.setupBodyObserver();
},
removeCommonAds() {
const adSelectors = [
'[class*="adPlacements"]',
'[class*="advertisement"]',
'[data-ad-client]',
'[id*="google_ads_iframe"]',
'[id*="ad-"],[class*="ad-"]',
'[class*="sponsored"]',
'[class*="promotion"]',
'[data-ad]',
'[data-advertisement]',
'[data-testid*="ad"]',
'[aria-label*="Advertisement"]',
// Thumbnail specific
'.thumbnailOverlayTimeStatusRenderer',
'.ytp-ad-overlay-container',
'.ytp-ad-text-overlay',
'[class*="adSlot"]',
'[class*="adContainer"]',
// Specific to body content
'iframe[src*="doubleclick"]',
'iframe[src*="googlesyndication"]',
'.movingThumbnailDetails',
'[data-purpose*="advertisement"]',
'.metadataBadgeRenderer'
];
adSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => {
try {
el.style.display = 'none';
el.remove();
} catch (e) {}
});
});
},
blockImageAds() {
const imagePatterns = [
'ggpht.com',
'googleusercontent.com',
'ytimg.com',
'/ads/',
'ad-',
'advert'
];
document.querySelectorAll('img').forEach(img => {
if (imagePatterns.some(pattern => img.src?.includes(pattern))) {
if (!this.isImportantContent(img)) {
img.style.display = 'none';
}
}
});
},
isImportantContent(element) {
// Check if image is part of actual content
return element.closest('.video-content') ||
element.closest('.channel-content') ||
element.closest('.user-content');
},
blockThumbnailAds() {
const thumbnailPatterns = [
'mqdefault_6s.webp',
'hqdefault.jpg',
'videoplayback',
'googlevideo.com'
];
document.querySelectorAll('.richThumbnail, .movingThumbnailRenderer').forEach(el => {
if (thumbnailPatterns.some(pattern =>
el.innerHTML.includes(pattern) ||
el.outerHTML.includes(pattern))) {
el.remove();
}
});
},
setupBodyObserver() {
const observer = new MutationObserver(() => {
this.removeCommonAds();
this.blockImageAds();
this.blockThumbnailAds();
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true
});
}
};
const ultraBlocker = {
// Adiciona o indicador visual do bloqueador
addIndicator() {
const indicator = document.createElement('div');
indicator.id = 'adblock-indicator';
indicator.title = 'AdBlock Ativado - Clique para entrar em contato discord: _PeDeCoca';
indicator.addEventListener('click', () => {
window.open('https://discord.com/users/_PeDeCoca', '_blank');
});
document.body.appendChild(indicator);
},
// Inicialização do bloqueador
async init() {
// Adiciona fixes específicos para YouTube primeiro com await
if (window.location.hostname.includes('youtube.com')) {
await youtubeSpecificFixes.init();
}
// Add Twitch specific fixes
if (window.location.hostname.includes('twitch.tv')) {
await twitchSpecificFixes.init();
}
if (window.location.hostname.includes('spotify.com')) {
await spotifySpecificFixes.init();
}
if (window.location.hostname.includes('music.youtube.com')) {
youtubeMusicSpecificFixes.init();
}
// Add body content fixes
await bodyContentFixes.init();
this.addIndicator();
this.injectAntiAdBlockKiller();
if (!this.isSafeSite()) {
this.setupAggressiveSkipper();
this.blockGoogleAds();
}
// Always run these safer methods
this.setupObserver();
this.blockAdvancedAds();
this.setupFetchBlocker();
this.setupNetworkBlocker(); // Add network blocker
// Add continuous monitoring
this.startContinuousMonitoring();
// Replace aggressive removal with safer version
setInterval(() => {
this.safeAdRemoval();
}, 2000);
// Adiciona bypass de erros 403
this.setupVideoErrorBypass();
},
// Lista de sites e elementos seguros
safeList: {
domains: [
'google.',
'duckduckgo.com',
'bing.com',
'yahoo.com',
'github.com',
'stackoverflow.com',
'gitlab.com'
],
selectors: [
'nav',
'header',
'main',
'footer',
'.search',
'.navigation',
'.menu',
'.content'
]
},
// Verifica se é um site seguro
isSafeSite() {
return this.safeList.domains.some(domain => window.location.hostname.includes(domain));
},
// Verifica se é um elemento crítico que não deve ser bloqueado
isCriticalElement(element) {
return this.safeList.selectors.some(selector =>
element.matches(selector) || element.closest(selector)
);
},
// Lista de motores de busca
searchEngines: [
'google.com',
'google.',
'duckduckgo.com',
'bing.com',
'yahoo.com',
'yandex.com',
'baidu.com'
],
// Verifica se é um motor de busca
isSearchEngine() {
return this.searchEngines.some(domain => window.location.hostname.includes(domain));
},
// Remove elementos de anúncios
removeAdElements() {
if (this.isSearchEngine()) return; // Skip for search engines
const adSelectors = [
'.ad-showing',
'.ytp-ad-overlay-container',
'.video-ads',
'.ytp-ad-overlay-slot'
];
adSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => {
try {
el.style.display = 'none';
} catch (e) {}
});
});
},
// Configuração do pulador agressivo de anúncios
setupAggressiveSkipper() {
if (this.isSearchEngine()) return; // Skip for search engines
if (window.location.hostname.includes('youtube.com')) {
setInterval(() => {
// Remove overlays de anúncio
document.querySelectorAll('.ytp-ad-overlay-container, .ytp-ad-skip-button-slot').forEach(el => el.remove());
// Força skip em anúncios
const video = document.querySelector('video');
if (video && document.querySelector('.ad-showing, [class*="ad-interrupting"]')) {
video.currentTime = video.duration;
video.playbackRate = 16;
this.clickSkipBtn();
// Remove classe de anúncio
document.querySelector('.html5-video-player')?.classList.remove('ad-showing', 'ad-interrupting');
}
}, 50);
}
setInterval(() => {
const video = document.querySelector('video');
if (video) {
// Força o pulo de qualquer conteúdo publicitário
if (document.querySelector('.ad-showing')) {
video.currentTime = video.duration;
video.playbackRate = 16;
this.clickSkipBtn();
}
// Remove anúncios sobrepostos
this.removeAdElements();
}
}, 50);
},
// Clica no botão de pular anúncio
clickSkipBtn() {
const skipBtns = [
'.ytp-ad-skip-button',
'.videoAdUiSkipButton',
'.ytp-ad-skip-button-modern'
];
skipBtns.forEach(btn => {
const skipButton = document.querySelector(btn);
if (skipButton) skipButton.click();
});
},
// Sistema anti-detecção de bloqueador
injectAntiAdBlockKiller() {
try {
// Use a proxy to intercept property access
const handler = {
get: (target, prop) => {
if (prop === 'adBlocker') return false;
if (prop === 'google_ad_status') return 1;
if (prop === 'ytInitialPlayerResponse') {
return {
adPlacements: [],
playerAds: [],
adSlots: [],
videoDetails: { isLiveContent: false }
};
}
return target[prop];
}
};
// Create proxy for window object
if (typeof unsafeWindow !== 'undefined') {
const windowProxy = new Proxy(unsafeWindow, handler);
Object.defineProperty(window, '__proto__', {
get: () => windowProxy
});
}
// Alternative method using getters
try {
Object.defineProperties(window, {
'adBlocker': {
get: () => false,
configurable: true
},
'google_ad_status': {
get: () => 1,
configurable: true
}
});
} catch (e) {
console.log('Fallback getter setup');
}
// Remove existing ad detectors
const removeAdDetectors = () => {
const detectors = [
'detectAdBlock',
'onAdBlockStart',
'adBlockDetected',
'getAdsStatus',
'checkAdBlock'
];
detectors.forEach(name => {
try {
window[name] = undefined;
delete window[name];
} catch (e) {}
});
};
removeAdDetectors();
setInterval(removeAdDetectors, 1000);
} catch (e) {
console.log('Using minimal anti-adblock');
// Minimal fallback that won't trigger errors
try {
window.adBlocker = false;
} catch (e) {}
}
},
// Interceptação de requisições XHR
hijackXHR() {
const XHR = XMLHttpRequest.prototype;
const open = XHR.open;
const send = XHR.send;
XHR.open = function(method, url) {
if (url.includes('/api/stats/')) {
arguments[1] = 'about:blank';
}
return open.apply(this, arguments);
};
XHR.send = function(data) {
if (this.responseType === 'json' && data?.includes('adPlacements')) {
return;
}
return send.apply(this, arguments);
};
},
// Observador de mudanças no DOM
setupObserver() {
const safeRemove = (element) => {
try {
if (element && element.parentNode) {
element.style.display = 'none';
setTimeout(() => {
try {
element.remove();
} catch (e) {}
}, 0);
}
} catch (e) {}
};
const observer = new MutationObserver((mutations) => {
if (this.isSafeSite()) return;
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && !this.isCriticalElement(node)) {
if (node.matches('[id*="google_ads_"],[class*="adsbygoogle"]')) {
node.style.display = 'none';
}
}
});
});
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
},
// Bloqueio de anúncios do Google
blockGoogleAds() {
// Padrões de bloqueio
const blockPatterns = [
'googlesyndication.com',
'doubleclick.net',
'google-analytics.com',
'/pagead/',
'ad.doubleclick.net'
];
// Remove scripts existentes
document.querySelectorAll('script').forEach(script => {
if (blockPatterns.some(pattern => script.src.includes(pattern))) {
script.remove();
}
});
// Previne carregamento de novos scripts
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
mutation.addedNodes.forEach((node) => {
if (node.tagName === 'SCRIPT' &&
blockPatterns.some(pattern => node.src?.includes(pattern))) {
node.remove();
}
});
});
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
},
// Observador do player de vídeo
setupPlayerObserver() {
// Observer específico para o player
const observer = new MutationObserver(() => {
// Remove classe de anúncio do player
const player = document.querySelector('.html5-video-player');
if (player) {
player.classList.remove('ad-showing', 'ad-interrupting', 'ad-created');
}
// Força o skip de anúncios
const video = document.querySelector('video');
if (video && document.querySelector('[class*="ad-showing"]')) {
video.currentTime = video.duration;
const skipButton = document.querySelector('.ytp-ad-skip-button');
if (skipButton) skipButton.click();
}
// Remove containers de anúncios
[
'.ytp-ad-player-overlay-layout',
'.ytp-ad-player-overlay-layout__player-card-container',
'.ytp-ad-persistent-progress-bar-container',
'.video-ads.ytp-ad-module',
'[class*="ytp-ad-"]'
].forEach(selector => {
document.querySelectorAll(selector).forEach(el => el.remove());
});
});
observer.observe(document.documentElement, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['class']
});
},
// Remoção segura de anúncios
safeAdRemoval() {
if (this.isSafeSite()) return;
const adPatterns = [
'ad-', 'ads-', 'adv-', 'sponsored', 'advertisement',
'google_ads', 'adsystem', 'adsbygoogle'
];
document.querySelectorAll('[class*="ad-"],[id*="ad-"],[class*="ads"],[id*="ads"]').forEach(el => {
if (!this.isCriticalElement(el) &&
adPatterns.some(pattern => el.className.includes(pattern) || el.id.includes(pattern))) {
el.style.display = 'none';
}
});
},
// Sobrescreve o player do YouTube
overrideYTPlayer() {
// Força a recriação do objeto player sem anúncios
if (typeof window.ytplayer !== 'undefined' && window.ytplayer.config) {
window.ytplayer.config.args.raw_player_response.adPlacements = [];
window.ytplayer.config.args.raw_player_response.playerAds = [];
}
},
// Bloqueio avançado de anúncios
blockAdvancedAds() {
if (this.isSearchEngine()) {
// Simplified ad blocking for search engines
const safeAdPatterns = [
'doubleclick.net',
'googlesyndication.com',
'adsystem.com'
];
const safeRemoveAds = () => {
document.querySelectorAll('iframe').forEach(frame => {
if (safeAdPatterns.some(pattern => frame.src?.includes(pattern))) {
frame.style.display = 'none';
}
});
};
setInterval(safeRemoveAds, 1000);
return;
}
if (this.isSafeSite()) {
// Minimal blocking for safe sites
const safeAdPatterns = [
'doubleclick.net',
'googlesyndication.com',
'adsystem.com'
];
const safeRemoveAds = () => {
document.querySelectorAll('iframe[src],div[data-ad]').forEach(el => {
if (!this.isCriticalElement(el) &&
safeAdPatterns.some(pattern => el.src?.includes(pattern) ||
el.getAttribute('data-ad')?.includes(pattern))) {
el.style.display = 'none';
}
});
};
setInterval(safeRemoveAds, 2000);
return;
}
const adPatterns = [
'advertisement',
'sponsored',
'promotion',
'banner-ad',
'ad-container',
'ad-wrapper'
];
const removeAds = () => {
document.querySelectorAll('*').forEach(element => {
// Only check specific ad-related attributes
const attrs = ['id', 'class', 'data-ad'];
for (let attr of attrs) {
const value = element.getAttribute(attr);
if (value && adPatterns.some(pattern => value.toLowerCase().includes(pattern))) {
element.style.display = 'none';
break;
}
}
});
};
setInterval(removeAds, 1000);
},
// Modifica o bloqueador de requisições de rede para ser mais robusto
setupNetworkBlocker() {
try {
// Verifica se GM_webRequest está disponível
if (typeof GM_webRequest === 'undefined') {
console.log('GM_webRequest não disponível, usando método alternativo');
this.setupAlternativeBlocker();
return;
}
const blockPatterns = [
'googlevideo.com/videoplayback',
'youtube.com/api/stats',
'doubleclick.net',
'googlesyndication.com',
'/pagead/',
'google-analytics.com'
];
GM_webRequest?.onBeforeRequest?.addListener?.(
details => ({
cancel: blockPatterns.some(pattern => details.url.includes(pattern))
}),
{ urls: ["<all_urls>"] },
["blocking"]
);
} catch (e) {
console.log('Fallback para método alternativo de bloqueio');
this.setupAlternativeBlocker();
}
},
// Método alternativo de bloqueio quando GM_webRequest não está disponível
setupAlternativeBlocker() {
// Intercepta XMLHttpRequest
const XHR = XMLHttpRequest.prototype;
const open = XHR.open;
XHR.open = function(...args) {
const url = args[1];
if (url && (
url.includes('googlevideo.com/videoplayback') ||
url.includes('youtube.com/api/stats') ||
url.includes('doubleclick.net')
)) {
args[1] = 'about:blank';
}
return open.apply(this, arguments);
};
// Intercepta fetch
const originalFetch = window.fetch;
window.fetch = async function(input, init) {
const url = input instanceof Request ? input.url : input;
if (url && (
url.includes('googlevideo.com/videoplayback') ||
url.includes('youtube.com/api/stats') ||
url.includes('doubleclick.net')
)) {
return new Response('{}', {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
}
return originalFetch.apply(this, arguments);
};
// Adiciona headers de controle de acesso
const injectHeaders = () => {
try {
Object.defineProperty(document, 'referrer', { value: '' });
document.documentElement.dataset.newReferrer = '';
} catch (e) {}
};
injectHeaders();
},
// Bloqueador de requisições fetch
setupFetchBlocker() {
const originalFetch = window.fetch;
window.fetch = async function(...args) {
const url = args[0]?.url || args[0];
if (typeof url === 'string' && (
url.includes('doubleclick.net') ||
url.includes('googlesyndication.com') ||
url.includes('/pagead/') ||
url.includes('ad.doubleclick.net') ||
url.includes('googleadservices.com') ||
url.includes('adsystem.com')
)) {
return new Response('{}');
}
return originalFetch.apply(this, args);
};
},
// Monitoramento contínuo
startContinuousMonitoring() {
// Verifica novos anúncios a cada segundo
setInterval(() => {
this.checkForNewAds();
}, 1000);
// Observa mudanças dinâmicas de conteúdo
const dynamicObserver = new MutationObserver(() => {
this.checkForNewAds();
});
dynamicObserver.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['class', 'id', 'style']
});
},
// Verifica novos anúncios
checkForNewAds() {
// Padrões de anúncios para verificação
const adPatterns = [
'[id*="ad-"],[class*="ad-"]',
'[id*="ads"],[class*="ads"]',
'[id*="google_ads"],[class*="adsbygoogle"]',
'[data-ad]',
'[data-adunit]',
'[data-adtest]',
'iframe[src*="ads"]',
'iframe[src*="doubleclick"]',
'iframe[src*="adsystem"]',
'.video-ads',
'.ytp-ad-overlay-container',
'[class*="sponsored"]',
'[class*="advertisement"]'
];
adPatterns.forEach(pattern => {
document.querySelectorAll(pattern).forEach(element => {
if (!element.dataset.adblockChecked && !this.isCriticalElement(element)) {
element.style.display = 'none';
element.dataset.adblockChecked = 'true';
}
});
});
if (document.querySelector('video')) {
this.checkVideoAds();
}
},
// Verifica anúncios em vídeos
checkVideoAds() {
const video = document.querySelector('video');
const player = document.querySelector('.html5-video-player');
if (video && (
player?.classList.contains('ad-showing') ||
document.querySelector('.video-ads') ||
document.querySelector('.ytp-ad-player-overlay')
)) {
video.currentTime = video.duration;
video.playbackRate = 16;
this.clickSkipBtn();
}
},
// Adiciona bypass para erros 403
setupVideoErrorBypass() {
const handleVideoError = () => {
const video = document.querySelector('video');
if (video) {
video.addEventListener('error', (e) => {
if (e.target.error.code === 403) {
// Tenta recarregar o vídeo com diferentes parâmetros
const currentSrc = video.src;
video.src = currentSrc.split('?')[0] + '?bypass=true';
video.play();
}
});
}
};
// Monitora mudanças no player
new MutationObserver(handleVideoError).observe(document.documentElement, {
childList: true,
subtree: true
});
}
};
// Inicialização do bloqueador com async/await
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', async () => await ultraBlocker.init());
} else {
(async () => await ultraBlocker.init())();
}
// Bloqueio avançado de requisições com mais padrões
const originalFetch = unsafeWindow.fetch;
unsafeWindow.fetch = async function(...args) {
const url = args[0]?.url || args[0];
if (typeof url === 'string' && (
url.includes('doubleclick.net') ||
url.includes('googlesyndication.com') ||
url.includes('/pagead/') ||
url.includes('google-analytics.com') ||
url.includes('youtube.com/api/stats/ads') ||
url.includes('youtube.com/pagead/') ||
url.includes('youtube.com/get_midroll_') ||
url.includes('youtube.com/ptracking') ||
url.includes('youtube.com/annotations_invideo') ||
url.includes('youtube.com/api/stats/watchtime') ||
url.includes('ad.doubleclick.net') ||
url.includes('googleadservices.com') ||
url.includes('adsystem.com') ||
url.includes('analytics') ||
url.includes('pagead') ||
url.includes('measured') ||
url.includes('tracking') ||
url.includes('stats') ||
url.includes('atr')
)) {
return new Response(JSON.stringify({
playerResponse: {
adPlacements: [],
playbackTracking: {},
videoDetails: {
isLiveContent: false
}
}
}));
}
return originalFetch.apply(this, args);
};
// Adiciona estilos específicos para forçar exibição do conteúdo
const youtubeForceStyles = `
ytd-app[dialog-shown],
ytd-app[loading],
#content,
#columns,
#primary,
#secondary,
#player {
display: block !important;
visibility: visible !important;
opacity: 1 !important;
}
.video-ads,
.ytp-ad-overlay-slot,
#masthead-ad,
#player-ads,
ytd-promoted-video-renderer,
.ytd-promoted-sparkles-web-renderer,
.ytd-display-ad-renderer,
.ytd-in-feed-ad-layout-renderer,
ytd-compact-promoted-video-renderer,
.ytd-promoted-video-descriptor-renderer,
ytd-ad-slot-renderer,
ytd-in-feed-ad-layout-renderer,
ytd-banner-promo-renderer,
ytd-statement-banner-renderer,
ytd-video-masthead-ad-advertiser-info-renderer,
ytd-engagement-panel-section-list-renderer[target-id="engagement-panel-ads"],
.ytd-advertisement-renderer,
.ytp-ad-overlay-image,
.ytp-ad-text-overlay,
#offer-module,
#premium-upsell {
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
width: 0 !important;
height: 0 !important;
position: fixed !important;
top: -1000px !important;
left: -1000px !important;
}
`;
// Add Spotify-specific styles
const spotifyStyles = `
/* Spotify ad blocking styles */
.spotify-ads,
.ad-container,
.upgrade-button,
.premium-upsell,
[data-ad-type],
[data-testid*="ad"],
[data-testid*="sponsored"],
[data-testid*="premium-upsell"],
.sponsor-message {
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
}
/* Force show player controls */
.player-controls,
.player-controls-container,
.now-playing-bar {
display: flex !important;
opacity: 1 !important;
pointer-events: auto !important;
}
`;
// Add additional styles for body content
const bodyContentStyles = `
/* Block common ad containers */
[class*="adPlacements"],
[class*="advertisement"],
[data-ad-client],
[id*="google_ads_iframe"],
[class*="sponsored"],
[class*="promotion"],
[data-ad],
[data-advertisement],
[data-testid*="ad"],
[aria-label*="Advertisement"],
.thumbnailOverlayTimeStatusRenderer,
.ytp-ad-overlay-container,
.ytp-ad-text-overlay,
[class*="adSlot"],
[class*="adContainer"],
.movingThumbnailDetails,
[data-purpose*="advertisement"],
.metadataBadgeRenderer {
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
width: 0 !important;
height: 0 !important;
position: fixed !important;
top: -9999px !important;
left: -9999px !important;
}
/* Clean up thumbnail remnants */
.richThumbnail,
.movingThumbnailRenderer {
background: none !important;
}
`;
// Add Twitch-specific styles
const twitchStyles = `
/* Twitch ad blocking styles */
[data-a-target*="ad"],
[data-test-selector*="ad"],
[class*="video-player__overlay"],
.top-bar-ad,
.player-ad-notice,
.player-advert,
.video-player__overlay-ads,
.extension-taskbar__overlay-placement,
[data-a-target*="preroll"],
.player-overlay-background,
.player-overlay {
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
width: 0 !important;
height: 0 !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
/* Force show video player */
.video-player__container video {
display: block !important;
opacity: 1 !important;
visibility: visible !important;
filter: none !important;
}
`;
// Adiciona os estilos
GM_addStyle(iconStyles + aggressiveAdStyles + youtubeForceStyles + spotifyStyles + bodyContentStyles + twitchStyles);
})();