Install
openclaw skills install @rekryt/skill-smartcaptchaИнтеграция и администрирование Yandex SmartCaptcha: виджет на сайте (обычный, расширенный, невидимая капча), серверная проверка токена через /validate, React (@yandex/smart-captcha), мобильные приложения (Android/iOS/Flutter через WebView), создание и настройка капчи в Yandex Cloud (консоль, CLI, Terraform, REST/gRPC API), диагностика и тарификация. Используй этот скилл всегда, когда упоминаются SmartCaptcha, «умная капча», «смарткапча», капча Яндекса, smart-token, smartcaptcha.yandexcloud.net, yandex_smartcaptcha_captcha, защита форм/логина/регистрации от ботов и спама в Yandex Cloud, стоимость или квоты SmartCaptcha, а также когда капча Яндекса не отображается или пропускает ботов — даже если слово «капча» не прозвучало, но нужна антибот-защита веб-формы или мобильного приложения.
openclaw skills install @rekryt/skill-smartcaptchaYandex SmartCaptcha — сервис Yandex Cloud для защиты сайтов и приложений от ботов. Принцип работы: виджет на странице проверяет пользователя и выдаёт одноразовый токен (живёт 5 минут) → фронтенд передаёт токен на ваш бэкенд → бэкенд обязан проверить токен POST-запросом на /validate и принять решение по полю status.
Начни с docs/overview.md — как работает сервис и как выбрать способ интеграции.
| Что | Значение |
|---|---|
| Скрипт виджета | <script src="https://smartcaptcha.yandexcloud.net/captcha.js" defer></script> |
| Проверка токена | POST https://smartcaptcha.yandexcloud.net/validate (x-www-form-urlencoded: secret, token, ip) → {"status": "ok"|"failed", "message": "...", "host": "..."} |
| Токен | Одноразовый, срок жизни 5 минут; лежит в <input type="hidden" name="smart-token"> |
| При сбое сервиса | HTTP != 200 → fail-open: пропустить пользователя, залогировать |
| Ключи | Ключ клиента (ysc1_…, публичный, для виджета) и ключ сервера (ysc2_…, секрет, только на бэкенде, env SMARTCAPTCHA_SERVER_KEY) |
| React | Пакет @yandex/smart-captcha (официальный) |
| Vue 3 | Официального пакета нет — composable на расширенном методе, см. docs/vue.md |
| Управление | REST https://smartcaptcha.api.cloud.yandex.net/smartcaptcha/v1/captchas, CLI yc smartcaptcha captcha, Terraform yandex_smartcaptcha_captcha |
| Задача | Пошаговый план | Ключевые знания |
|---|---|---|
| Создать/настроить капчу в Yandex Cloud | workflows/setup-captcha.md | docs/captcha-management.md, docs/captcha-settings.md, docs/keys.md |
| Капча на обычном сайте (HTML + бэкенд) | workflows/integrate-website.md | docs/widget-auto.md, docs/server-validation.md |
| Капча в React / SPA | workflows/integrate-react.md | docs/react.md |
| Капча во Vue 3 / Nuxt | workflows/integrate-react.md (шаги те же, код — Vue) | docs/vue.md |
| Капча в мобильном приложении | workflows/integrate-mobile.md | docs/mobile-webview.md + файл платформы |
| Капча без кнопки «Я не робот» | workflows/integrate-website.md | docs/invisible-captcha.md |
| Капча не работает / пропускает ботов | — | docs/troubleshooting.md |
| Оценить стоимость и лимиты | — | docs/pricing-limits.md |
Прочитай соответствующий файл до написания кода: имена параметров, поля ответов и шаги бери из него, а не по памяти.
Основы:
Виджет на сайте:
div.smart-captcha, data-атрибуты, скрытое поле smart-token.?render=onload, window.smartCaptcha.render(), callback, несколько виджетов, отправка токена fetch'ем, отложенная загрузка.invisible: true + execute(), уведомление об обработке данных (shieldPosition/hideShield).Серверная проверка:
/validate: параметры, разбор ответов, «решение только по status», одноразовость, fail-open, таймауты, IP за прокси.Фреймворки и платформы:
@yandex/smart-captcha: компоненты SmartCaptcha и InvisibleSmartCaptcha, props, события, сброс через key.smartcaptcha.yandexcloud.net, параметр webview.@JavascriptInterface, обычная и невидимая капча.WKScriptMessageHandler, приём токена в Swift.webview_flutter, канал jsBridge.Управление и настройка:
smart-captcha.*; метрики Monitoring; аудитные логи Audit Trails; миграция условий на host_matcher.metadata), валидация домена.Эксплуатация:
Invalid or expired Token, ограниченный режим, доступность, как тестировать капчу при разработке.status=ok, 10 000/мес бесплатно), квоты, публичные IP сервиса.Точные таблицы для сверки имён и значений:
render() и data-атрибуты (включая test, webview, invisible, hideShield, metadata).window.smartCaptcha с сигнатурами и все события subscribe с полезной нагрузкой./validate: параметры запроса, все варианты ответов с примерами JSON, свойства токена.style_json, IAM-токен, пример curl.Готовый код: копируй и адаптируй, а не пиши с нуля.
| Файл | Что это |
|---|---|
| templates/widget-auto.html | Страница с формой и автоматическим виджетом |
| templates/widget-advanced.html | Расширенный метод: отложенная загрузка, render, отправка токена fetch'ем |
| templates/invisible.html | Невидимая капча: execute() на submit, события token-expired/network-error |
| templates/webview-page.html | Страница для мобильного WebView (мосты Android NativeClient и iOS messageHandlers) |
| templates/validate.py | Проверка токена: Python (requests) |
| templates/validate.js | Проверка токена: Node.js 18+ (fetch, ESM) |
| templates/validate.php | Проверка токена: PHP (cURL) |
| templates/SmartCaptchaField.tsx | React-компонент обычной капчи (токен и сброс через ref) |
| templates/InvisibleCaptchaForm.tsx | React-форма с невидимой капчей (проверка по submit) |
| templates/useSmartCaptcha.ts | Vue 3 composable: синглтон-загрузка скрипта, lifecycle, невидимая капча как Promise |
| templates/smartcaptcha.d.ts | TypeScript-типы window.smartCaptcha (для Vue/vanilla TS проектов) |
| templates/validate-amphp.php | Проверка токена в event loop: PHP + AMPHP v3 (amphp/http-client) |
| templates/mock-validate.php | Локальный мок /validate для юнит/смоук-тестов (php -S), все канонические сценарии |
| scripts/check_token.py | CLI-смоук-тест: python check_token.py --secret <ключ> --token <токен>; только stdlib |
Запускаемые фуллстек-примеры «форма + серверная проверка» (examples/README.md):
/validate не защищает ничего. Решение — только по полю status; message — лишь для логов.SMARTCAPTCHA_SERVER_KEY) или секретница; не во фронтенд, не в репозиторий. См. docs/keys.md.hideShield), обязан показать уведомление другим способом.test: true (только не в проде); поведение «как незнакомый пользователь» — инкогнито/VPN; ручная проверка токена — scripts/check_token.py. Подробнее — docs/troubleshooting.md.package.json, requirements.txt, composer.json), пример переменных окружения (.env.example) и написанные в ходе работы тесты/проверочные скрипты — они часть решения, а не черновик. Ориентир комплектности — examples/.evals/evals.json — 7 сценариев для проверки скилла (Express, React invisible, Flask, Terraform, Android, диагностика домена, тарификация).