Валидация пользователя
SmartCaptcha проверяет запросы пользователей своими ML-алгоритмами и показывает задание только тем пользователям, запросы которых посчитал подозрительными.
При этом на странице необязательно размещать кнопку Я не робот.
Обычная капча
Обычная капча — способ подключения виджета SmartCaptcha с кнопкой Я не робот, клик по которой отправит запрос пользователя в SmartCaptcha. Если сервис посчитает запрос подозрительным, он предложит пользователю решить задание.
Невидимая капча
Невидимая капча — способ подключения виджета SmartCaptcha, при котором кнопка Я не робот отсутствует на странице. Окно с заданием увидят только те пользователи, запросы которых сервис посчитает подозрительными.
Разработчик сам выбирает событие, когда сервис проверит пользователя.
Результат проверки
SmartCaptcha, проверив запрос, присваивает ему идентификатор — одноразовый токен. По этому токену вы можете запросить у сервиса результат проверки запроса пользователя. Токен действителен 5 минут. По истечении этого времени токен становится недействительным и пользователю необходимо снова пройти проверку.
После проверки токен загружается в элемент <input type="hidden" name="smart-token" value="<токен>" ...>
на странице пользователя. Например:
<div id="captcha-container" class="smart-captcha" ...>
<input type="hidden" name="smart-token" value="dD0xNjYyNDU3NDMzO2k9MmEwMjo2Yjg6YjA4MTpiNTk3OjoxOjFiO0Q9MjVCREY1RDgzMDBERjQ3QjExNkUyMDJDNjJFNEI3Q0Y0QjYzRkRDNzJEMkV********DNjMxODgzMUM0REZBNzI1QUE1QzUwO3U9MTY2MjQ1NzQzMzk5MTEwNjQxNTtoPTg4MWRjMDc2YzE3MjkxNGUwNDgwMTVkYzhl********">
...
</div>
Где:
<div id="captcha-container" class="smart-captcha" ...>
— элементdiv
с виджетом.value
— значение токена.
Чтобы узнать результат проверки, отправьте POST-запрос на адрес https://smartcaptcha.yandexcloud.net/validate
, передав параметры в формате x-www-form-urlencoded
:
secret=<ключ_сервера>&token=<токен>&ip=<IP-адрес_пользователя>
Где:
secret
— ключ сервера;token
— одноразовый токен, полученный после прохождения проверки;ip
— IP-адрес пользователя, с которого пришел запрос на проверку токена. Этот параметр не обязателен, однако мы просим передавать IP-адрес пользователя при запросах. Это помогает улучшить качество работы SmartCaptcha.
Ответ сервиса
В ответ сервис пришлет JSON-объект с полями status
и message
. Когда поле status
принимает значение ok
, в JSON-объект добавляется поле host
. Оно показывает, на каком сайте была пройдена проверка. Например:
-
Это человек. Проверка пройдена на сайте
example.com
:{ "status": "ok", "message": "", "host": "example.com" }
-
Это человек. Проверка пройдена на сайте
example.com
через порт8080
:{ "status": "ok", "message": "", "host": "example.com:8080" }
-
Пустое поле
host
. Может означать, что облако заблокировано, или произошел внутренний сбой сервиса:{ "status": "ok", "message": "", "host": "" }
-
Это робот:
{ "status": "failed", "message": "" }
-
Запрос с поддельным или поврежденным токеном. Это робот:
{ "status": "failed", "message": "Token invalid or expired." }
Ошибки в запросе
Если запрос к https://smartcaptcha.yandexcloud.net/validate
оформлен некорректно, сервис вернет ошибку. Например:
-
Запрос без ключа сервера:
{ "status": "failed", "message": "Authentication failed. Secret has not provided." }
-
Запрос без токена или с поврежденным токеном:
{ "status": "failed", "message": "Token invalid or expired." }
Примечание
Чтобы при обработке запроса от пользователя не было задержки, ошибки HTTP-протокола (код ответа не 200) рекомендуется обрабатывать как ответ сервиса "status": "ok"
.
Что дальше
- Как подключить невидимую капчу.
- Капча в React.