--- title: Web SDK --- # Web SDK Web SDK поддерживает все современные браузеры с несколькими способами интеграции. ::: tip Посмотрите работу за 30 секунд [demo-v1.captcha.la](https://demo-v1.captcha.la) — чистый HTML + PHP, лицензия MIT, исходный код доступен на каждой странице. - [popup.html](https://demo-v1.captcha.la/popup.html) — режим всплывающего окна - [float.html](https://demo-v1.captcha.la/float.html) — плавающий виджет - [bind.html](https://demo-v1.captcha.la/bind.html) — привязка к кнопке - [inline.html](https://demo-v1.captcha.la/inline.html) — встраивание inline - [server-token.html](https://demo-v1.captcha.la/server-token.html) — Token, выданный сервером (защита от повторов) ::: ## Быстрый старт ```html ``` ## Установка ### CDN ```html ``` ### NPM ```bash npm install captchala # or framework wrappers npm install @captcha-la/vue npm install @captcha-la/react ``` ```js import Captchala from 'captchala'; import 'captchala/dist/captchala.css'; ``` ## Режимы ### Режим Popup ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'popup', action: 'login' }) .bindTo('#login-btn') .onSuccess(res => sendToBackend(res.token)); ``` ### Режим Float ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'float', action: 'browse' }) .appendTo('#captcha-container') .onSuccess(res => sendToBackend(res.token)); ``` ### Режим Bind ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'bind', action: 'login' }) .bindTo('#submit-button') .onSuccess(res => submitForm(res.token)); // fires only after challenge passes ``` ### Режим Embed ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'embed', action: 'register' }) .appendTo('#captcha-container') .onSuccess(res => sendToBackend(res.token)); ``` ## Общие параметры | Параметр | Тип | По умолчанию | Описание | | --- | --- | --- | --- | | `appKey` | string | — | Ключ приложения (обязательно) | | `product` | string | `popup` | Режим отображения: popup | float | embed | bind | | `action` | string | `default` | Бизнес-сценарий (например login, register, pay). Сервер применяет разные политики безопасности для каждого сценария. | | `lang` | string | `auto` | BCP-47 тег (например `en`, `ja`, `pt-BR`) или `auto`, чтобы следовать `navigator.language`. См. [Поддерживаемые языки](/ru/supported-languages) — 54 локали. | | `serverToken` | string | — | Одноразовый Token (sct_xxx), выданный вашим сервером. Настоятельно рекомендуется в production — предотвращает неограниченное обновление запросов. | | `onServerTokenExpired` | `() => Promise` | — | Вызывается при истечении serverToken; верните новый, чтобы SDK мог продолжить без прерывания потока. | | `enableVoice` | boolean | `true` | Показать пункт аудио-CAPTCHA (доступность для пользователей с нарушением зрения). | ## Серверная проверка После `onSuccess` отправьте `res.token` (префикс `pt_`) на ваш backend, затем проверьте его на стороне сервера: ```bash POST https://apiv1.captcha.la/v1/validate X-App-Key: YOUR_APP_KEY X-App-Secret: YOUR_APP_SECRET Content-Type: application/json { "pass_token": "" } ``` См. [Справочник API](./api-reference) для полного endpoint проверки.