Files
neo b9db935389 v2.0: исправлены критические баги, добавлены 4 новые проверки, 4-фазный cookie-аудит, retry-логика, YAML-словари, LLM-анализ, тесты
Исправлено:
- engine: _calculate_score() при ошибке загрузки (score не 100 для мёртвых сайтов)
- privacy_link: замена page.goto() на aiohttp (гонка данных)
- form_checkbox: 3-уровневый поиск label + dark-pattern detection
- server_location: синхронный urllib → aiohttp
- api/server: перепутанные request/response модели в batch
- main.py: csv --checks флаг
- engine: фазовая модель (cookie_audit отдельно, остальные параллельно)
- engine: retry-логика (3 попытки, exponential backoff)
- PDF: emoji заменены на текст (WeasyPrint)

Добавлено:
- consent_doc: проверка отдельного согласия на обработку ПД
- operator_info: проверка ИНН/ОГРН/DPO (читает главную + политику)
- cookie_audit: 4-фазный аудит (load→detect→reject→compare)
- llm_policy: опциональный LLM-анализ 16 разделов (--deep)
- external_scripts: YAML-словари trackers.yaml (critical/warning/russian)
- logging (output.py), .gitignore, pyproject.toml
- smoke-тесты (16/16)
2026-06-10 00:49:07 +05:00

20 KiB
Raw Permalink Blame History

152-ФЗ Scanner: Стратегия эффективного compliance-сервиса

Исследование проведено 10.06.2026. Проанализированы: 13 российских конкурентов, 4 международных open-source сканера, 5 чек-листов 152-ФЗ, технические best practices.


1. Рыночный контекст: почему сейчас

1.1. Ужесточение законодательства

Дата Изменение
30.05.2025 Штрафы ×10-20. Оборотные штрафы до 3% выручки, до 500 млн ₽
01.07.2025 Запрет сбора ПД на зарубежных серверах — GA, reCAPTCHA, Google Fonts
01.09.2025 Согласие — отдельный документ. Нельзя включать в оферту
11.12.2024 Ст. 272.1 УК РФ — уголовная ответственность до 10 лет
2026 РКН: проактивный ИИ-мониторинг 24/7, 84% нарушений — автофиксация

Ключевое: РКН перешёл от реактивной модели (жалобы) к проактивной (ИИ-мониторинг). 1000+ сайтов ежедневно. 83% проверенных сайтов имеют нарушения [1].

1.2. Размер рынка

  • Каждый сайт с формой/аналитикой/cookies — оператор ПД
  • Это 99% коммерческих сайтов в РФ
  • Только отелей в Уфе: 50+ (протестировано в рамках 152-fz-scanner)
  • Всего юрлиц в РФ: ~3 млн. Сайтов у них: ~500K+

2. Конкурентный анализ

2.1. Российские сканеры

Сервис Проверок Цена Фишки Слабые места
Toolfox.ru 134 (11 законов) Бесплатно AI (Claude), PDF, баллы, ФЗ-53 Закрытый, нет API
scanetika.ru 38+ Подписка Мониторинг, 200K+ сайтов, B2B Нет self-hosted
EdLegal 21 freemium AI-анализ политики, расчёт штрафов Мало проверок
152-audit.ru ~15 Бесплатно Быстро, 3 мин Базовый
help152.ru 30+ законов Бесплатно Широкий охват Слабый UI
audit-pd.ru 15+ Бесплатно 30 сек Базовый
proverito.ru 16 Бесплатно Нейросеть, PDF Мало проверок
fzscan.ru ~10 Бесплатно 152 + 168 Слабый
reactortech.ru ~15 Платно Скриншоты, конкретика Дорого
nima-labs.ru ~12 Платно Генератор документов Не сканер

2.2. Международные open-source (GDPR)

Проект Правил Технологии Что можно заимствовать
ComplyTest [2] 70 (GDPR+WCAG+Security+DSA) Node.js, Playwright, npx CI/CD, SARIF, multi-format
gdpr-cookie-scanner [3] 4D scoring CLI, Playwright, Docker 4-фазный скан, dark patterns
GDPR Scanner ~10 Python/Flask Dashboard, scheduled scans
EDPB Tool ~20 EU official Методология аудита
LawCheck (РФ) [4] 152-ФЗ FastAPI+Playwright+PostgreSQL+Redis+RQ Архитектура, очереди

