Когда компания устанавливает cookie-баннер на сайт, проверка его работы обычно занимает десять секунд. Кто-то открывает главную страницу в режиме инкогнито, видит всплывающее окно внизу экрана, нажимает «Принять» или «Отклонить», убеждается, что плашка исчезла, и закрывает задачу.
Даже многие коммерческие сканеры соответствия делают немногим больше: они один раз загружают HTML-код страницы и выписывают список cookie, найденных в первую секунду. Такая проверка в одно касание пропускает именно те нарушения, из-за которых компании получают претензии от регуляторов или теряют данные о конверсиях в рекламных кабинетах.
Чтобы точно знать, как сайт обращается с данными посетителей, необходимо последовательно протестировать три отдельных состояния браузера: что происходит в первые восемь секунд, пока посетитель ничего не нажал (До клика), что происходит после нажатия кнопки Отклонить все и что запускается после нажатия Принять все. Только сравнение этих трех состояний в изолированном браузере выявляет трекеры, срабатывающие до согласия, бутафорские кнопки отказа, которые просто прячут окно с экрана, и сломанные теги, блокирующие аналитику даже после согласия пользователя.
Главные выводы
- Почему одиночного сканирования недостаточно: Однократная загрузка URL не позволяет отличить скрипт, который незаконно отправляет данные до согласия, от скрипта, который корректно ждет решения посетителя.
- Три обязательных состояния проверки: Любой технический аудит приватности должен фиксировать сетевые запросы, файлы cookie,
localStorageиsessionStorageв трех сценариях:Состояние 1: Без взаимодействия (до согласия),Состояние 2: После отказаиСостояние 3: После согласия. - Ловушка бутафорской кнопки «Отклонить»: Примерно в 30% некорректно настроенных контейнеров Google Tag Manager нажатие на «Отклонить» скрывает баннер визуально, но продолжает отправлять хиты аналитики или записывать рекламные идентификаторы в
localStorage. - Защита маркетинга в Состоянии 3: Проверка состояния после нажатия «Принять все» не менее важна для бизнеса, так как слишком грубая блокировка скриптов часто ломает передачу конверсий от пользователей, которые дали явное согласие.
Почему одна загрузка страницы не доказывает корректную работу cookie-баннера
Одиночная загрузка страницы фиксирует лишь статический срез трафика первой секунды и не видит отложенных таймеров, ошибок обработчика отказа и поведения трекеров при переходе на следующую страницу.
При проверке механизма согласия соответствие требованиям GDPR зависит от точного момента запуска скриптов и реакции сайта на действие пользователя:
- Отложенные триггеры до согласия (
setTimeoutи прокрутка экрана): Во многих настройках тег-менеджеров запуск Meta Pixel, LinkedIn Insight Tag или Hotjar просто откладывают на три секунды или до прокрутки страницы на 200 пикселей в расчете на то, что посетитель сразу нажмет «Принять». Сканер, закрывающий вкладку через секунду, отчитывается об отсутствии проблем, тогда как реальный посетитель, читающий первый экран до клика по баннеру, отслеживается без согласия. - Скрытие окна без отзыва разрешений: Нажатие кнопки «Отклонить все» или «Только необходимые» должно делать больше, чем просто применять
display: noneк модальному окну. Оно обязано удерживать флаги Google Consent Mode v2 в статусеdeniedи блокировать запуск рекламных тегов при дальнейшем переходе по страницам сайта. - Хранение идентификаторов вне обычных HTTP-cookie: Современные рекламные и аналитические скрипты часто записывают уникальные идентификаторы посетителя (UUID) в
window.localStorage,sessionStorageили IndexedDB, когда стандартные cookie заблокированы. Проверка одного лишьdocument.cookieполностью упускает эти записи.
Как устроен протокол проверки трех состояний на базе Playwright
Автоматизированный аудит на Playwright запускает изолированные сессии браузера, чтобы записать каждый исходящий HTTP-запрос, установку cookie и ключи локального хранилища во всех трех сценариях взаимодействия.
Вместо ручной проверки вкладки Network в DevTools, которую никто не повторяет после очередного обновления маркетинговых тегов, мы используем детерминированный скрипт, проверяющий каждое состояние по очереди:
Состояние 1: Без взаимодействия (Проверка до согласия)
Скрипт открывает проверяемый URL в новом чистом профиле Chromium с европейского IP-адреса, ждет полные восемь секунд и прокручивает страницу до середины экрана, не нажимая никаких кнопок на cookie-баннере.
- Что должно происходить: Разрешены только строго необходимые собственные запросы сайта (HTML, CSS, локальные шрифты, техническая сессионная или защитная cookie).
- Что чаще всего нарушается: Google Analytics 4 (
/g/collect), Meta Pixel (connect.facebook.net), шрифты Google Fonts (fonts.googleapis.com), встроенные плееры YouTube (youtube.com) или виджеты онлайн-чатов загружаются мгновенно, еще до того, как посетитель прикоснулся к баннеру.
Состояние 2: Состояние после отказа (Отказ и сохранение выбора при переходах)
На втором шаге скрипт находит кнопку отказа на баннере («Отклонить все», «Только необходимые», «Reject All»), нажимает ее, ждет пять секунд, а затем переходит по внутренней ссылке на вторую страницу сайта.
- Что должно происходить: Устанавливается только техническая запись, запоминающая отказ посетителя, баннер не всплывает заново на второй странице, и ни на первой, ни на второй странице не отправляется ни одного аналитического или рекламного запроса.
- Что чаще всего нарушается: Мы регулярно встречаем сайты, где
Состояние 1настроено чисто, но нажатие кнопки «Отклонить» вызывает общий триггер клика в GTM (gtm.click), который ошибочно запускает маркетинговые теги, потому что условие срабатывания привязали к «любому клику по кнопке баннера» без проверки статуса согласия. В других случаях переход на вторую страницу снова включает трекеры, так как выбор пользователя не сохранился.
Состояние 3: Состояние после согласия (Полнота аналитики и соответствие политике)
В финале скрипт открывает новую чистую сессию браузера, нажимает «Принять все» и фиксирует каждый сторонний домен, срок жизни cookie и ключи в хранилище браузера.
- Что должно происходить: Штатные теги аналитики и рекламы срабатывают без ошибок, статус Consent Mode v2 переключается на
granted, а все активные внешние домены совпадают со списком сервисов, заявленным в политике конфиденциальности. - Что чаще всего нарушается: Либо в фоновом режиме срабатывают забытые скрипты сервисов, от которых компания отказалась два года назад (и которые не упомянуты в политике), либо поспешная попытка разработчика починить GDPR полностью заблокировала отправку событий в GA4 и Google Ads даже для тех пользователей, которые нажали «Принять».
4 самых частых сбоя состояний согласия в продакшене
Сравнение сетевых логов между тремя состояниями сразу показывает, где именно кроется причина нарушения: в зашитом в HTML-шаблон скрипте, в ошибочном триггере GTM или в потере cookie отказа.
| Тип ошибки | Состояние 1 (До клика) | Состояние 2 (Отклонить все) | Состояние 3 (Принять все) | Техническая причина в коде |
|---|---|---|---|---|
| 1. Корректная настройка | 0 запросов трекинга; 0 рекламных cookie | 0 запросов трекинга; 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; только сравнение сетевой активности браузера во всех трех состояниях доказывает, что защита работает.
Обычный сканер cookie
Один снимокЗагружает страницу один раз без нажатия на кнопки баннера и без проверки переходов внутри сайта.
- Не проверяет реальную работу кнопки «Отклонить»
- Пропускает скрипты, срабатывающие при прокрутке
- Игнорирует идентификаторы в localStorage и sessionStorage
Аудит 3 состояний в Playwright
Полный циклПроходит сценарии «До клика», «Отказ» и «Согласие» в отдельных сессиях с полной сверкой сети и хранилищ.
- Доказывает отсутствие трекинга до согласия и после отказа
- Проверяет сохранение отказа на внутренних страницах
- Подтверждает исправную отправку аналитики после согласия
Часто задаваемые вопросы (FAQ)
Если мы используем платный сертифицированный баннер (Cookiebot, Usercentrics, OneTrust), может ли кнопка «Отклонить» все равно работать с ошибкой?
Да. Платформа управления согласием (CMP) отвечает только за показ плашки и передачу сигнала о выборе пользователя. Если разработчик или маркетолог ранее вставил пиксель LinkedIn, скрипт Hotjar, виджет Calendly или ссылку на шрифты Google Fonts напрямую в секцию <head> шаблона сайта без привязки к блокирующим атрибутам CMP, этот скрипт будет запускаться и до клика, и после нажатия «Отклонить», независимо от стоимости вашего тарифа CMP.
Как работает Google Consent Mode v2 в состоянии до клика и после отказа?
В базовом режиме (Basic Consent Mode) до момента получения согласия браузер вообще не отправляет запросов на серверы Google. В расширенном режиме (Advanced Consent Mode) браузер может отправлять безкуковые пинги (gcs=G100), если это прямо предусмотрено вашей правовой базой и политикой конфиденциальности. В большинстве строгих европейских юрисдикций (включая Германию и Польшу) полная блокировка любых внешних аналитических пингов до явного клика на «Принять» остается самой безопасной технической конфигурацией.
Как часто нужно запускать проверку трех состояний согласия?
Автоматический тест трех состояний стоит запускать после каждой публикации изменений в Google Tag Manager, после встраивания стороннего видеоплеера или формы записи, а также при обновлении шаблонов сайта. Как и при комплексном обновлении архитектуры, которое мы разбирали в кейсе про модернизацию устаревших веб-систем, автоматическая проверка перед релизом страхует команду от случайного появления сторонних трекеров в продакшене.
Проверьте, как ваш сайт ведет себя во всех трех состояниях
Не гадайте, блокирует ли ваш cookie-баннер сторонние трекеры до клика и после нажатия кнопки «Отклонить». Пришлите нам адрес вашего сайта. Мы проведем автоматизированный браузерный аудит трех состояний на живых страницах и предоставим наглядный инженерный отчет со списком всех сетевых запросов, cookie и записей в localStorage для состояний До клика, Отказ и Согласие.
Изучите наши услуги по веб-инженерии и техническому аудиту или закажите технический аудит сайта прямо сейчас.