О сервисе
VK Капча — сервис, который в реальном времени определяет, является ли пользователь приложения человеком. Сервис защищает ключевые точки взаимодействия с пользователями — авторизацию, регистрацию, API-эндпоинты — от автоматизированных атак. К таким атакам относятся:
- массовая регистрация фейковых аккаунтов;
- полный перебор паролей (brute force);
- автоматическая отправка сообщений через веб-формы;
- сбор контента (scraping);
- DDoS-атаки на прикладном уровне.
Сервис отсеивает ботов и верифицирует легитимных пользователей при минимальном участии с их стороны. Инфраструктура сервиса включает SDK для веб-приложений, iOS и Android, а также API для бэкенда. Проверку может инициировать как бэкенд, так и фронтенд приложения.
Сервис поддерживает два сценария подключения: проверка по запросу бэкенда и проверка по запросу фронтенда.
Сценарий для сервисов, где решение о проверке принимает бэкенд: пользователь выполняет действие, бэкенд отвечает, что нужна капча, и фронтенд запускает проверку в обработчике этого ответа. После успешной проверки запрос на действие отправляется бэкенду еще раз, но с токеном успешного прохождения капчи.
-
Пользователь выполняет действие в приложении.
-
Фронтенд приложения отправляет запрос на выполнение этого действия бэкенду.
-
Бэкенд приложения проверяет, нужно ли для этого запроса показать капчу. Если да, то бэкенд обращается к API VK Капча, чтобы создать капча-сессию.
-
Сервис VK Капча возвращает ссылку для запуска виджета капчи на фронтенде приложения.
-
Бэкенд приложения отправляет полученную ссылку фронтенду.
-
Фронтенд приложения передает ссылку в VK Капча SDK, чтобы отобразить виджет капчи пользователю.
-
VK Капча SDK отображает виджет капчи пользователю.
-
Пользователь проходит проверку. Во время прохождения капчи сервис анализирует его поведение и оценивает уровень доверия к пользователю (trust score).
-
После успешного прохождения капчи VK Капча SDK возвращает фронтенду
success-token— криптографически защищенный токен, подтверждающий, что пользователь прошел проверку. Если пользователь не прошел капчу, вместо токена возвращается ошибка. -
Фронтенд приложения отправляет бэкенду повторный запрос на выполнение действия пользователя, содержащий
success-token. -
Бэкенд приложения отправляет
success-tokenв API VK Капча для верификации. -
Сервис VK Капча подтверждает валидность токена.
-
Бэкенд приложения обрабатывает исходное действие пользователя и отправляет результат фронтенду.
-
Пользователю отображается результат выполнения действия.
Сценарий для сервисов, где проверку запускает фронтенд: ссылка для запуска виджета капчи получается заранее, до целевого действия пользователя. Проверка осуществляется до отправки запроса на выполнение действия, поэтому токен отправляется сразу с этим запросом — повторный запрос не требуется. Этот сценарий доступен только для веб-приложения и поддерживает невидимую капчу.
-
Бэкенд приложения обращается к API VK Капча, чтобы создать капча-сессию.
-
Сервис VK Капча возвращает бэкенду ссылку для запуска виджета капчи.
-
Бэкенд приложения отправляет полученную ссылку фронтенду.
-
Фронтенд приложения передает ссылку в VK Капча SDK, который монтирует виджет капчи на страницу. Для невидимой капчи проверка запускается в фоновом режиме.
-
Пользователь выполняет целевое действие.
-
Пользователь проходит проверку. Во время прохождения капчи сервис анализирует его поведение и оценивает уровень доверия к пользователю (trust score).
-
После успешного прохождения капчи VK Капча SDK возвращает фронтенду
success-token— криптографически защищенный токен, подтверждающий, что пользователь прошел проверку. Если пользователь не прошел капчу, вместо токена возвращается ошибка. -
Фронтенд приложения отправляет бэкенду запрос на выполнение действия пользователя, содержащий
success-token. -
Бэкенд приложения отправляет
success-tokenв API VK Капча для верификации. -
Сервис VK Капча подтверждает валидность токена.
-
Бэкенд приложения обрабатывает действие пользователя и отправляет результат фронтенду.
-
Пользователю отображается результат выполнения действия.
В сервисе 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.