← Wszystkie wpisy

Poradniki

Jak ukryć cookie bannery na każdej stronie — 5 gotowych snippetów

RODO miało dać nam kontrolę nad cookies. Dało nam pop-upy, które zasłaniają 30% ekranu na każdej drugiej stronie. Ten artykuł pokazuje pięć sposobów, żeby raz na zawsze pozbyć się tej zasłony — za pomocą CSS, JavaScript i wtyczki JustZix.

Czy to legalne?

Tak. RODO i ePrivacy Directive nakładają obowiązki na operatora strony (musi zapytać o zgodę przed ustawieniem cookies). Po Twojej stronie — jako użytkownika — wolno Ci modyfikować, jak strona wygląda w Twojej przeglądarce. To samo, co robi każdy adblock i tryb czytania w Safari. Ważne tylko: ukrywając banner zazwyczaj nie zgadzasz się automatycznie na cookies — większość witryn nadal ustawia tylko cookies niezbędne, a marketingowe wymagają explicit kliknięcia „Akceptuj".

Sposób 1 — uniwersalny CSS na popularne klasy

Najprostsze i bezpieczne podejście. Łapie ~80% banerów na większości stron:

/* Cookie banners — popularne klasy i ID */
.cookie-banner,
.cookie-notice,
.cookie-consent,
.gdpr-banner,
.consent-banner,
#cookie-notice,
#cookieConsent,
#onetrust-banner-sdk,
[class*="CookieConsent"],
[id*="cookie-bar"] {
  display: none !important;
}

/* Często banner blokuje scroll body */
html, body {
  overflow: auto !important;
  position: static !important;
}

Drugi blok jest kluczowy — wiele bannerów ustawia overflow: hidden na <body>, żeby zablokować scroll dopóki nie zaakceptujesz. Wymuszone overflow: auto przywraca normalne zachowanie.

Sposób 2 — agresywne selektory atrybutów

Gdy strona używa dynamicznych klas (np. Tailwind albo CSS-in-JS) i bazowy wzorzec nie pasuje, celuj w atrybuty:

/* Łap wszystko, co ma "cookie" lub "consent" w klasie / ID */
[class*="cookie" i],
[id*="cookie" i],
[class*="consent" i],
[id*="consent" i],
[class*="gdpr" i],
[role="dialog"][aria-label*="cookie" i] {
  display: none !important;
}

Flaga i w selektorze atrybutu (np. [class*="cookie" i]) sprawia, że pasuje case-insensitive. Bez niej .CookieBanner by nie matchował "cookie".

Ostrzeżenie: ten snippet może łapić więcej niż chcesz — np. strona o cookies (przepisach!) też dostanie display:none. Używaj świadomie, najlepiej w katalogu reguł ograniczonym do konkretnych domen.

Sposób 3 — selektor :has() (nowoczesny)

Od Chrome 105 i Safari 15.4 możesz używać :has() — selektor, który celuje w element posiadający dziecko pasujące do wzorca. Idealne na cookie bannery, bo zawsze mają w środku przycisk „Akceptuj":

/* Praktyczna wersja — łap fixed/sticky kontener z buttonem o aria-label */
div:has(> button[aria-label*="Akceptuj" i]),
div:has(> button[aria-label*="Accept" i]),
aside:has(> button[aria-label*="cookie" i]) {
  display: none !important;
}

CSS nie wspiera :contains() (to wynalazek jQuery). Celujemy więc w atrybut aria-label, który dobre bannery i tak mają — dla screen readerów.

Sposób 4 — JavaScript auto-klik „Akceptuj"

Gdy CSS-em się nie da (np. banner pojawia się w Shadow DOM albo blokuje stronę aż do kliknięcia), JS auto-klika za Ciebie. Działa szybciej niż się zorientujesz:

