Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex SmartCaptcha
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Создать капчу
    • Удалить капчу
    • Получить ключи
    • Добавить виджет расширенным методом
  • Концепции
    • Валидация пользователя
    • Методы подключения виджета
    • Невидимая капча
    • Капча в React
    • Ограниченный режим
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Обратная связь
  1. Концепции
  2. Валидация пользователя

Валидация пользователя

Статья создана
Yandex Cloud
  • Обычная капча
  • Невидимая капча
  • Результат проверки
    • Ответ сервиса
    • Ошибки в запросе
  • Что дальше

SmartCaptcha проверяет запросы пользователей своими ML-алгоритмами и показывает задание только тем пользователям, запросы которых посчитал подозрительными.

При этом на странице необязательно размещать кнопку Я не робот.

Обычная капча

Обычная капча — способ подключения виджета SmartCaptcha с кнопкой Я не робот, клик по которой отправит запрос пользователя в SmartCaptcha. Если сервис посчитает запрос подозрительным, он предложит пользователю решить задание.

Невидимая капча

Невидимая капча — способ подключения виджета SmartCaptcha, при котором кнопка Я не робот отсутствует на странице. Окно с заданием увидят только те пользователи, запросы которых сервис посчитает подозрительными.

Разработчик сам выбирает событие, когда сервис проверит пользователя.

Результат проверки

SmartCaptcha, проверив запрос, присваивает ему идентификатор — токен. По этому токену вы можете запросить у сервиса результат проверки запроса пользователя.

После проверки токен загружается в элемент <input type="hidden" name="smart-token" value="<токен>" ...> на странице пользователя. Например:

<div id="captcha-container" class="smart-captcha" ...>
    <input type="hidden" name="smart-token" value="dD0xNjYyNDU3NDMzO2k9MmEwMjo2Yjg6YjA4MTpiNTk3OjoxOjFiO0Q9MjVCREY1RDgzMDBERjQ3QjExNkUyMDJDNjJFNEI3Q0Y0QjYzRkRDNzJEMkVGQzQyRUNDNjMxODgzMUM0REZBNzI1QUE1QzUwO3U9MTY2MjQ1NzQzMzk5MTEwNjQxNTtoPTg4MWRjMDc2YzE3MjkxNGUwNDgwMTVkYzhlZjU3ODQ0">
    ...
</div>

Где:

  • <div id="captcha-container" class="smart-captcha" ...> — элемент div с виджетом.
  • value — значение токена.

Чтобы узнать результат проверки, отправьте GET-запрос с токеном на адрес https://captcha-api.yandex.ru/validate:

https://captcha-api.yandex.ru/validate?secret=<ключ_сервера>&ip=<IP_адрес_пользователя>&token=<токен>

Где:

  • secret — ключ сервера;
  • token — токен;
  • ip — IP-адрес пользователя.

Ответ сервиса

В ответ сервис пришлет JSON-объект с полями status и message. Например:

  1. Это человек:

    {
        "status": "ok",
        "message": ""
    }
    
  2. Это робот:

    {
        "status": "failed",
        "message": ""
    }
    
  3. Запрос с поддельным или поврежденным токеном. Это робот:

    {
        "status": "failed",
        "message": "Token invalid or expired."
    }
    

Ошибки в запросе

Если запрос к https://captcha-api.yandex.ru/validate оформлен некорректно, сервис вернет ошибку. Например:

  1. Запрос без ключа сервера:

    {
        "status": "failed",
        "message": "Authentication failed. Secret has not provided."
    }
    
  2. Запрос без IP-адреса:

    {
        "status": "failed",
        "message": "Invalid IP."
    }
    
  3. Запрос без токена или с поврежденным токеном:

    {
        "status": "failed",
        "message": "Token invalid or expired."
    }
    

Примечание

Чтобы при обработке запроса от пользователя не было задержки, ошибки HTTP-протокола (код ответа не 200) рекомендуется обрабатывать как ответ сервиса "status": "ok".

Что дальше

  • Как подключить невидимую капчу.
  • Капча в React.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Обычная капча
  • Невидимая капча
  • Результат проверки
  • Ответ сервиса
  • Ошибки в запросе
  • Что дальше