Технический аудит · 08.09.2026

tallinn.ee

Официальный портал города Таллинна

Официальный портал города Таллинна — один замер страницы района, 216 запросов, 19 узлов, около восьмидесяти секунд. Механизма управления согласием на странице нет вовсе, а аналитика Google идёт даже без режима согласия (gcs=-). При загрузке, без какого-либо выбора, срабатывают Facebook / Meta Pixel (PageView доставлен в Meta), GA4, реклама Google DoubleClick через встроенный ролик и аналитический маяк Cloudflare; отдельно из разметки загружается и инициализируется инструмент записи сессий Mouseflow. Всё это при том, что политика защиты данных прямо обещает: сторонний контент — только после согласия, а без согласия данные не обрабатываются. Заголовки безопасности выставлены строго, но к согласию это отношения не имеет.

Хронология обращений

+0 мс · загрузка страницы района
Отдача через Cloudflare. Заголовки безопасности выставлены строго: Content-Security-Policy (default-src 'self' с точечным белым списком), HSTS, X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff. Платформы управления согласием на странице нет.
+165…+166 мс · контейнер тегов и запись сессий из разметки
Прямо из разметки почти одновременно стартуют www.googletagmanager.com/gtm.js и cdn.mouseflow.com/projects/730378e1-… — инструмент записи сессий Mouseflow. Никакого условия согласия перед ними нет.
+201 мс · встроенный ролик YouTube
www.youtube.com — встроенный ролик начинает загрузку; позже он проигрывается (стрим с googlevideo.com), и его плеер подтягивает Google DoubleClick.
+375…+719 мс · Facebook / Meta Pixel
connect.facebook.net/fbevents.js (подтянут контейнером GTM) и signals/config, затем www.facebook.com/tr на +719 мс — событие PageView пикселя 1368983323488812, ответ 200.
+911…+927 мс · DoubleClick через YouTube
googleads.g.doubleclick.net и static.doubleclick.net — обращения, инициированные плеером встроенного ролика YouTube.
+1059 мс · Cloudflare Web Analytics
static.cloudflareinsights.com/beacon.min.js — аналитический маяк, из разметки страницы.
+5589 мс · GA4 page_view
region1.analytics.google.com/g/collect — событие page_view, счётчик G-XPFT2B0539, gcs=-. Адрес и заголовок страницы уходят в Google.

Декларация против факта

✓ Контролёр — учреждения города Таллинна (Tallinna linna asutused); условия защиты данных (Andmekaitsetingimused) — заявлен
✓ Google Analytics используется для обзора посещаемости; Google сохраняет адрес IP и данные об использовании сайта — заявлен
✓ Сторонний встраиваемый контент (Internet Archive, Google Maps, Twitter, Microsoft, Facebook, Google, LinkedIn, Livestream) — для его показа нужно сначала согласиться с условиями этих третьих сторон — заявлен
✓ «Если Вы не даёте согласие или отзываете его, мы не обрабатываем Ваши персональные данные» — заявлен
✓ Удаление cookie — через настройки браузера (aboutcookies.org) — заявлен
✓ Надзорный орган — Andmekaitse Inspektsioon — заявлен
+ Mouseflow — инструмент записи сессий; загружается и инициализируется без согласия, в политике не назван — не заявлен
+ Cloudflare Web Analytics — аналитический маяк, в политике не назван — не заявлен
+ То, что Facebook присутствует как трекинговый пиксель (PageView при загрузке), а не как контент, открываемый по согласию — не заявлен
+ То, что аналитика и рекламные обращения уходят без какого-либо механизма согласия (gcs=-) — не заявлен

Тайминги передачи

+166 мс cdn.mouseflow.com

Скрипт проекта 730378e1-…, из разметки; инициализирует запись. В политике не назван. Выгрузка записи в окне замера не наблюдается.

+719 мс www.facebook.com

