Проверка трех состояний cookie-баннера (До клика, Отказ, Согласие) в техническом GDPR-аудите

Три изолированные камеры проверяют один сайт до выбора, после отказа и после согласия, а собранные следы поступают в общую папку доказательств.

Когда компания устанавливает cookie-баннер на сайт, проверка его работы обычно занимает десять секунд. Кто-то открывает главную страницу в режиме инкогнито, видит всплывающее окно внизу экрана, нажимает «Принять» или «Отклонить», убеждается, что плашка исчезла, и закрывает задачу.

Даже многие коммерческие сканеры соответствия делают немногим больше: они один раз загружают HTML-код страницы и выписывают список cookie, найденных в первую секунду. Такая проверка в одно касание пропускает именно те нарушения, из-за которых компании получают претензии от регуляторов или теряют данные о конверсиях в рекламных кабинетах.

Чтобы точно знать, как сайт обращается с данными посетителей, необходимо последовательно протестировать три отдельных состояния браузера: что происходит в первые восемь секунд, пока посетитель ничего не нажал (До клика), что происходит после нажатия кнопки Отклонить все и что запускается после нажатия Принять все. Только сравнение этих трех состояний в изолированном браузере выявляет трекеры, срабатывающие до согласия, бутафорские кнопки отказа, которые просто прячут окно с экрана, и сломанные теги, блокирующие аналитику даже после согласия пользователя.

Главные выводы


Одиночная загрузка страницы фиксирует лишь статический срез трафика первой секунды и не видит отложенных таймеров, ошибок обработчика отказа и поведения трекеров при переходе на следующую страницу.

При проверке механизма согласия соответствие требованиям GDPR зависит от точного момента запуска скриптов и реакции сайта на действие пользователя:

  1. Отложенные триггеры до согласия (setTimeout и прокрутка экрана): Во многих настройках тег-менеджеров запуск Meta Pixel, LinkedIn Insight Tag или Hotjar просто откладывают на три секунды или до прокрутки страницы на 200 пикселей в расчете на то, что посетитель сразу нажмет «Принять». Сканер, закрывающий вкладку через секунду, отчитывается об отсутствии проблем, тогда как реальный посетитель, читающий первый экран до клика по баннеру, отслеживается без согласия.
  2. Скрытие окна без отзыва разрешений: Нажатие кнопки «Отклонить все» или «Только необходимые» должно делать больше, чем просто применять display: none к модальному окну. Оно обязано удерживать флаги Google Consent Mode v2 в статусе denied и блокировать запуск рекламных тегов при дальнейшем переходе по страницам сайта.
  3. Хранение идентификаторов вне обычных HTTP-cookie: Современные рекламные и аналитические скрипты часто записывают уникальные идентификаторы посетителя (UUID) в window.localStorage, sessionStorage или IndexedDB, когда стандартные cookie заблокированы. Проверка одного лишь document.cookie полностью упускает эти записи.
АУДИТ ТРЕХ СОСТОЯНИЙ БРАУЗЕРА: ДО КЛИКА VS ОТКАЗ VS СОГЛАСИЕ
Проверка в рантайме
01
Состояние 1: До клика (0-8 сек)
Чистый профиль браузера, прокрутка на 300 px, без нажатий на баннер
Ноль рекламных запросов
02
Состояние 2: Отказ + Навигация
Клик «Отклонить все», перезагрузка и переход на вторую внутреннюю страницу
Проверка тишины в сети
03
Состояние 3: Согласие + Сверка тегов
Новая сессия, клик «Принять все», проверка аналитики и списка подрядчиков
Сверка с политикой

Как устроен протокол проверки трех состояний на базе Playwright

Автоматизированный аудит на Playwright запускает изолированные сессии браузера, чтобы записать каждый исходящий HTTP-запрос, установку cookie и ключи локального хранилища во всех трех сценариях взаимодействия.

Вместо ручной проверки вкладки Network в DevTools, которую никто не повторяет после очередного обновления маркетинговых тегов, мы используем детерминированный скрипт, проверяющий каждое состояние по очереди:

Состояние 1: Без взаимодействия (Проверка до согласия)

Скрипт открывает проверяемый URL в новом чистом профиле Chromium с европейского IP-адреса, ждет полные восемь секунд и прокручивает страницу до середины экрана, не нажимая никаких кнопок на cookie-баннере.

Состояние 2: Состояние после отказа (Отказ и сохранение выбора при переходах)

На втором шаге скрипт находит кнопку отказа на баннере («Отклонить все», «Только необходимые», «Reject All»), нажимает ее, ждет пять секунд, а затем переходит по внутренней ссылке на вторую страницу сайта.

Состояние 3: Состояние после согласия (Полнота аналитики и соответствие политике)

В финале скрипт открывает новую чистую сессию браузера, нажимает «Принять все» и фиксирует каждый сторонний домен, срок жизни cookie и ключи в хранилище браузера.


4 самых частых сбоя состояний согласия в продакшене

