← Все статьи

Туториалы

Скрытие cookie-баннеров на любом сайте — 5 готовых сниппетов

GDPR должен был дать нам контроль над cookie. Вместо этого мы получили всплывающие окна, которые закрывают 30% экрана на каждом втором сайте. В этой статье — пять способов избавиться от этой стены раз и навсегда: с помощью CSS, JavaScript и расширения JustZix.

Это законно?

Да. GDPR и директива ePrivacy налагают обязанности на владельца сайта (он должен спросить согласие до установки cookie). С твоей стороны — как пользователь — ты свободно можешь менять внешний вид сайта в своём браузере. Так же, как любой блокировщик рекламы или режим чтения в Safari. Важное уточнение: скрытие баннера обычно не равно согласию на cookie — большинство сайтов продолжают ставить только строго необходимые cookie, пока ты явно не нажмёшь «Принять».

Способ 1 — универсальный CSS по самым частым классам

Самый простой и безопасный. Ловит ~80% баннеров в сети:

/* Cookie-баннеры — самые частые классы и 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;
}

/* Многие баннеры блокируют прокрутку body до клика */
html, body {
  overflow: auto !important;
  position: static !important;
}

Второй блок критически важен — многие баннеры выставляют overflow: hidden на <body>, чтобы заблокировать прокрутку, пока ты не примешь. Принудительный overflow: auto возвращает нормальное поведение.

Способ 2 — агрессивные селекторы атрибутов

Когда сайт использует динамические имена классов (Tailwind, CSS-in-JS) и базовый паттерн не совпадает, целься в атрибуты:

/* Ловит всё, у чего есть "cookie" или "consent" в классе / 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;
}

Флаг i в селекторах атрибутов (например, [class*="cookie" i]) делает их нечувствительными к регистру. Без него .CookieBanner не совпал бы с "cookie".

Предупреждение: этот сниппет может захватить слишком много — например, статья о cookie (про закон!) тоже будет скрыта. Используй его с умом, в идеале — в папке правил, ограниченной конкретными доменами.

Способ 3 — селектор :has() (современный)

С Chrome 105 и Safari 15.4 можно использовать :has() — селектор, который целится в элемент, содержащий потомка, подходящего под паттерн. Идеально для cookie-баннеров, потому что у них всегда есть кнопка «Принять» внутри:

/* Практичная версия — целится в fixed/sticky контейнеры с кнопкой Accept */
div:has(> button[aria-label*="Accept" i]),
div:has(> button[aria-label*="cookie" i]),
aside:has(> button[aria-label*="consent" i]) {
  display: none !important;
}

CSS не поддерживает :contains() (это изобретение jQuery). Вместо этого мы целимся в атрибут aria-label — у хорошо спроектированных баннеров он всё равно есть для скринридеров.

Способ 4 — JavaScript автоматически нажимает «Принять»

Когда CSS недостаточно (баннер в Shadow DOM, блокировка всей страницы), JS нажимает за тебя. Быстрее, чем ты успеешь заметить:

// Автоматически нажимает кнопки "Принять" — работает даже в iframe
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 /^(принять все|принять всё|принять|согласен|разрешить все|accept all|accept)$/i
      .test(text) || /accept|принять|разрешить/.test(aria);
  });

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

Опрашивает каждые 500 мс в течение 10 секунд (20 попыток × 500 мс). Находит первую подходящую кнопку — нажимает и останавливается. На практике: ты даже не видишь баннер.

Этическое замечание: нажимая «Принять», ты соглашаешься на маркетинговые cookie. Если это тебя смущает — используй способы 1+2 (скрытие без согласия). Тогда сайт видит тебя как анонимного пользователя, который просто не ответил.

Способ 5 — Shadow DOM (крайние случаи)

OneTrust, Cookiebot, Usercentrics — самые распространённые SaaS для cookie-баннеров — часто рендерят свой UI внутри Shadow DOM. CSS вне shadow root не может до него дотянуться. Нужен JS:

// Находим host-элемент (по частым именам), заходим в его shadowRoot
function hideShadowBanners() {
  const hosts = document.querySelectorAll(
    '#onetrust-consent-sdk, #usercentrics-root, #CybotCookiebotDialog'
  );

  hosts.forEach(host => {
    host.style.display = 'none';
    // Плюс shadow-содержимое (если используется shadow DOM)
    if (host.shadowRoot) {
      const style = document.createElement('style');
      style.textContent = ':host { display: none !important; }';
      host.shadowRoot.appendChild(style);
    }
  });
}

// Первый запуск + observer для поздних вставок
hideShadowBanners();
new MutationObserver(hideShadowBanners)
  .observe(document.body, { childList: true, subtree: true });

MutationObserver ловит и баннеры, которые вставляются после DOMContentLoaded — обычно скрипты трекинга загружаются асинхронно, и баннер появляется через 1-2 секунды после загрузки страницы.

Как подключить это к JustZix

  1. Установи расширение (страница загрузки — ZIP, 2 минуты).
  2. Нажми иконку JustZix → «Новое правило».
  3. URL-паттерн: * (чтобы применять везде) или https://example.com/* (один домен).
  4. На вкладке CSS вставь способ 1 (универсальный) — оставь его активным.
  5. Если попадёшь на сайт, где ничего не скрывается — добавь способ 4 как JS-правило, ограниченное этим доменом.
  6. Синхронизируй свой ключ между устройствами — баннер исчезает на ноутбуке, на ПК и на рабочем компьютере одновременно.

Ловушки, которых стоит избегать

Что делать дальше

Тот же подход работает для других убийц UX: попапы рассылок, «включи уведомления», превью пейволов. Посмотри другие готовые сниппеты в разделе «Примеры» или реальные сценарии применения JustZix.

Установи JustZix и пиши свои правила. Первый сниппет из этой статьи, вставленный в расширение, = баннер исчезает на 80% сайтов. Остальное — просто итерация по проблемным доменам.

Оцени эту статью

Оценок пока нет — оцени первым.

Попробуй сам

Установи JustZix и вставь любой сниппет из этой статьи. Две минуты от нуля до работающего правила на всех твоих устройствах.

Получить JustZix

Возможности · Как это работает · Примеры · Применение