2.3. Ниши без конкуренции

  1. API-first сканер — все конкуренты form-based. Никто не даёт REST API для интеграции
  2. Self-hosted / on-premise — LawCheck open-source, но без мониторинга и PDF
  3. White-label для агентств — scanetika имеет B2B, но без white-label
  4. Пакетные проверки для хостингов/регистраторов — не покрыто
  5. CI/CD интеграция — для devops-команд (как ComplyTest, но для 152-ФЗ)

3. Полный список проверок для эффективного сканера

На основе синтеза чек-листов Reova (37 пунктов) [1], Proverito (16), EdLegal (21), Toolfox (134 включая смежные законы), LawCheck и международных best practices.

3.1. Категория A: Политика конфиденциальности (8 проверок)

# Проверка Метод Риск
A1 Наличие страницы политики Playwright: поиск ссылки → проверка 200 OK HIGH
A2 Доступность без авторизации Проверка HTTP-статуса (не 401/403) CRITICAL
A3 Отдельная HTML-страница (не PDF) Content-Type != application/pdf HIGH
A4 Ссылка в футере каждой страницы DOM-анализ footer > a[href] HIGH
A5 Ссылка рядом с каждой формой Поиск → соседний с политикой HIGH
A6 16 обязательных разделов (LLM) LLM-анализ текста политики: цели, категории, сроки, права, DPO, etc. MEDIUM
A7 Дата последнего обновления Regex: дата в формате DD.MM.YYYY MEDIUM
A8 Реквизиты оператора (ИНН, адрес) Regex ИНН (10/12 цифр) + сверка с ЕГРЮЛ CRITICAL
# Проверка Метод Риск
B1 Наличие баннера CSS-селекторы + текстовые паттерны HIGH
B2 Баннер до установки tracking-cookies 4-фазный метод (gdpr-cookie-scanner): загрузить без действий → посмотреть cookies CRITICAL
B3 Кнопка «Отказаться» (не только «Принять») Dark-pattern detection: асимметрия кнопок CRITICAL
B4 Отказ отключает tracking-cookies Фаза 3: нажать «Отказ» → проверить cookies CRITICAL
B5 Ссылка на политику в баннере Поиск внутри cookie-баннера MEDIUM

3.3. Категория C: Формы и чекбоксы (5 проверок)

# Проверка Метод Риск
C1 Чекбокс в каждой форме Поиск → input[type=checkbox] CRITICAL
C2 Чекбокс НЕ предзаполнен checked=false (dark pattern detection) CRITICAL
C3 Текст согласия содержит обязательные элементы Regex: «согласие», «обработка», «персональные данные» + ссылка на политику CRITICAL
C4 Форма передаётся по HTTPS Проверка form[action] → HTTPS HIGH
C5 Минимизация полей (только необходимые) Подсчёт полей → оценка избыточности MEDIUM

3.4. Категория D: Сервер и инфраструктура (4 проверки)

# Проверка Метод Риск
D1 Сервер в РФ GeoIP: ip-api.com + ipapi.co (fallback) CRITICAL
D2 HTTPS / валидный SSL Проверка сертификата (expiry, issuer) CRITICAL
D3 HSTS-заголовок HTTP-ответ: Strict-Transport-Security HIGH
D4 CSP / X-Frame-Options HTTP-заголовки безопасности MEDIUM

3.5. Категория E: Внешние скрипты и трекеры (7 проверок)

# Проверка Метод Риск
E1 Google Analytics (запрещён) Regex HTML: google-analytics.com CRITICAL
E2 Meta Pixel (запрещён) Regex HTML: facebook.com/tr, connect.facebook.net CRITICAL
E3 Google reCAPTCHA (запрещена) Regex: google.com/recaptcha HIGH
E4 Google Fonts CDN (IP утечка) Regex: fonts.googleapis.com HIGH
E5 Яндекс.Метрика (допустима) Regex: mc.yandex.ru INFO
E6 VK Pixel (допустим) Regex: vk.com/rtrg INFO
E7 Прочие зарубежные трекеры Словарь: Hotjar, Mixpanel, Amplitude, Segment, Clarity, etc. HIGH

3.6. Категория F: Права субъекта (3 проверки)

# Проверка Метод Риск
F1 Механизм отзыва согласия LLM: поиск в политике «отозвать согласие», «отказаться» HIGH
F2 Порядок удаления данных LLM: поиск «удалить», «уничтожить», email/форма для запроса HIGH
F3 Контакты DPO (Data Protection Officer) Regex: email/телефон + контекст «ответственный за ПД» MEDIUM

3.7. Категория G: Смежные законы (4 проверки)

