Перейти к основному содержимому

CAPTCHA и бот-стены (ChallengeGate)

Когда сайт показывает Cloudflare «Just a moment…», reCAPTCHA, hCaptcha, Turnstile или подобное, VibeOS не должен спамить кликами или выдумывать содержимое страницы. Загрузите встроенный навык challenge-gate и следуйте уровням L0→L4.

Это не руководство по взлому безопасности сайтов. Путь продукта таков: обнаружить → избежать → одна опциональная помощь провайдера → вы решаете в живом браузере → продолжить или продолжить с частичным кратким отчётом.

Быстрый путь (операторы)​

# Готовность включает ChallengeGate + опциональный Browserbase
vibeos research doctor

# Заполнить пустые web.* и отсутствующие значения по умолчанию browser.challenge.*
vibeos research preset research-pro --apply

# Глубокий пакет: чеклист ChallengeGate + cloud_provider Browserbase + заметка scrapling
vibeos research preset research-deep --apply

# Офлайн-проверка (без живой CAPTCHA)
scripts/smoke-challenge-gate.sh

# Офлайн-демо передачи (уточнение + контракт возобновления + артефакты L4)
scripts/demo-challenge-gate-handoff.sh

# Создать рабочее пространство (включает challenge.md)
vibeos research run --topic "…" --mode brief

На десктопе: Настройки → Research Pro показывает пилюли challenge / Browserbase / CDP и то же поведение Apply.

Ручное E2E (живые мягкие/жёсткие стены, Done/Skip, возобновление CDP): см. docs/ops/challenge-gate-manual-e2e.md в вашей установке VibeOS.

Уровни (простым языком)​

УровеньЗначение
L0 Обнаружениеbrowser_navigate возвращает challenge / bot_detection_warning
L1 ИзбеганиеПредпочесть web_search / web_extract / MCP OAuth; одна мягкая повторная попытка для мягких стен
L2 ПровайдерОпционально Browserbase stealth/прокси, если настроено — один раз
L3 ЧеловекАгент запрашивает через clarify; вы решаете; ответьте готово или done
L4 ЧастичноОтметить access: blocked_by_challenge в sources.json, записать challenge.md, продолжить

Навыки, запрещающие обход (например, ru-public-sources), пропускают L2 и идут Обнаружение → опционально Человек → L4.

Что делать, когда агент спрашивает​

  1. Откройте окно живого браузера (локальный headed-браузер, Browserbase Live View или Chrome, подключённый через /browser connect / browser.cdp_url).
  2. Пройдите CAPTCHA самостоятельно (не вставляйте пароли в чат).
  3. Предпочитайте Open live browser, когда текст уточнения содержит URL Browserbase Live View (та же облачная сессия / куки). Иначе используйте ваш headed Chrome / окно CDP.
  4. Ответьте готово или done — на десктопе кнопка Solve CAPTCHA также предлагает Done, Skip page и Research Pro.
  5. Если не можете: ответьте пропустить / skip — краткий отчёт продолжается без выдумывания этой страницы.

Шаблонный текст для агентов: skills/research/challenge-gate/templates/human-handoff.md

Канбан / cron​

Долгие исследовательские задачи должны блокироваться с kind=challenge (статус остаётся blocked, исполнитель становится human) при ожидании CAPTCHA:

vibeos kanban block <task-id> --kind challenge --reason "CAPTCHA на каталоге поставщика"
# → Заблокировано … (kind=challenge, assignee=human)

Cron не должен продолжать разблокировать и повторно натыкаться на стену ночью — вместо этого доставить частичный краткий отчёт / оповещение. Рецепт: docs/ops/cron-research-challenge.md. Прерыватель цикла разблокировки эскалирует до triage, если разблокировка ↔ повторная блокировка зацикливается.

Опциональное живое только обнаружение (никогда не решает):

RUN_LIVE_CHALLENGE_DETECT=1 CHALLENGE_GATE_LIVE_URL='https://…' \
scripts/smoke-challenge-gate-live-detect.sh

# Подготовка к возобновлению через куки — оставить сессию открытой для сценария E:
CHALLENGE_GATE_KEEP_SESSION=1 RUN_LIVE_CHALLENGE_DETECT=1 \
CHALLENGE_GATE_LIVE_URL='https://…' \
scripts/smoke-challenge-gate-live-detect.sh

Чеклист оператора: docs/ops/challenge-gate-manual-e2e.md (сценарий E) и docs/ops/capability-operator-runbook.md.

Помощник логирования​

python3 skills/research/challenge-gate/scripts/append_challenge_log.py \
--path challenge.md --also-sources sources.json <<'EOF'
{"url":"https://example.com","type":"cloudflare_iuam","severity":"hard","detected_by":"title","layer_reached":"L4","resolved":"no","human_handoff":"yes","notes":"пропущено"}
EOF

На десктопе: если встроенная панель Solve CAPTCHA прокручена в сторону, плавающий баннер рядом с композером всё равно предлагает Done / Skip / Research Pro.

Конфигурация (config.yaml)​

browser:
challenge:
prefer_human: true # по умолчанию
max_auto_attempts: 1
human_timeout_seconds: 600
allow_provider_solve: true # помощь Browserbase/Firecrawl, если доступно
record_artifacts: true # записывать challenge.md в исследовательских пространствах
cdp_url: "" # опционально: подключить ваш Chrome для доверенных кук

Секреты остаются в .env: BROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID (опционально). Поведенческие настройки остаются в config.yaml.

Артефакты исследования​

ФайлРоль
challenge.mdЖурнал встреченных стен и достигнутых уровней
sources.jsonДля каждого URL access: ok | challenge | blocked_by_challenge | partial
brief.mdДолжен упоминать заблокированные источники (проверяется eval-тестом)

Связанное​

  • Навык: skills/research/challenge-gate/SKILL.md
  • Маршрутизация: choose-interaction-surface (таксономия CAPTCHA: веб vs нативный)
  • Использование компьютера: никогда не первый выбор для браузерной CAPTCHA — см. навык computer-use
  • Стек исследований: Профессиональное исследование
  • Десктоп: панель уточнения обнаруживает текст CAPTCHA → Done / Skip / Research Pro
  • Канбан: vibeos kanban block &lt;id&gt; --kind challenge …
  • Офлайн-эталонные заголовки: tests/tools/fixtures/bot_wall_titles.yaml
  • Эталонные задачи: docs/plans/challenge-gate-golden-tasks.yaml
  • Дополнение к плану: docs/plans/2026-07-17-captcha-challenge-protocol.md