PageView, пиксель 1368983323488812, GET /tr, ответ 200. Без согласия.

+911 мс googleads.g.doubleclick.net

Подтянут плеером встроенного ролика YouTube.

+1059 мс static.cloudflareinsights.com

Аналитический маяк из разметки. В политике не назван.

+5589 мс region1.analytics.google.com

GA4 page_view, G-XPFT2B0539, gcs=- (режим согласия не настроен).

Зафиксированные трекеры

Признаки несоответствия GDPR

Контекст

tallinn.ee — официальный портал города Таллинна; ответственный обработчик — учреждения города Таллинна (Tallinna linna asutused). Сайт отдаётся через Cloudflare и держит строгую планку заголовков: Content-Security-Policy (default-src 'self' с точечным белым списком), HSTS, X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff.

Замер — одна запись страницы района (/et/peterburitee): 216 запросов, 19 узлов, около восьмидесяти секунд, съёмка 8 сентября 2026 года. По ходу сеанса на странице проигрывается встроенный ролик YouTube. Обработку описывают условия защиты данных города («Политика и куки»).

Кому уходят данные напрямую

Google (Analytics, DoubleClick через YouTube), Meta (Facebook Pixel), Mouseflow (запись сессий), Cloudflare (аналитический маяк). Функционально — reCAPTCHA и Google Fonts.

Заявленное против фактического

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

Первое — согласия не запрашивают вовсе. За 216 запросов в записи нет ни платформы управления согласием, ни сценария с признаками баннера. Более того, аналитика Google работает даже без режима согласия: событие page_view GA4 уходит со статусом gcs=-, то есть Consent Mode не сконфигурирован. При обычной загрузке страницы, без какого-либо выбора пользователя, срабатывают и передают данные Facebook / Meta Pixel (PageView, пиксель 1368983323488812, ответ 200), GA4 (G-XPFT2B0539), Google DoubleClick (через плеер встроенного ролика) и аналитический маяк Cloudflare. Отдельно на +166 мс прямо из разметки загружается и инициализируется инструмент записи сессий Mouseflow.

Второе — политика заявляет ровно обратное. Условия защиты данных прямо говорят, что сторонний встраиваемый контент — Google Maps, Twitter, Microsoft, Facebook, Google, LinkedIn, Livestream — показывается только после того, как посетитель согласится с условиями этих третьих сторон («peate kõigepealt nõustuma»). И отдельно: «если Вы не даёте согласие или отзываете его, мы не обрабатываем Ваши персональные данные». Фактически же данные уходят в Google, Meta и Cloudflare до и без какого-либо согласия. Обещанная моделью политики связка «сначала согласие — иначе не обрабатываем» на странице не реализована.

Третье — запись сессий и часть получателей не раскрыты. Mouseflow — это инструмент записи сессий и тепловых карт; на муниципальном портале он загружается без согласия и в политике не упомянут ни разу. Аналитический маяк Cloudflare также не назван. Facebook в политике фигурирует лишь как встраиваемый контент, доступ к которому открывается по согласию, — тогда как в записи он работает как трекинговый пиксель, отправляющий PageView при загрузке страницы.

Заголовки безопасности при этом выставлены строго — сайт защитил транспорт и содержимое, но вопрос согласия оставил незакрытым. Для портала органа исполнительной власти, от которого ожидается образцовый стандарт, это расхождение особенно заметно.

Согласие: что доказано и что нет

Доказано: механизма согласия на странице нет. Ни одного обращения к платформе управления согласием, ни одного сценария с признаками баннера за 216 запросов. GA4 идёт со статусом gcs=- — режим согласия Google не настроен.

Доказано: трекеры передают данные при загрузке. Facebook /tr уходит на +719 мс (PageView, ответ 200); GA4 page_view — на +5589 мс; DoubleClick — на +911 мс через плеер YouTube; маяк Cloudflare — на +1059 мс. Все без какого-либо выбора согласия.