Сравнение сетевых логов между тремя состояниями сразу показывает, где именно кроется причина нарушения: в зашитом в HTML-шаблон скрипте, в ошибочном триггере GTM или в потере cookie отказа.

Тип ошибкиСостояние 1 (До клика)Состояние 2 (Отклонить все)Состояние 3 (Принять все)Техническая причина в коде
1. Корректная настройка0 запросов трекинга; 0 рекламных cookie0 запросов трекинга; 1 техническая cookie отказаЗаявленные теги аналитики и рекламы работают штатноСкрипты обернуты в колбэки согласия; триггеры GTM проверяют разрешенные категории.
2. Срабатывание до клика (чаще всего)GA4, Meta Pixel или YouTube грузятся сразуУже загруженные в память трекеры продолжают работуТрекеры продолжают работуКод счетчика вставлен напрямую в <head> в обход блокировки CMP-баннера.
3. Бутафорская кнопка «Отклонить»0 запросов трекинга при входеАналитика или запись сессий стартует после клика «Отклонить»Все теги работаютТриггер GTM срабатывает на сам факт клика по кнопке баннера без фильтра consent === 'granted'.
4. Потеря отказа на второй странице0 запросов трекинга на главной0 на главной, но трекеры запускаются при переходе в каталогВсе теги работаютCookie отказа записана с неверным атрибутом path или затирается при смене страницы.
5. Сломанная аналитика после согласия0 запросов трекинга0 запросов трекинга0 запросов аналитики (потеря данных маркетинга)Разработчик удалил или повредил вызов consent update при попытке убрать предупреждение GDPR.

Визуальная проверка баннера vs одиночный сканер vs аудит трех состояний

Сам факт появления cookie-баннера на экране ничего не говорит о соблюдении GDPR; только сравнение сетевой активности браузера во всех трех состояниях доказывает, что защита работает.

ГЛУБИНА ПРОВЕРКИ: ОДИНОЧНЫЙ СКАНЕР ИЛИ ТЕСТ 3 СОСТОЯНИЙ В PLAYWRIGHT
Методика аудита

Обычный сканер cookie

Один снимок

Загружает страницу один раз без нажатия на кнопки баннера и без проверки переходов внутри сайта.

  • Не проверяет реальную работу кнопки «Отклонить»
  • Пропускает скрипты, срабатывающие при прокрутке
  • Игнорирует идентификаторы в localStorage и sessionStorage

Аудит 3 состояний в Playwright

Полный цикл

Проходит сценарии «До клика», «Отказ» и «Согласие» в отдельных сессиях с полной сверкой сети и хранилищ.

  • Доказывает отсутствие трекинга до согласия и после отказа
  • Проверяет сохранение отказа на внутренних страницах
  • Подтверждает исправную отправку аналитики после согласия

Часто задаваемые вопросы (FAQ)

Если мы используем платный сертифицированный баннер (Cookiebot, Usercentrics, OneTrust), может ли кнопка «Отклонить» все равно работать с ошибкой?

Да. Платформа управления согласием (CMP) отвечает только за показ плашки и передачу сигнала о выборе пользователя. Если разработчик или маркетолог ранее вставил пиксель LinkedIn, скрипт Hotjar, виджет Calendly или ссылку на шрифты Google Fonts напрямую в секцию <head> шаблона сайта без привязки к блокирующим атрибутам CMP, этот скрипт будет запускаться и до клика, и после нажатия «Отклонить», независимо от стоимости вашего тарифа CMP.

В базовом режиме (Basic Consent Mode) до момента получения согласия браузер вообще не отправляет запросов на серверы Google. В расширенном режиме (Advanced Consent Mode) браузер может отправлять безкуковые пинги (gcs=G100), если это прямо предусмотрено вашей правовой базой и политикой конфиденциальности. В большинстве строгих европейских юрисдикций (включая Германию и Польшу) полная блокировка любых внешних аналитических пингов до явного клика на «Принять» остается самой безопасной технической конфигурацией.

Как часто нужно запускать проверку трех состояний согласия?

Автоматический тест трех состояний стоит запускать после каждой публикации изменений в Google Tag Manager, после встраивания стороннего видеоплеера или формы записи, а также при обновлении шаблонов сайта. Как и при комплексном обновлении архитектуры, которое мы разбирали в кейсе про модернизацию устаревших веб-систем, автоматическая проверка перед релизом страхует команду от случайного появления сторонних трекеров в продакшене.


Проверьте, как ваш сайт ведет себя во всех трех состояниях

Не гадайте, блокирует ли ваш cookie-баннер сторонние трекеры до клика и после нажатия кнопки «Отклонить». Пришлите нам адрес вашего сайта. Мы проведем автоматизированный браузерный аудит трех состояний на живых страницах и предоставим наглядный инженерный отчет со списком всех сетевых запросов, cookie и записей в localStorage для состояний До клика, Отказ и Согласие.

Изучите наши услуги по веб-инженерии и техническому аудиту или закажите технический аудит сайта прямо сейчас.