Cookie-баннер не блокирует ничего сам по себе — это окно с текстом и кнопкой. Если Яндекс.Метрика, рекламный пиксель или виджет чата загружаются при открытии страницы, данные посетителя уходят до того, как он что-то нажал, и согласие оказывается фиктивным: по статье 9 152-ФЗ оно должно быть предварительным, а не оформленным задним числом. Правильная схема одна: до согласия на странице работает только то, без чего сайт не функционирует, а всё остальное подключается скриптом после нажатия «Принять». Ниже — что относить к необходимому, а что блокировать обязательно, как технически отложить загрузку счётчика, где хранить сам факт согласия и как за минуту проверить, что блокировка действительно работает, а не только выглядит работающей. Отдельно разберём то, что чаще всего забывают: карты, видео и внешние шрифты подключаются не через script, а через iframe и link, и их тоже нужно откладывать. Источники: 152-ФЗ, глава 13.11 КоАП.
Проверить свой сайт: что грузится до согласия — бесплатно ←
Почему баннер без блокировки хуже, чем его отсутствие
Баннер — это заявление: «мы спрашиваем разрешение». Если при этом счётчик уже отработал, заявление противоречит фактам, и проверяющему не нужно ничего доказывать: он видит и баннер, и сетевые запросы, ушедшие до клика.
Сайт вообще без баннера в этом смысле честнее: там нарушение одно. С баннером, который ничего не блокирует, их два — обработка без основания и введение посетителя в заблуждение.
Что блокировать, а что нет
| Категория | Примеры | До согласия |
|---|---|---|
| Технически необходимые | сессия авторизации, корзина, CSRF-защита, само cookie согласия | работают |
| Аналитика | Яндекс.Метрика, любые счётчики посещаемости | блокировать |
| Реклама и ретаргетинг | пиксели рекламных систем, коллтрекинг | блокировать |
| Внешние встраивания | карты, видеоплееры, шрифты со сторонних хостингов | блокировать |
| Виджеты | онлайн-чаты, формы обратного звонка, отзывы | блокировать |
| Тестирование | A/B-платформы, тепловые карты, запись сессий | блокировать |
Граница проходит не по «важности для бизнеса», а по вопросу: сломается ли сайт без этого прямо сейчас. Аналитика не ломает сайт — она нужна вам, а не посетителю.
Отдельно про запись сессий и тепловые карты: они пишут поведение конкретного человека, иногда вместе с содержимым форм. Это самый чувствительный пункт списка, и грузиться до согласия он не должен ни при каких условиях.
Как отложить загрузку: три рабочих приёма
1. Подключать тег скриптом после согласия. В разметке нет кода счётчика — есть функция, которая создаёт элемент script и вставляет его в документ. Функция вызывается из обработчика кнопки «Принять», а при следующих визитах — если сохранённое согласие найдено.
2. Тип text/plain и подмена после согласия. Тег счётчика лежит в разметке, но с типом, который браузер не исполняет. После согласия скрипт находит такие теги, меняет тип на обычный и заново вставляет их в документ.
3. Атрибут-маркер и общий загрузчик. Все внешние скрипты помечаются признаком категории (аналитика, реклама, виджет), а один загрузчик после согласия включает те категории, на которые человек согласился. Этот вариант удобнее всего, если категорий больше одной.
Что бы вы ни выбрали, проверьте встраивания в разметке: карта, видео и шрифты подключаются не только через script, но и через iframe и link, и их тоже нужно откладывать.
Частая ошибка: заблокировали не то
Два перекоса встречаются одинаково часто.
Заблокировали слишком мало. Отложили счётчик, но оставили чат, карту и шрифты со стороннего домена. Формально трекер один, а данные посетителя всё равно уходят третьим лицам до согласия — нарушение то же самое.
Заблокировали слишком много. Отложили авторизацию или корзину, и сайт перестал работать до нажатия кнопки. Технически необходимое блокировать не нужно и вредно: обработка для работы сервиса обоснована не согласием, а исполнением договора с пользователем.
Проверить себя просто: составьте список всех внешних доменов, к которым обращается страница, и напротив каждого напишите, что сломается, если его убрать. Если ответ «ничего для посетителя» — блокируйте.
Где хранить согласие
В отдельном cookie или localStorage, и хранить стоит три вещи:
- факт согласия и его состав (на какие категории);
- дату — чтобы понимать срок;
- версию текста политики — чтобы при её изменении спросить заново.
Само это хранение технически необходимо: без него баннер показывался бы при каждом открытии страницы.
Проверка за минуту
- Откройте сайт в режиме инкогнито.
- Панель разработчика → вкладка «Сеть».
- Обновите страницу и ничего не нажимайте в баннере.
- Посмотрите список запросов: если среди них есть обращения к системам аналитики или рекламы — блокировки нет.
- Отдельно проверьте вкладку хранилища: аналитических cookie до согласия быть не должно.
Тот же результат можно получить, не разбираясь в панели: бесплатная проверка сайта показывает, какие трекеры и cookie появляются до согласия, и что из этого видно проверяющему.
Чем это грозит
Загрузка трекеров до согласия — обработка без надлежащего основания, состав по части 2 статьи 13.11 КоАП: для юридических лиц 300 000–700 000 ₽, при повторном нарушении по части 2.1 — 1 000 000–1 500 000 ₽.
Дополнительный риск — зарубежные сервисы: если счётчик или виджет передаёт данные за границу, добавляется трансграничная передача по статье 12 152-ФЗ с отдельным уведомлением. Разбор: «Трансграничная передача ПДн» и «Google Analytics в России».
Что почитать рядом
- Cookie-баннер по 152-ФЗ: каким он должен быть
- Яндекс.Метрика и согласие на обработку
- Предзаполненная галочка согласия — почему так нельзя
- Политика обработки ПДн: образец
Запустить бесплатную проверку сайта — покажет трекеры, cookie до согласия, политику и зарубежные сервисы за минуту.