Сервис автоматической проверки сайта на соответствие закону о персональных данных. Посетитель вводит адрес — сервис сам обходит страницы, ищет нарушения и показывает отчёт с оценкой риска и суммами штрафов.
Задача
Владелец сайта обычно не знает, что именно на нём нарушает закон: формы без согласия, счётчики, ставящие cookie до согласия, шрифты и скрипты с зарубежных серверов, отсутствие политики на нужных страницах. Юридический аудит стоит дорого и не смотрит в код, а проверка вручную требует знания и норм, и вёрстки одновременно. Нужен инструмент, который проверяет сайт технически и объясняет результат на языке конкретных статей.
Что делает
- Обходит сайт headless-браузером: находит страницы через карту сайта и ссылки, открывает их как настоящий посетитель.
- Проверяет по 16 критериям: формы без согласия, cookie до согласия, трансграничная передача данных, сторонние трекеры, шрифты и библиотеки с зарубежных серверов, наличие и полнота политики, HTTPS, заголовки безопасности, наличие в реестре регулятора.
- Считает оценку соответствия и совокупный риск штрафа по действующим нормам, с разбивкой по критичности.
- Показывает превью отчёта сразу на странице, полную версию с инструкциями для разработчика отправляет на почту.
- Не требует регистрации: адрес сайта и почта — всё, что нужно.
Как устроено
- Сканер на Node.js с headless-браузером, вынесен в отдельные обработчики: обход страниц, разбор содержимого, генерация отчёта.
- Очереди с раздельными обработчиками под быструю и полную проверку, чтобы длинные обходы не блокировали короткие.
- Прогресс сканирования отдаётся на страницу потоком событий, с переходом на опрос состояния при обрыве соединения.
- PostgreSQL как хранилище, Redis для очередей, миграции с версионированием норм и штрафов — суммы меняются, а отчёты должны оставаться воспроизводимыми.
- Фронтенд на Next.js и React, панель администратора вынесена на отдельный домен и закрыта на уровне сервера.
- Данные хранятся на серверах в России.
Стек
Node.js, Next.js, React, PostgreSQL, Redis, headless-браузер, очереди, Docker.
О демонстрации
Открыты две части: публичная страница проверки и панель администратора.
В публичной части адрес сайта уже подставлен — достаточно запустить проверку. Сканирование имитируется с задержками, как при настоящем обходе, затем показывается готовый отчёт. Никакие сайты не проверяются, письма не отправляются, данные не сохраняются.
В панели администратора видны воронка заявок, список проверок, заказы и справочник критериев. Все записи вымышленные.