Если сайт сделан как одностраничное приложение, а текст политики обработки персональных данных подставляется JavaScript-ом уже в браузере, вы попадаете в неприятную ситуацию: живой посетитель документ видит, а любой простой HTTP-клиент получает по этому адресу пустой каркас без содержания. Так работают часть поисковых роботов и средства автоматизированного мониторинга. Формально по адресу что-то есть, фактически подтвердить наличие политики нельзя — а часть 2 статьи 18.1 152-ФЗ требует обеспечить именно возможность ознакомиться с документом. Ответственность идёт по части 3 статьи 13.11 КоАП РФ: для юридических лиц 30 000–60 000 ₽, наш сканер показывает как потолок 60 000 ₽. Хорошая новость в том, что чинится это точечно: переделывать сайт целиком не нужно, достаточно вынести одну страницу. Разбираем, в чём именно разница между тем, что видит браузер и что видит программа, как проверить свой сайт за минуту и какие есть варианты решения.

Проверьте, видна ли ваша политика простому HTTP-клиенту — бесплатно


Что происходит технически

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

Теперь посмотрите на то же самое глазами программы, которая просто запрашивает адрес и читает ответ. Она получает каркас. Скрипты она не выполняет — либо потому, что не умеет, либо потому, что это дорого делать в массовом обходе. В её представлении по адресу политики нет ни слова про обработку персональных данных.

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

Почему это риск, даже если посетители всё видят

Часть 2 статьи 18.1 152-ФЗ говорит о неограниченном доступе к документу. Спорить о том, обеспечен ли доступ, когда текст появляется только после выполнения скриптов в конкретном браузере, — заведомо неудобная позиция: доказывать придётся вам, а исходное впечатление проверяющей стороны будет «политики по ссылке нет».

Есть и вторая, более приземлённая сторона. Ровно та же механика ломает индексацию: страница, у которой в исходном HTML нет текста, попадает в поисковую выдачу хуже. Наконец, за этой же проблемой обычно тянутся соседние — если политика собирается на клиенте, то и текст согласия рядом с формой, и ссылка на политику из чекбокса нередко существуют только после выполнения скриптов. Как автоматизированная проверка вообще смотрит на сайт, разобрано в материале «Как бот РКН сканирует сайты».

Норма и сумма

Это тот же состав, что и при полностью недоступной странице политики, и та же квалификация, что при её отсутствии. Разница только в причине: там страница сломана, здесь — отдаётся без содержания.

Как проверить свой сайт за минуту

  1. Откройте страницу политики в браузере.
  2. Нажмите Ctrl+U (или выберите в меню «Просмотр кода страницы» / «View page source»). Важно: не «Инспектор» и не «Просмотреть элемент» — они показывают уже собранную браузером страницу и всегда выглядят нормально. Нужен именно исходный код ответа сервера.
  3. В открывшемся окне нажмите Ctrl+F и поищите характерную фразу из своей политики: «персональных данных», «оператор», название вашей компании.
  4. Нашли — содержание отдаётся сервером, всё в порядке.
  5. Не нашли, а сам код состоит из пары десятков строк и списка подключаемых скриптов — текст подставляется на стороне браузера, и проблема подтверждена.

Дополнительная проверка для тех, кто дружит с командной строкой: запросите адрес политики любым консольным HTTP-клиентом и посмотрите тело ответа. Результат должен быть тем же самым — текст политики виден в ответе.

Как исправить, не переделывая сайт

Вариант 1 — статическая HTML-страница. Самый простой и надёжный: положите политику отдельным HTML-файлом по адресу вроде /privacy.html или /politika-obrabotki-pdn.html и ведите ссылку из футера на него. Приложение при этом не трогается вообще. Для документа, который меняется раз в год, отдельная статическая страница — вполне нормальное решение, а не костыль.

Вариант 2 — серверный рендеринг для одного маршрута. Современные фреймворки позволяют включить отдачу готового HTML для отдельных страниц, не меняя режим работы остального приложения. Если такая возможность в вашем стеке есть, включите её для маршрута политики: результат — сервер отдаёт страницу с текстом сразу.

Вариант 3 — предварительная генерация. Страница собирается один раз на этапе сборки и дальше отдаётся как обычный статический файл. Подходит документам, которые почти не меняются, — политика как раз такой.

Что бы вы ни выбрали, проверка результата одинаковая: откройте исходный код страницы и найдите в нём текст политики. Пока текст там не появился, задача не решена, как бы аккуратно ни выглядела страница в браузере.

Что заодно стоит проверить на SPA

Короткий итог

Проблема не в фреймворке и не в качестве вашего сайта, а в том, что содержание доезжает не до всех. Одна страница, вынесенная в статический HTML или отданная с серверным рендерингом, снимает риск по части 2 статьи 18.1 152-ФЗ, попутно улучшает индексацию и стоит несколько часов работы разработчика. Проверить результат можно самому за минуту — просмотром исходного кода страницы.