
Баннер cookie на WordPress ставят обычно за пять минут: находят плагин с большим числом установок, включают, видят внизу серую плашку и считают вопрос закрытым. Через месяц выясняется, что плашка тянет скрипт с чужого домена, прыгает поверх первого экрана и добавила к загрузке главной полторы секунды — а требования закона она при этом закрывает наполовину, потому что политики обработки данных на сайте так и нет.
Ниже — что в России действительно требуется по персональным данным, а что перенесено из европейской практики и вам не нужно; почему тяжёлые баннеры бьют именно по первому экрану; как собрать лёгкий вариант; и главное — что нельзя блокировать до согласия, чтобы не остаться без статистики и без нормальной индексации. В SEO с 2005 года, и переставлять чужие баннеры на сайтах клиентов приходится регулярно.
Что требует закон на практике, а что придумали
Отдельного «закона о cookie» в России нет. Есть закон о персональных данных, и всё, что вы делаете на сайте, отсчитывается от него. Практическая рамка складывается из трёх обязанностей оператора.
Первая: опубликовать документ, описывающий вашу политику в отношении обработки персональных данных, и обеспечить к нему свободный доступ. Для сайта это означает отдельную страницу и ссылку на неё в подвале и рядом с каждой формой.
Вторая: получать согласие там, где данные действительно собираются. Это форма заявки, форма подписки, обратный звонок, комментарии — всё, где посетитель вводит имя, телефон, почту. Согласие оформляется отметкой, которая по умолчанию не проставлена, с текстом-ссылкой на политику. Согласие на рекламную рассылку берётся отдельным пунктом, а не тем же самым.
Третья: подать уведомление в надзорный орган о намерении обрабатывать персональные данные. Перечень исключений за последние годы сузился до того, что подавать нужно практически всем, у кого на сайте есть форма. Это отдельная процедура, к сайту она отношения не имеет, но проверять начинают именно с неё, и штрафы за неподанное уведомление для юридических лиц измеряются сотнями тысяч рублей. Актуальные размеры смотрите в статье 13.11 Кодекса об административных правонарушениях — они пересматривались в сторону увеличения, и цифры из статей трёхлетней давности уже неверны.
А теперь то, чего в российской практике не требуется. Не требуется предварительная блокировка всех cookie до нажатия кнопки. Не требуется дробное меню категорий с переключателями «аналитика», «маркетинг», «функциональные». Не требуется всплывающее окно на весь экран, которое нельзя закрыть, не сделав выбор. Всё это — прямое перенесение европейского регламента, где действует принцип предварительного разрешения. У нас модель другая: информирование плюс возможность отказаться. Именно поэтому копировать поведение зарубежных сайтов не нужно — вы получите весь вред и ни одной дополнительной гарантии.
Три вещи, которые должны быть на сайте
| Что требуется | Как закрывается на сайте | Типичная ошибка |
|---|---|---|
| Свободный доступ к политике обработки данных | Отдельная страница, ссылка в подвале на всех страницах | Страница есть, но закрыта от индексации или ссылка стоит только на главной |
| Согласие при отправке данных через форму | Непроставленная отметка со ссылкой на политику, отправка блокируется без неё | Отметка проставлена заранее либо согласие «считается данным по факту отправки» |
| Отдельное согласие на рекламные сообщения | Второй пункт с отдельной отметкой | Один пункт на всё сразу, потом претензии по рассылке |
| Уведомление о применении cookie | Короткая плашка с текстом и ссылкой на политику, кнопка понимания | Плашка есть, но ссылки на документ в ней нет |
| Возможность отказаться от аналитических cookie | Ссылка на раздел политики с описанием, как это сделать | Кнопка отказа, которая ничего не делает |
| Хранение данных из форм | Заявки уходят на почту и в базу, доступ ограничен | Копии заявок годами лежат в базе сайта без срока хранения |
Отдельно про последнюю строку. Плагины форм по умолчанию сохраняют все отправленные заявки внутри сайта. Через два года там лежит несколько тысяч записей с именами и телефонами, и при взломе сайта утекают именно они. Если бизнес-необходимости в этом хранении нет, отключайте сохранение и оставляйте отправку на почту и в систему учёта.
Тяжёлый баннер вредит не весом самим по себе, а тем, куда именно этот вес попадает.
- Внешний домен. Скрипт сервиса тянется со стороннего адреса. Браузер должен разрешить имя, установить защищённое соединение, скачать файл. Это отдельная цепочка задержек, которая прибавляется к загрузке до того, как посетитель что-то увидит.
- Вес. Готовые решения тянут не только логику показа, но и редактор оформления, переводы на десятки языков, справочник категорий cookie и механизм журналирования согласий. В сумме это сотни килобайт скриптов и стилей ради серой плашки в двадцать слов.
- Сдвиг раскладки. Баннер обычно рисуется скриптом уже после того, как страница показана. Экран дёргается, содержимое подпрыгивает вверх или вниз. Этот сдвиг измеряется и входит в оценку качества страницы.
- Перекрытие главного элемента. Если баннер выводится по центру и затемняет фон, он закрывает именно то, ради чего человек пришёл. На мобильном экране плашка на треть высоты — это половина первого экрана.
- Журналирование согласий. Часть сервисов на каждое нажатие отправляет запрос к себе. Для посетителя это ещё одно обращение к внешнему домену в момент, когда он и так ждёт.
Проверить свой баннер просто: откройте вкладку «Сеть» в инструментах разработчика, отфильтруйте запросы по домену, отличному от вашего, и посмотрите, сколько их и сколько они весят. Затем во вкладке производительности посмотрите на сдвиг раскладки. Если после появления плашки содержимое поехало, у вас проблема, которую видит и робот. Как эти величины связаны с ранжированием, разобрано в материале Core Web Vitals: скрытая причина, почему ваш сайт не растёт в позициях.
Что нельзя блокировать до согласия
Самая дорогая ошибка при настройке баннера — включить режим предварительной блокировки, скопированный из европейской практики. Последствия выглядят так.
Счётчик аналитики. Если он не запускается до нажатия кнопки, вы теряете всех, кто ушёл раньше, и всех, кто плашку просто игнорирует. Доля таких посетителей огромна. В отчётах появляется провал, источники трафика перестают сходиться, а решения вы принимаете по данным, где нет половины аудитории. При этом никакого юридического выигрыша нет: в российской модели информирования запуск счётчика до нажатия кнопки не нарушает закон, если на сайте есть политика и уведомление.
Карты, видео и виджеты чата. Блокировка встраиваемых элементов до согласия ломает страницу контактов: вместо карты пустой прямоугольник или серая заглушка. Посетитель считает, что сайт не работает.
Содержимое страницы. Отдельный случай, встречающийся реже, но самый разрушительный: сайт отдаёт основное содержимое только после нажатия кнопки. Робот кнопок не нажимает. Он получает страницу с плашкой и без текста, и именно её кладёт в индекс. Внешне сайт работает, а из поиска исчезает.
Собственные технические cookie. Куки авторизации, корзины, выбранного города, защиты форм от подделки запросов относятся к необходимым для работы сайта. Блокировать их нельзя ни по закону, ни по здравому смыслу — без них сайт перестаёт функционировать.
Если вы уже видели необъяснимый провал в статистике после установки баннера, начинать проверку стоит именно здесь. Отдельная тема — сам счётчик как источник задержек, я писал об этом в статье Яндекс Метрика — тормозит скорость сайта.
Работающий вариант укладывается в полтора-два килобайта и не делает ни одного внешнего запроса. Устроен он так.
- Разметка приходит вместе со страницей. Плашка есть в HTML сразу, а не вставляется скриптом. Тогда браузер знает о ней при первой раскладке и ничего не дёргается.
- Скрытие через атрибут, а не через удаление. Элемент скрывается штатным атрибутом скрытия, показывается снятием этого атрибута. Никакой перестройки дерева.
- Фиксированное положение внизу экрана. Не по центру, не поверх содержимого, высотой в одну-две строки. Первый экран остаётся нетронутым.
- Стили внутри страницы. Полтора десятка строк, вписанных в разметку, а не отдельный файл. Отдельный файл здесь — лишний запрос ради пятисот байт.
- Флаг согласия в хранилище браузера. Нажали кнопку — записали отметку, при следующем визите плашка не показывается. Проверка делается на стороне браузера, а не на сервере, и это принципиально: страница при этом остаётся одинаковой для всех и спокойно кэшируется целиком.
- Текст и ссылка. Одна фраза о том, что сайт использует cookie, ссылка на политику обработки данных и кнопка. Больше ничего.
Пятый пункт — тот, на котором ломаются самодельные решения. Если решение о показе плашки принимает сервер, читая куку, то страница становится разной для разных посетителей, а полностраничный кэш об этом не знает и отдаёт всем одну и ту же копию. Итог: одни видят плашку после согласия, другие не видят её никогда. Проверять надо в приватном окне и обязательно после сброса кэша.
Три варианта реализации и чем они отличаются
| Критерий | Внешний сервис согласий | Лёгкий плагин | Свой блок в шаблоне |
|---|---|---|---|
| Внешние запросы | От двух до пяти к чужому домену | Обычно нет | Нет |
| Вес | Сотни килобайт | Единицы килобайт | Полтора-два килобайта |
| Влияние на сдвиг раскладки | Высокое, плашка появляется после отрисовки | Среднее, зависит от реализации | Нулевое при разметке в HTML |
| Журнал согласий | Есть, с датами и версиями текста | Обычно нет | Нет |
| Кому подходит | Работа с зарубежной аудиторией, требования регламента ЕС | Сайт без разработчика под рукой | Российская аудитория, важна скорость |
| Риск сломать кэш | Низкий, всё решается в браузере | Средний, часть плагинов решает на сервере | Низкий при проверке флага в браузере |
| Стоимость поддержки | Подписка плюс обновления | Обновления плагина | Разовая работа, дальше не трогается |
Вывод из таблицы простой. Внешний сервис оправдан только тогда, когда у вас реально есть европейские посетители и нужен журнал согласий с фиксацией версий текста. Для сайта, работающего по России, это дорогая по скорости избыточность. Если ставить плагин, выбирайте лёгкий и обязательно проверяйте, где он принимает решение о показе — на сервере или в браузере. Подборка того, какие плагины вообще имеет смысл держать на сайте, есть в материале Лучшие SEO плагины для wordpress.
Баннер, кэш и индексация: три места, где ломается
Даже правильный по составу баннер ломает сайт, если не проверить три вещи.
Полностраничный кэш. Описано выше: решение о показе должно приниматься в браузере. Проверка — приватное окно после полного сброса кэша, затем повторный визит в том же окне: плашка должна исчезнуть.
Мобильное перекрытие. Плашка, закрывающая существенную часть экрана телефона сразу при входе, попадает в категорию навязчивых перекрытий. Это отдельно оцениваемый признак качества страницы. Держите высоту в пределах одной-двух строк и не затемняйте фон.
Ссылка на политику. Она должна вести на существующую страницу, открытую для индексации и доступную с любой страницы сайта. Закрывать политику от роботов не нужно: это обычная информационная страница, и её наличие в индексе играет в вашу пользу при оценке надёжности сайта.
Ещё одна деталь, о которой забывают: плашка не должна выводиться внутри содержимого записи. Если её вставили через редактор в шаблон записи, она попадёт в фрагменты, которые робот берёт для сниппета, и вы увидите в выдаче описание, начинающееся со слов про cookie. Место плашки — в подвале шаблона, за пределами блока содержимого. Как в целом устроено продвижение сайта на этой платформе, описано в разборе Как продвигать сайт на WordPress.
Случаи, когда установка плашки не даёт ничего, кроме потери скорости.
- Сайт-визитка без форм, без аналитики и без встроенных виджетов. Если вы не собираете никаких данных, нечего и уведомлять. Достаточно страницы с политикой, если формы появятся позже.
- Внутренний сервис за авторизацией. Согласие берётся один раз при регистрации, отдельная плашка на каждой странице избыточна.
- Сайт, у которого нет опубликованной политики. Здесь баннер не то что не нужен — он вреден, потому что создаёт видимость соблюдения требований при отсутствии главного документа. Порядок работ обратный: сначала политика и уведомление, потом плашка.
И общее замечание. Плашка про cookie — гигиена, а не защита. Она снижает риск претензий по одному узкому вопросу и не заменяет ни политику, ни отметку согласия в форме, ни поданное уведомление. Ставить её раньше, чем закрыты эти три пункта, — тратить скорость сайта впустую.
Частые вопросы
Нужно ли согласие на аналитические счётчики? Прямого требования получать отдельное согласие на установку счётчика в российском законодательстве нет. Практика снижения риска такая: описать в политике, какие сервисы аналитики используются и зачем, и показать уведомление о применении cookie со ссылкой на этот раздел. Блокировать счётчик до нажатия кнопки не нужно.
Достаточно ли просто ссылки на политику в подвале? Для самой политики — да, при условии, что ссылка есть на всех страницах и страница открыта. Для форм — нет: там нужна отдельная отметка согласия рядом с кнопкой отправки, потому что именно в этот момент данные передаются вам.
Можно ли считать согласием дальнейшее пользование сайтом? Для уведомления о cookie такая формулировка распространена и риск снижает. Для персональных данных из формы — нет. Там нужно активное действие пользователя: он сам ставит отметку, и она не проставлена заранее.
Плашка портит поведенческие показатели? Портит, если перекрывает содержимое. Полноэкранное окно с затемнением увеличивает долю тех, кто уходит сразу. Узкая полоса внизу на поведение практически не влияет. Разница между этими двумя вариантами по отказам заметна даже на небольшом трафике — сравните сами, включив показ полосой вместо окна.
Что делать, если сайт грузится медленно и без баннера? Тогда баннер — не ваша главная проблема, но и утяжелять на сотни килобайт нечего. Разберитесь сначала с картинками, шрифтами и количеством подключаемых файлов, порядок действий описан в материале Как повысить скорость загрузки сайта, а плашку сразу ставьте в лёгком варианте.
Нужно ли фиксировать согласия в журнале? Для форм — да, и большинство плагинов форм сохраняет отметку времени и текст согласия вместе с заявкой. Для cookie на российском сайте отдельный журнал согласий обычно избыточен и как раз он делает готовые решения тяжёлыми.
Если непонятно, что на вашем сайте уже сделано, а чего нет, начните с технической проверки: она показывает и лишний вес на первом экране, и страницы, закрытые от индексации по недосмотру, и битые ссылки на документы. Такую проверку я делаю в формате бесплатного аудита сайта, а исправление найденного входит в доработку сайта. Условия и порядок работы — на странице продвижение сайта в Яндексе: веду проекты лично, вы общаетесь со мной напрямую, а не с менеджером.
Коротко
- Отдельного закона о cookie в России нет: обязанности идут от закона о персональных данных — политика, согласие в формах, уведомление надзорного органа.
- Предварительная блокировка cookie до нажатия кнопки — европейская модель, у нас она не требуется и стоит вам половины статистики.
- Тяжёлые баннеры бьют не весом, а внешними запросами, сдвигом раскладки и перекрытием первого экрана.
- Рабочий вариант — полтора-два килобайта, разметка сразу в HTML, показ решается в браузере, плашка внизу высотой в одну-две строки.
- Никогда не блокируйте до согласия содержимое страницы: робот кнопок не нажимает и положит в индекс пустую страницу.
- Порядок работ: политика и уведомление сначала, плашка потом; иначе это видимость соблюдения при отсутствии главного.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Иринарх Сумароков
Поставили плагин с блокировкой до согласия. Через неделю в статистике посещаемость упала почти вдвое, хотя заявки шли как обычно. Это оно?
Анатолий Кузнецов автор
Почти наверняка оно, и признак вы назвали сами: заявки на месте, а посетители пропали. Значит, люди приходят, но счётчик их не считает, потому что скрипт не запускается до нажатия кнопки. Проверяется за минуту: откройте сайт в приватном окне, не трогая плашку, и посмотрите во вкладке «Сеть», уходит ли запрос счётчика. Не уходит — причина найдена. Отключайте предварительную блокировку в настройках плагина, обычно это переключатель с названием про блокировку скриптов до согласия. И имейте в виду неприятное следствие: неделя испорченных данных останется в отчётах навсегда, при сравнении периодов год к году она будет вылезать провалом. Отметьте себе эту дату в примечаниях, чтобы через год не искать несуществующую сезонность.
Исидор Плетнёв
А что скажете про формулировку «продолжая пользоваться сайтом, вы соглашаетесь»? Юрист говорит, что этого мало.
Анатолий Кузнецов автор
Он прав, но не для всего сразу. Разделите два случая. Уведомление о применении cookie — это информирование, и такая формулировка там распространена и риск снижает, особенно если рядом стоит ссылка на политику и кнопка подтверждения. А вот для персональных данных, которые человек вводит в форму, эта фраза не работает совсем: закон требует конкретного и осознанного действия. Значит, у формы должна быть отдельная отметка, не проставленная заранее, с текстом про согласие на обработку и ссылкой на документ, и отправка без неё не должна проходить. Плюс отдельная отметка на рекламные сообщения, если вы собираетесь что-то рассылать. Одним пунктом на всё сразу закрывать нельзя — именно на этом чаще всего и возникают претензии.
Каллистрат Ерофеев
Проверил свой баннер по совету из статьи. Три запроса на чужой домен и 240 килобайт скриптов ради одной строки текста. Снёс, написал двадцать строк своими руками.
Капитолина Сысоева
У нас плашка исчезает у одних посетителей и висит вечно у других. Сайт на кэшировании. Похоже на то, о чём вы пишете в пятом пункте?
Анатолий Кузнецов автор
Ровно оно. Ваш плагин решает, показывать плашку или нет, на стороне сервера: читает куку и в зависимости от неё отдаёт разный HTML. Полностраничный кэш этого не различает, он сохраняет первую сгенерированную версию и раздаёт её всем подряд. Кому досталась копия «согласие уже дано» — тот плашки не увидит никогда, даже при первом визите. Кому досталась обратная — увидит её всегда, сколько ни нажимай. Лечится двумя способами. Простой: найти в настройках плагина режим обработки на стороне браузера и включить его. Надёжный: заменить плагин блоком в подвале шаблона, где разметка одинакова для всех, а скрытие делает короткий скрипт по флагу в хранилище браузера. Тогда страница остаётся одной для всех и кэшируется без оговорок.
Кирьян Шабалин
Добавлю про формы. У нас в базе накопилось четыре года заявок с телефонами. Прочитал раздел, отключил сохранение и почистил старое. Спасибо, про это нигде не пишут.
Клавдия Ястребова
Скажите, а закрывать политику обработки данных от индексации нужно? Мне на прошлом проекте её закрыли в robots.
Анатолий Кузнецов автор
Не нужно, наоборот — вредно. Закон требует свободного доступа к документу, а закрытие в robots работает против этого: если страницу не обходит робот, она не появится в поиске и по прямому запросу с названием вашей компании её не найдут. Плюс наличие таких страниц в индексе — один из признаков, по которым оценивается основательность сайта: реквизиты, политика, условия, контакты. Их закрывают обычно по инерции, вместе с корзиной и личным кабинетом, не разбираясь. Единственное, что стоит сделать, — не выводить политику в блоках перелинковки и не давать на неё ссылку из каждой статьи: страница служебная, вес на неё гнать незачем. Ссылки в подвале и рядом с формами достаточно.
Лаврентий Мещеряков
Не хватает раздела про интернет-магазины. У нас плашка перекрывала кнопку добавления в корзину на телефонах, обнаружили случайно по записям визитов.
Ларион Кожевин
Подтверждаю про робота и пустую страницу. Знакомые включили блокировку содержимого до согласия, через месяц сайт вылетел почти весь. Восстанавливали долго.
Лукерья Бекетова
А если у нас есть посетители из Европы, пусть и немного? Обязательно ставить полноценный сервис согласий?
Анатолий Кузнецов автор
Смотрите не на факт визитов, а на то, направлена ли на них ваша деятельность: есть ли версия сайта на их языке, принимаете ли оплату в их валюте, доставляете ли туда. Если ничего этого нет и люди зашли случайно, полноценный сервис согласий с журналом и категориями вам избыточен. Если же вы целенаправленно работаете на европейский рынок, тогда да, и там нужна как раз предварительная блокировка, дробные категории и фиксация версий текста — то есть всё то, от чего я отговариваю на чисто российском сайте. Компромисс, который работает у нескольких проектов: лёгкая плашка для всех, а тяжёлый механизм подключается только при определении европейского посетителя. Реализуется это средствами сети доставки контента или простой проверкой на стороне сервера, и российская аудитория, которая даёт основной трафик, лишнего веса не получает.
Макарий Тулупов
Вопрос по таблице: почему свой блок в шаблоне отмечен как низкий риск сломать кэш, а лёгкий плагин как средний?
Мамелфа Скуратова
Потому что в своём блоке вы сами решаете, где проверять флаг, и делаете это в браузере. А плагин может проверять на сервере, и вы об этом узнаете, только когда плашка начнёт вести себя странно. У нас было именно так.
Марфа Голубцова
Полезно про порядок работ. У нас плашку поставили первой, а политику так и не написали. Получается, полгода изображали соблюдение требований.