# Проверка Метод Риск
G1 Англицизмы в CTA (ФЗ-53) Словарь «красных» слов: sale, click here, buy now, etc. MEDIUM
G2 Возрастная маркировка (436-ФЗ) Поиск меток 0+/6+/12+/16+/18+ MEDIUM
G3 Реквизиты юрлица (ИНН/ОГРН) Regex + сверка с ЕГРЮЛ MEDIUM
G4 Маркировка рекламы erid (ОРД) Поиск erid в HTML LOW

Итого: 36 проверок в 7 категориях — покрытие основных требований 152-ФЗ + смежных законов.


4. Архитектура эффективного сканера

Фаза 1: LOAD — загрузка без взаимодействия
  → Сохранить ВСЕ cookies и network requests ДО consent
  → Это baseline: что сайт ставит без согласия

Фаза 2: DETECT — поиск consent-механизма
  → CMP-селекторы → DOM-эвристики
  → Извлечь кнопки с visual properties (размер, цвет)
  → Dark-pattern detection: асимметрия, скрытая кнопка отказа

Фаза 3: REJECT — отказ и capture
  → Нажать «Отказаться»
  → Сравнить cookies с baseline
  → Что осталось после отказа? → нарушение

Фаза 4: ACCEPT — чистый браузер, принять
  → Новый контекст (нет cookies)
  → Принять согласие
  → Дельта cookies = что consent реально меняет

Это принципиально сильнее текущего подхода (просто поиск элемента на странице).

4.2. Архитектура правил (Rule Engine)

По образцу LawCheck [4] — YAML-словари вместо хардкода:

# dictionaries/trackers.yaml
foreign_critical:
  - domain: google-analytics.com
    law: "152-ФЗ ст. 18 ч. 5"
    fine: "до 6 млн ₽"
    action: "Удалить, заменить на Yandex Metrica"
  - domain: facebook.com/tr
    law: "152-ФЗ ст. 12"
    fine: "до 6 млн ₽"
    action: "Удалить, заменить на VK Pixel"

foreign_warning:
  - domain: fonts.googleapis.com
    law: "152-ФЗ (IP-утечка)"
    fine: "до 300 тыс ₽"
    action: "Скачать и раздавать self-hosted"

russian_allowed:
  - domain: mc.yandex.ru
  - domain: vk.com/rtrg

Преимущества:

  • Обновление правил без перекомпиляции
  • Не-разработчики могут добавлять трекеры
  • Аудит изменений через Git

4.3. Модульная архитектура

152-fz-scanner/
├── main.py                    # CLI (scan, csv, server)
├── scanner/
│   ├── engine.py              # Оркестратор: 4-фазный скан + asyncio.gather
│   ├── models.py              # Pydantic: CheckResult, SiteScan, Score
│   ├── rules_engine.py        # YAML-движок: загрузка словарей, выполнение правил
│   └── checks/
│       ├── base.py            # Abstract BaseCheck
│       ├── consent/           # B-проверки (cookie + consent)
│       │   ├── banner.py
│       │   └── dark_patterns.py
│       ├── forms/             # C-проверки
│       │   ├── checkbox.py
│       │   └── fields.py
│       ├── infrastructure/    # D-проверки
│       │   ├── server.py
│       │   └── headers.py
│       ├── policy/            # A-проверки
│       │   ├── presence.py
│       │   └── llm_analysis.py
│       ├── trackers/          # E-проверки
│       │   └── scripts.py
│       └── rights/            # F-проверки
│           └── subject.py
├── dictionaries/              # YAML-словари (правила без кода)
│   ├── trackers.yaml
│   ├── cookie_patterns.yaml
│   ├── consent_texts.yaml
│   └── anglicisms.yaml        # Для ФЗ-53
├── api/
│   ├── server.py              # FastAPI
│   ├── routes.py
│   └── schemas.py
├── reports/
│   ├── generator.py           # PDF + HTML + JSON
│   └── templates/
│       ├── report.html.j2     # Для сайта
│       └── batch_report.html.j2  # Сводка для агентства
├── workers/                   # Очередь для batch
│   └── queue.py               # RQ/ARQ воркеры
├── tests/
│   ├── test_checks/
│   └── fixtures/
└── data/
    ├── input/                 # CSV с URL
    └── output/                # JSON + PDF

4.4. Технологический стек

