VK Cloud logo

О сервисе

VK Капча — сервис, который в реальном времени определяет, является ли пользователь приложения человеком. Сервис защищает ключевые точки взаимодействия с пользователями — авторизацию, регистрацию, API-эндпоинты — от автоматизированных атак. К таким атакам относятся:

  • массовая регистрация фейковых аккаунтов;
  • полный перебор паролей (brute force);
  • автоматическая отправка сообщений через веб-формы;
  • сбор контента (scraping);
  • DDoS-атаки на прикладном уровне.

Сервис отсеивает ботов и верифицирует легитимных пользователей при минимальном участии с их стороны. Инфраструктура сервиса включает SDK для веб-приложений, iOS и Android, а также API для бэкенда. Проверку может инициировать как бэкенд, так и фронтенд приложения.

Принцип работы сервиса

Сервис поддерживает два сценария подключения: проверка по запросу бэкенда и проверка по запросу фронтенда.

Капча по запросу бэкенда

Сценарий для сервисов, где решение о проверке принимает бэкенд: пользователь выполняет действие, бэкенд отвечает, что нужна капча, и фронтенд запускает проверку в обработчике этого ответа. После успешной проверки запрос на действие отправляется бэкенду еще раз, но с токеном успешного прохождения капчи.

Принцип работы сервиса: капча по запросу бэкенда
  1. Пользователь выполняет действие в приложении.

  2. Фронтенд приложения отправляет запрос на выполнение этого действия бэкенду.

  3. Бэкенд приложения проверяет, нужно ли для этого запроса показать капчу. Если да, то бэкенд обращается к API VK Капча, чтобы создать капча-сессию.

  4. Сервис VK Капча возвращает ссылку для запуска виджета капчи на фронтенде приложения.

  5. Бэкенд приложения отправляет полученную ссылку фронтенду.

  6. Фронтенд приложения передает ссылку в VK Капча SDK, чтобы отобразить виджет капчи пользователю.

  7. VK Капча SDK отображает виджет капчи пользователю.

  8. Пользователь проходит проверку. Во время прохождения капчи сервис анализирует его поведение и оценивает уровень доверия к пользователю (trust score).

  9. После успешного прохождения капчи VK Капча SDK возвращает фронтенду success-token — криптографически защищенный токен, подтверждающий, что пользователь прошел проверку. Если пользователь не прошел капчу, вместо токена возвращается ошибка.

  10. Фронтенд приложения отправляет бэкенду повторный запрос на выполнение действия пользователя, содержащий success-token.

  11. Бэкенд приложения отправляет success-token в API VK Капча для верификации.

  12. Сервис VK Капча подтверждает валидность токена.

  13. Бэкенд приложения обрабатывает исходное действие пользователя и отправляет результат фронтенду.

  14. Пользователю отображается результат выполнения действия.

Капча по запросу фронтенда

Сценарий для сервисов, где проверку запускает фронтенд: ссылка для запуска виджета капчи получается заранее, до целевого действия пользователя. Проверка осуществляется до отправки запроса на выполнение действия, поэтому токен отправляется сразу с этим запросом — повторный запрос не требуется. Этот сценарий доступен только для веб-приложения и поддерживает невидимую капчу.

Принцип работы сервиса: капча по запросу фронтенда
  1. Бэкенд приложения обращается к API VK Капча, чтобы создать капча-сессию.

  2. Сервис VK Капча возвращает бэкенду ссылку для запуска виджета капчи.

  3. Бэкенд приложения отправляет полученную ссылку фронтенду.

  4. Фронтенд приложения передает ссылку в VK Капча SDK, который монтирует виджет капчи на страницу. Для невидимой капчи проверка запускается в фоновом режиме.

  5. Пользователь выполняет целевое действие.

  6. Пользователь проходит проверку. Во время прохождения капчи сервис анализирует его поведение и оценивает уровень доверия к пользователю (trust score).

  7. После успешного прохождения капчи VK Капча SDK возвращает фронтенду success-token — криптографически защищенный токен, подтверждающий, что пользователь прошел проверку. Если пользователь не прошел капчу, вместо токена возвращается ошибка.

  8. Фронтенд приложения отправляет бэкенду запрос на выполнение действия пользователя, содержащий success-token.

  9. Бэкенд приложения отправляет success-token в API VK Капча для верификации.

  10. Сервис VK Капча подтверждает валидность токена.

  11. Бэкенд приложения обрабатывает действие пользователя и отправляет результат фронтенду.

  12. Пользователю отображается результат выполнения действия.

Типы капчи

В сервисе VK Капча доступны видимая и невидимая (invisible) капчи.

Невидимая капча доступна только в веб-приложении и работает в сценарии капчи по запросу фронтенда. Проверка в этом случае происходит в фоновом режиме. Если сервис оценивает пользователя как подозрительного, невидимая капча будет автоматически заменена на видимую.

Видимая капча работает как в сценарии капчи по запросу фронтенда, так и в сценарии капчи по запросу бэкенда. Доступно три типа видимой капчи:

  • Флажок (checkbox) — подтверждение одним нажатием. Минимальное взаимодействие, подходит для большинства сценариев.
  • Ползунок (slider) — визуальная задача на сетке изображений, требующая человеческого восприятия и логики.
  • Аудио (sound) — аудиозадание: прослушать звуковую дорожку и ввести распознанное слово.

Тип видимой капчи можно задать при создании капча-сессии или он может выбираться автоматически на основе оценки уровня доверия к пользователю. При автоматическом выборе капчи, если сервис оценивает пользователя как доверенного, будет предложена капча-флажок. В противном случае сервис эскалирует сложность и предлагает капчу-ползунок или аудиокапчу.

Уровень доверия к пользователю

Сервис VK Капча определяет уровень доверия к пользователю в реальном времени, объединяя несколько групп сигналов:

  • Поведенческие сигналы.

    ML-модели анализируют поведение пользователя: траектории курсора, паттерны кликов, скорость реакции, хронологию и последовательность действий. На основе этих данных формируется цифровой профиль пользователя (fingerprint), который сохраняется между сессиями. Боты, имитирующие человека, оставляют характерные атрибуты, которые ML-модель распознает.

  • Сигналы интенсивности и окружения.

    Сервис исследует интенсивность передачи пользовательских запросов и среду исполнения на стороне пользователя: характеристики устройства, конфигурацию браузера, доступные API. Анализируя полученные данные, сервис выявляет автоматизированное окружение: headless-браузеры, эмуляторы, фермы виртуальных машин.

Итоговая оценка уровня доверия определяет тип капчи, которую нужно пройти пользователю.

Системные требования

Поддерживаемые браузеры:

  • Google Chrome версии 52 и выше;
  • Microsoft Edge версии 79 и выше;
  • Firefox версии 57 и выше;
  • Safari версии 11 и выше;
  • Opera версии 39 и выше;
  • Яндекс Браузер версии 16.9 и выше.

iOS:

  • iOS версии 12 и выше;
  • Xcode версии 16.2 и выше;
  • Swift Package Manager версии 5.9 и выше;
  • CocoaPods версии 1.13 и выше.

Android:

  • Android версии 5.0 (API 21) и выше;
  • Java версии 11 и выше;
  • Kotlin версии 1.9.0 и выше.

Обратная связь

Если у вас остались вопросы о работе сервиса или предложения по его развитию, напишите на почту captcha@corp.vk.com.

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