"""DomClick-specific exceptions для anti-bot detection."""


class DomClickBlockedError(Exception):
    """DomClick BFF вернул QRATOR block-страницу (HTTP 200 + block HTML).

    QRATOR (qrator.net) — WAF/DDoS-защита domclick.ru. Блокирует datacenter-IP
    и возвращает HTML с маркерами: "qrator", "bot_mitigation", "система защиты",
    "403 | домклик", "captcha", "access denied".

    Обходится через shared mobile proxy (BrowserFetcher(source="domclick") →
    generic provider → мобильный egress).
    """


class DomClickParseError(Exception):
    """DomClick detail-карточка получена (HTTP 200, не block), но SSR-стейт
    не извлекается / не парсится.

    Возникает в Layer B (domclick_detail.py) когда:
    - `window.__SSR_STATE__` не найден в HTML (но это и не challenge-страница);
    - object-литерал не сбалансирован по скобкам;
    - json.loads падает после санитайза bare `undefined` → `null`.

    В отличие от DomClickBlockedError (anti-bot), это сигнал дрейфа схемы карточки
    или повреждённого ответа — оркестратор считает его parse-failure, а не блоком.
    """
