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)
This commit is contained in:
neo committed 2026-06-10 00:49:07 +05:00
1 parent 7fb417dad5
commit b9db935389
24 files changed
+1725 -286

No files matched your search

+20 -7
View File
@@ -4,22 +4,35 @@ from scanner.checks.privacy_link import PrivacyLinkCheck
from scanner.checks.form_checkbox import FormCheckboxCheck
from scanner.checks.server_location import ServerLocationCheck
from scanner.checks.external_scripts import ExternalScriptsCheck
from scanner.checks.consent_doc import ConsentDocCheck
from scanner.checks.operator_info import OperatorInfoCheck
from scanner.checks.cookie_audit import CookieAuditCheck
from scanner.checks.llm_policy import LLMPolicyCheck
# Реестр всех проверок — новые проверки автоматически регистрируются здесь
# Реестр всех проверок
ALL_CHECKS: dict[str, type[BaseCheck]] = {
"cookie_banner": CookieBannerCheck,
"cookie_audit": CookieAuditCheck,
"privacy_link": PrivacyLinkCheck,
"form_checkbox": FormCheckboxCheck,
"server_location": ServerLocationCheck,
"external_scripts": ExternalScriptsCheck,
"consent_doc": ConsentDocCheck,
"operator_info": OperatorInfoCheck,
"llm_policy": LLMPolicyCheck, # Опциональный, запускается отдельно
}
QUICK_CHECKS = [
"cookie_audit", "privacy_link", "form_checkbox",
"server_location", "external_scripts",
"consent_doc", "operator_info",
]
"""Быстрые проверки без LLM — запускаются по умолчанию."""
__all__ = [
"BaseCheck",
"CookieBannerCheck",
"PrivacyLinkCheck",
"FormCheckboxCheck",
"ServerLocationCheck",
"ExternalScriptsCheck",
"ALL_CHECKS",
"CookieBannerCheck", "PrivacyLinkCheck", "FormCheckboxCheck",
"ServerLocationCheck", "ExternalScriptsCheck",
"ConsentDocCheck", "OperatorInfoCheck", "LLMPolicyCheck",
"ALL_CHECKS", "QUICK_CHECKS",
]