TikTok круглая

Данная каптча имеет следующий вид:

В разных версиях TikTok данная капча отображается по разному, но смысл ее один, нужно потянуть за слайдер, чтобы картинка совпала.

Данная статья писалась 23 октября 2024, учитывайте это, так как TikTok мог обновить интерфейс самой капчи.

Ваша задача, получить две картинки, первая, фоновая (как на картинке ниже).

Вторая, которая наложена по центру на фоновую (как на картинке ниже).

Эти две картинки (в формате base64) необходимо будет отправить в наш сервис, чтобы получить расстояние, на которое необходимо сдвинуть слайдер. Так как соотношение сторон у нас при решении и у вас разное, необходимо корректно посчитать то расстояние, на которое вы на своей стороне будете двигать слайдер. Просто действуйте по алгоритму описанному ниже.

Далее Вам необходимо получить размер слайдера (картинка ниже), за который необходимо будет тянуть на расстояние, которое рассчитаем ниже, после того, как получим все необходимые данные.

Для корректных расчетов нужно получить длину ползунка, по которому двигается слайдер (ниже на рисунке).

Теперь после того как все значения получены, приведем простой пример, как отправить данные на наш сервер, и как корректно обработать ответ.

Вам необходимо отправить POST запрос по адресу: https://skipcaptcha.com/api/api.php?apikey=APIKEY&action=create.

Данные которые Вы должны отправить:

body0: Фоновая картинка в формате base64

body1: Картинка которая накладывается на фоновую, в формате base64

task_typе: tiktok_circle — это значение константа, обознающая что будет решаться именно круглая капча Тик Тока

Эти данные необходимо отправить в формате content-type: x-www-from-urlencoded (не JSON).

В ответ вы получите JSON ответ, в случае успеха Вам придет сообщение: {«error»:false,»task_id»:2609}. Где 2609 номер задания в системе.

После того как система приняла вашу капчу, необходимо отследить статус выполнения, делать это стоит с интервалом 1-5 секунд.

Вам необходимо отправить GET запрос по адресу: https://skipcaptcha.com/api/api.php?apikey=APIKEY&action=status&task_id=2609.

В ответ вы получите JSON ответ, в случае успеха Вам придет сообщение:

{«error»:false,»status»:»completed»,»output»:{«error»:false,»assess_width»:272,»x»:91,»percent»:0.33333333333333331}}

Вам необходимо дождаться пока status будет completed, и получить данные поля percent из объекта output. Это именно уже рассчитанный процент, который вы можете использовать на своей стороне, чтобы правильно получить расстояние сдвига.

Формула расчета: (длина_ползунка  — длина_слайдера) * percent

Если мы вставим все данные из картинок выше, то получится: (348 — 64) * 0.3 = 85.2.

Для удобства можно округлить, и получается что необходимо сдвинуть слайдер на 85 пикселей.