Доказано: инструмент записи сессий загружен и инициализирован. Скрипт Mouseflow (проект 730378e1-…) подгружается на +166 мс прямо из разметки страницы.

Не доказано и явно оговаривается: выгрузка записи Mouseflow. В окне замера (около восьмидесяти секунд) отдельного обращения с выгрузкой записанной сессии в Mouseflow не наблюдается — зафиксирована загрузка и инициализация записывающего скрипта, но не сам факт отправки записи. Вывод касается развёртывания инструмента без согласия, а не подтверждённой передачи записи.

Границы наблюдения

Замер охватывает одну страницу — карточку района — и фиксирует поведение браузера, не внутреннюю кухню сервисов: серверная обработка, настройка контейнера тегов и договоры с получателями браузерным замером не проверяются. Скрипт Mouseflow в записи отдан с кэша (ответ 304); что именно он передаёт и когда, по этому файлу за пределами факта загрузки и инициализации не устанавливается. Обращения к DoubleClick отнесены к встроенному плееру YouTube по инициатору (ytembeds). reCAPTCHA и Google Fonts отнесены к функциональной части.

Файл опубликован очищенным от личных данных: удалены значения куки в запросах. Заголовки ответов, статусы, порядок загрузки и инициаторы сохранены, поэтому отсутствие механизма согласия, статус gcs=- у GA4 и доставка пикселя Facebook проверяются по опубликованному файлу напрямую.

Правовую оценку выносит компетентный орган — Andmekaitse Inspektsioon.

Вывод

Официальный портал города Таллинна тщательно защитил транспорт и содержимое — строгая политика безопасности контента, HSTS, nosniff, — но вопрос согласия оставил открытым полностью. Механизма управления согласием на странице нет, а аналитика Google идёт даже без режима согласия (gcs=-). При обычной загрузке, без какого-либо выбора пользователя, Facebook / Meta Pixel отправляет PageView в Meta, GA4 — событие в Google, встроенный ролик YouTube подтягивает рекламу Google DoubleClick, а из разметки загружается и инициализируется инструмент записи сессий Mouseflow. Аналитический маяк Cloudflare уходит там же.

Собственная политика защиты данных при этом обещает прямо противоположное: сторонний контент — только после согласия, а без согласия персональные данные не обрабатываются. Инструмент записи сессий Mouseflow и аналитический маяк Cloudflare в политике не названы вовсе, а Facebook описан как контент, открываемый по согласию, — тогда как работает он как пиксель при загрузке. Для сайта органа исполнительной власти, от которого ожидается образцовый стандарт, разрыв между обещанным и фактическим здесь принципиальный.

Устранение: внедрить механизм управления согласием и обусловить им загрузку и срабатывание всех статистических и рекламных компонентов — GA4, пикселя Facebook, Mouseflow, встроенных роликов YouTube с рекламой DoubleClick и маяка Cloudflare — так, чтобы до согласия ни одно из этих обращений не уходило; настроить режим согласия Google (сейчас gcs=-); назвать в политике защиты данных инструмент записи сессий Mouseflow и аналитику Cloudflare как получателей с указанием цели и основания; привести описание Facebook в соответствие с его фактической ролью (трекинговый пиксель, а не контент по согласию).

Доказательство

Как проверить: скачайте файл и посчитайте его контрольную сумму — sha256sum файл.har (Linux, macOS) или certutil -hashfile файл.har SHA256 (Windows); она должна совпасть с указанной. Вывод разбора относится к объёму этого замера — см. ограничения методики.

Оригинал (разбор)
HAR-файл: ee/tallinn-ee-2026-09-08.har
SHA-256: 4e994d8446f981f2673c2d30b9dd903664a09882b3dbb53b456b51c278702b44
Контрольный снимок
Ждём изменений
HAR-файлы хранятся в EU-инфраструктуре (Proton Drive). SHA-256 публикуется для проверки целостности.