---
title: Быстрый старт
---
# Быстрый старт
Это руководство поможет вам интегрировать CAPTCHA CaptchaLa за 5 минут.
::: 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, выданный сервером (защита от повторов)
:::
## 1. Создание аккаунта
Зарегистрируйте бесплатный аккаунт в панели управления
[Зарегистрироваться сейчас →](https://dash.captcha.la/register)
## 2. Создание приложения
Создайте приложение в панели управления, чтобы получить ваш App Key
## 3. Установка SDK
Выберите предпочтительный метод установки
```html
```
```bash
# or via npm
npm install captchala
```
## 4. Инициализация CAPTCHA
Инициализируйте компонент CAPTCHA на вашей странице
```html
```
## 5. Серверная проверка
Проверьте Token на вашем сервере
```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": "" }
```
```json
{
"code": 0,
"data": {
"valid": true,
"action": "login",
"challenge_id": "ch_xxx",
"uid": null,
"risk_score": 12
}
}
```
::: warning
Всегда проверяйте `data.valid === true` **и** что `data.action` соответствует ожидаемому сценарию.
Pass Token одноразовые; один и тот же `pt_xxx` нельзя проверить дважды.
:::
## Режим Token, выданного сервером (рекомендуется для production) {#server-token}
Для чувствительных действий (вход, регистрация, оплата) мы рекомендуем поток Token, выданного сервером: ваш backend сначала запрашивает короткоживущий server_token, который браузер затем использует для инициализации CAPTCHA. Это предотвращает злоупотребления при утечке app_key.
### Когда использовать
- Рекомендуется: регистрация, вход, сброс пароля, оплата, обмен баллов и любые endpoint, которые злоумышленник может атаковать скриптом.
- Опционально: обычные публичные формы, поля поиска и низкоценные взаимодействия, где удобство важнее.
### 1. Backend выдаёт server_token
Вызовите /v1/server/challenge/issue с вашего сервера, используя заголовки X-App-Key и X-App-Secret. Никогда не передавайте эти заголовки в браузер.
```bash
# Server-side only — never call this from a browser
curl -X POST https://apiv1.captcha.la/v1/server/challenge/issue \
-H "X-App-Key: YOUR_APP_KEY" \
-H "X-App-Secret: YOUR_APP_SECRET" \
-d "action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4"
# → { "code": 0, "data": { "server_token": "sct_...", "expires_in": 300 } }
```
### 2. Frontend отрисовывает CaptchaLa с server_token
Передайте Token в ваш компонент CaptchaLa. SDK перешлёт его при инициализации запроса.
```js
// Browser fetches the token from YOUR backend, not from CaptchaLa directly
const { serverToken } = await fetch('/api/captcha/issue').then(r => r.json());
Captchala.init({
appKey: 'YOUR_APP_KEY',
serverToken, // single-use, short-lived
product: 'popup',
action: 'login',
})
.appendTo('#captcha-container')
.onSuccess(res => submitForm(res.token));
```
### Замечания по безопасности
- Никогда не размещайте app_secret в коде frontend, мобильных приложениях или публичных репозиториях. Он должен оставаться только на сервере.
- Включите "Require server-issued challenge token" в панели управления, чтобы отклонять любые попытки без server_token.
- Держите ttl коротким (по умолчанию 300 с, максимум 900 с) и предпочитайте max_uses=1, чтобы снизить влияние утечки Token.
## Дальнейшие шаги
- [Web SDK](./web-sdk)
- [Справочник API](./api-reference)