Схема работы
Как работает SDK, как он взаимодействует с запросами приложения и ответами от вашего сервера / системы защиты.
Схема работы:
-
Приложение инициирует отправку запроса к ресурсу, который защищает Servicepipe.
-
SDK, встроенный в сетевой слой приложения, добавляет к запросу служебные cookies Servicepipe и отправляет по адресу.
-
Запрос поступает в систему защиты.
-
Система защиты анализирует запрос и решает, что с ним делать. Возможны три сценария:
-
Пропуск — запрос легитимный; защита как reverse-proxy передаёт его на ваш сервер, сервер отвечает, ответ передаётся назад приложению.
-
Блокировка — запрос сделал бот; защита отдаёт в ответ ошибку HTTP 403.
-
Антибот-проверка — защита не уверена, бот отправил запрос или человек. Отдаёт в ответ редирект на JS-челлендж или CAPTCHA.
Если это новая сессия, система защиты добавит к ответу служебную Set-Cookie с ID сессии. SDK её сохранит и будет добавлять к следующим запросам, пока срок жизни этой cookie не истечёт.
-
-
Приложение получает ответ. Этот ответ сначала перехватывается SDK. Из него SDK считывает и сохраняет выставленные системой защиты cookies. Затем, если пришёл:
-
Любой другой ответ , кроме редиректа на JS-челлендж или CAPTCHA — SDK передаёт ответ дальше приложению.
-
Редирект на JS-челлендж или CAPTCHA — SDK открывает страницу в WebView/WKWebView (для пользователя это выглядит как всплывающее окно/экран) и даёт там пройти анти-бот проверку.
JS-челлендж проходится автоматически, пользователь видит только всплывшую на секунду иконку загрузки. CAPTCHA требует от него активных действий. -
-
(Опциональный этап) если был JS-челллендж или CAPTCHA, по его окончании SDK закрывает WebView/WKWebView.
Если проверка была пройдена успешно, защита может выдать особую Set-Cookie, с которой пользователь какое-то время сможет проходить на ресурс без проверок. SDK сохраняет эту cookie и будет добавлять её в запросы, пока время жизни cookie не истечёт.
Затем SDK отправляет исходный запрос с обновлёнными cookies ещё раз. Cистема защиты узнаёт пользователя, который только что проходил антибот-проверку, и:
-
пропускает запрос — если проверка показала, что пользователь не бот;
-
блокирует запрос — если проверка показала, что пользователь бот.
-