// Auto-klik na przyciski "Akceptuj" — działa też w iframe'ach z cookies
let attempts = 0;
const interval = setInterval(() => {
  if (++attempts > 20) return clearInterval(interval);

  const candidates = [
    ...document.querySelectorAll('button, a[role="button"], input[type="button"]')
  ];

  const target = candidates.find(el => {
    const text = (el.textContent || el.value || '').trim().toLowerCase();
    const aria = (el.getAttribute('aria-label') || '').toLowerCase();
    return /^(akceptuj|akceptuj wszystkie|zgadzam się|accept all|accept|allow all)$/i
      .test(text) || /accept|akceptuj/.test(aria);
  });

  if (target) {
    target.click();
    clearInterval(interval);
  }
}, 500);

Polluje co 500ms przez 10 sekund (20 prób × 500ms). Po znalezieniu pierwszego pasującego przycisku — klika i kończy. Realna szybkość: użytkownik nawet nie zauważy bannera.

Uwaga etyczna: klikając „Akceptuj" zgadzasz się na cookies marketingowe. Jeśli Ci to przeszkadza — użyj raczej Sposób 1+2 (samo ukrycie bez akceptu). Wtedy strona widzi Cię jako anonimowego użytkownika, który po prostu nie odpowiedział.

Sposób 5 — Shadow DOM (ekstremalne przypadki)

OneTrust, Cookiebot, Usercentrics — najpopularniejsze SaaS-y cookie bannerów — często renderują UI wewnątrz Shadow DOM. CSS spoza shadow root nie ma tam dostępu. Trzeba JS:

// Znajdź element host (po popularnych nazwach), wejdź w jego shadowRoot
function hideShadowBanners() {
  const hosts = document.querySelectorAll(
    '#onetrust-consent-sdk, #usercentrics-root, #CybotCookiebotDialog'
  );

  hosts.forEach(host => {
    host.style.display = 'none';
    // Plus shadow content (jeśli używa shadow DOM)
    if (host.shadowRoot) {
      const style = document.createElement('style');
      style.textContent = ':host { display: none !important; }';
      host.shadowRoot.appendChild(style);
    }
  });
}

// Pierwsze uruchomienie + observer na późne wstawienia
hideShadowBanners();
new MutationObserver(hideShadowBanners)
  .observe(document.body, { childList: true, subtree: true });

MutationObserver łapie też bannery, które wstawiają się po DOMContentLoaded — typowo skrypty trackerowe ładują się asynchronicznie i banner pojawia się 1-2 sekundy po wczytaniu strony.

Jak to wpiąć do JustZix

  1. Zainstaluj wtyczkę (strona pobierania — paczka ZIP, 2 minuty).
  2. Kliknij ikonę JustZix → „Nowa reguła".
  3. Wzorzec URL: * (jeśli ma działać wszędzie) albo https://example.com/* (jedna domena).
  4. W zakładce CSS wklej Sposób 1 (uniwersalny) — zostaw aktywne.
  5. Jak natrafisz na stronę, gdzie ukrywanie nie zadziałało — dodaj Sposób 4 jako regułę JS, ograniczoną do tej domeny.
  6. Synchronizuj klucz między urządzeniami — banner znika na laptopie, PC i komputerze służbowym jednocześnie.

Pułapki, których warto unikać

Co dalej

To samo podejście działa na innych UX-killerach: newsletter pop-upy, „włącz powiadomienia", paywall preview. Zobacz więcej gotowych snippetów w sekcji Przykłady, albo realne scenariusze użycia JustZix.

Zainstaluj JustZix i pisz własne reguły. Pierwszy snippet z tego artykułu wklejony do wtyczki = banner zniknie na 80% stron. Reszta — to iteracja per problematyczna domena.

Oceń ten wpis

Brak ocen — oceń jako pierwszy.

Wypróbuj samodzielnie

Zainstaluj JustZix i wklej dowolny snippet z tego artykułu. Dwie minuty od zera do działającej reguły na wszystkich Twoich urządzeniach.

Pobierz JustZix

Funkcje · Jak to działa · Przykłady · Zastosowania