Компонент Технология Почему
Браузерная автоматизация Playwright (Python) Стандарт индустрии: ComplyTest, LawCheck, gdpr-cookie-scanner
API FastAPI + Pydantic v2 Быстрый, async, авто-документация
Очередь (batch) ARQ (async) или RQ LawCheck использует RQ; ARQ — более современный async
PDF WeasyPrint + Jinja2 Уже работает; альтернатива — Playwright PDF
LLM-анализ Qwen35B / Gemma4 (локально) Анализ политики: 16 разделов, права субъекта
GeoIP ip-api.com + ipapi.co (fallback) Бесплатные API
Хранение SQLite (MVP) → PostgreSQL (prod) LawCheck: SQLite в dev, PG в prod
CI/CD GitHub Actions + SARIF Формат от ComplyTest — стандарт для security tools

5. Ключевые дифференциаторы

5.1. Что делает сервис уникальным

  1. 4-фазный cookie-аудит — никто в РФ не делает. Все проверяют только «наличие баннера»
  2. Dark-pattern detection — асимметрия кнопок, скрытый отказ, предзаполненные чекбоксы
  3. LLM-анализ политики — 16 разделов, а не просто «есть/нет»
  4. API-first — REST API для интеграции (агентства, хостинги, CRM)
  5. Batch + white-label PDF — пакетная проверка 100+ сайтов с брендированными отчётами
  6. CI/CD интеграция — GitHub Actions, GitLab CI, выход с exit code 1 при CRITICAL
  7. Self-hosted — можно развернуть на своём сервере (конфиденциальность данных клиента)

5.2. Модели монетизации

Модель Цена ЦА
Pay-per-scan 500-1500 ₽/сайт Разовые проверки
Подписка (мониторинг) 3000-15000 ₽/мес Агентства, крупные сайты
White-label 30 000-100 000 ₽/мес Агентства (ресейл)
On-premise лицензия 150 000-500 000 ₽/год Корпорации, банки
API (pay-per-request) 50-200 ₽/скан Интеграции

6. Дорожная карта

Фаза 1: Исправить критические баги (сейчас)

  • Аудит проведён
  • engine.py — _calculate_score() при ошибке загрузки
  • privacy_link.py — убрать page.goto(), проверять через aiohttp
  • form_checkbox.py — переписать детекцию label
  • server_location.py — заменить urllib на aiohttp

Фаза 2: Довести до production-quality (1-2 недели)

  • 4-фазный cookie-аудит (замена текущего cookie_banner.py)
  • YAML-словари для трекеров
  • Dark-pattern detection
  • LLM-анализ политики (16 разделов)
  • API с rate limiting и авторизацией
  • CI/CD mode (exit codes, SARIF)

Фаза 3: B2B-фичи (2-4 недели)

  • Batch-мониторинг (очередь + уведомления)
  • White-label PDF
  • Подписки и биллинг
  • Личный кабинет

Фаза 4: Экспансия (1-2 месяца)

  • On-premise поставка (Docker)
  • Интеграции: GitHub App, GitLab, Bitrix24
  • API-ключи для партнёров

7. Почему это будет работать

  1. Рынок растёт — РКН перешёл на проактивный мониторинг. Каждый сайт под угрозой
  2. Конкуренты слабые — form-based, без API, без deep checks. Никто не делает 4-фазный cookie-аудит
  3. Штрафы пугающие — до 500 млн ₽. Стоимость проверки 500-1500 ₽ — копейки по сравнению
  4. Техническое преимущество — Playwright 4-фазный + LLM + YAML-правила = лучшая архитектура
  5. Модель с низким порогом входа — pay-per-scan без подписки

Источники

[1] Reova — «Персональные данные на сайте: чек-лист из 37 пунктов (2026)» — https://www.reova.ru/blog/personalnye-dannye-na-sajte.html [2] ComplyTest — Open-source GDPR/WCAG/Security scanner (70 правил) — https://complytest.com/ [3] gdpr-cookie-scanner — Open-source CLI, 4-фазный cookie-аудит — https://gdpr.slashgear.dev/ [4] LawCheck — Open-source 152-ФЗ сканер (FastAPI+Playwright+RQ) — https://github.com/lawcheck/lawcheck [5] Toolfox — 134 проверки по 11 законам — https://toolfox.ru/tools/proverka-sajta-fz-152 [6] Сканэтика — 38+ критериев, мониторинг — https://scanetika.ru/ [7] EdLegal — AI-анализ политики, расчёт штрафов — https://edlegal.ru/help/scanner-152fz-guide/ [8] Proverito — Чек-лист 152-ФЗ (16 пунктов) — https://proverito.ru/chek-list-152-fz [9] EDPB Website Auditing Tool — EU official — https://www.edpb.europa.eu/our-work-tools/our-documents/support-pool-experts-projects/edpb-website-auditing-tool_en