Skip to content
API
Tiktok капча

TikTok Captcha

Обзор

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

🎵

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

Rotate Captcha

1. Создание задачи

Запрос

POST https://api.achicaptcha.com/createTask

Параметры

ПараметрТип данныхОбязательно?Описание
clientKeystringдаAPI ключ
task.typestringдаTiktokCaptchaTask
task.imagestringдаBase64 изображения
task.subTypeintдаТип капчи: 0 (Капча с вращением в браузере), 1 (Капча-слайдер), 2 (Выбор 2 похожих объектов), 3 (Капча с вращением на телефоне, эмуляторе), 5 (Выбор объектов, удовлетворяющих вопросу)
task.otherstringнетДля subType 5 это поле обязательно. Вопрос капчи, например: "Which of these objects neighs"

Пример запроса

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
	"clientKey": "YOUR_API_KEY",
	"task": {
		"type": "TiktokCaptchaTask",
		"image": "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...(10460 chars omitted)...V7Q4rk8i3IvOS/eZexY2wFyvTDXyzAWT5qNlUXkiKiAJVRdUYlkBFEQQRQEC2yAghRCyCWQSyBZAsgWQW1kCyCoCCoqIqoFkVCiCKXVC3ooCKKKxIRkhCxZw+Zj8FjMPpFmJjHRYdL69ad0OidK+5LIM1V6WM3fQBZRD5TbagWWbCZZKsVRiqqCIIindVil0UJQEQ5XRV5oiHZA3sgKBzRBFSyIHS6AgWRQa3RCyAgHZFUahA5ofAdkVLoKgnOyKE6KgoBQUDVGSE2CBYWUVjyRU5qMtgAKCAAqKoGqErZVFCrHYAqjIBRAKoiAqj//Z",
		"subType": 2
	}
}

Ответ

При успехе сервер вернет errorId = 0 и taskId

{
  "errorId": 0,
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Примеры изображений для отправки на сервер решения капчи

В браузере:

Поле image = base64_outer_image|base64_inner_image

Rotate Captcha - Outer Image
Rotate Captcha - Inner Image

На эмуляторе, телефоне:

Поле image — это base64 1 изображения, обрезанного так, чтобы содержать только часть капчи с вращением (с обоими кругами, может иметь лишнее белое пространство по краям, длина полей гибкая)

Rotate Captcha on phone

2. Получение результата

Запрос

POST https://api.achicaptcha.com/getTaskResult

Параметры

ПараметрТип данныхОбязательно?Описание
clientKeystringдаAPI ключ с сайта
taskIdstringдаTaskId из шага (1)

Пример запроса

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
	"clientKey": "Your API_KEY",
	"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Ответ

{
  "errorId": 0,
  "status": "ready",
  "solution": "x1,y1,x2,y2"
}

Значение ответа

  • errorId = 0 и status = ready: Успешно решено, читайте результат в solution
  • errorId = 1 и status = processing: Капча решается, подождите 1-2 секунды и попробуйте снова
  • errorId отличный от 0 и 1: Системная ошибка, предоставлен код ошибки и описание
  • solution:
    • Для капчи с вращением в браузере: возвращает длину дистанции перетаскивания слайдера
    • Для капчи с вращением на эмуляторе, телефоне: возвращает угол поворота, пользователь рассчитывает дистанцию перетаскивания по формуле: Дистанция перетаскивания = (L / 180) * solution (где L — расстояние от начальной до конечной позиции слайдера, измеренное от центра слайдера)
    • Для капчи-слайдера: возвращает координату по оси X для перетаскивания
    • Для капчи с выбором 2 похожих объектов: возвращает пару координат для клика на изображении "x1,y1,x2,y2"
    • Для капчи с выбором нескольких объектов, удовлетворяющих вопросу: возвращает координаты для клика на изображении "x1,y1,x2,y2,x3,y3,..."

Примеры интеграции

import requests
import time
import base64
 
def solve_tiktok_captcha(image_base64, sub_type, question=None, api_key='YOUR_API_KEY'):
    # Step 1: Create task
    task = {
        'type': 'TiktokCaptchaTask',
        'image': image_base64,
        'subType': sub_type
    }
    
    # If subType = 5, add other field (question)
    if sub_type == 5 and question:
        task['other'] = question
    
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': task
    }
    
    response = requests.post(create_task_url, json=create_task_payload)
    result = response.json()
    
    if result['errorId'] != 0:
        raise Exception(result.get('errorDescription', 'Unknown error'))
    
    task_id = result['taskId']
    
    # Step 2: Get result
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Wait 2 seconds
        
        get_result_payload = {
            'clientKey': api_key,
            'taskId': task_id
        }
        
        response = requests.post(get_result_url, json=get_result_payload)
        result = response.json()
        
        if result['errorId'] == 0 and result.get('status') == 'ready':
            return result['solution']
        
        if result['errorId'] == 1 and result.get('status') == 'processing':
            # Continue waiting
            continue
        
        # Other errors
        raise Exception(result.get('errorDescription', 'Unknown error'))
 
# Usage - Example with select 2 objects captcha (subType = 2)
with open('captcha_image.png', 'rb') as f:
    image_base64 = base64.b64encode(f.read()).decode('utf-8')
 
sub_type = 2  # 0: Rotate browser, 1: Slider, 2: Select 2 objects, 3: Rotate phone, 5: Select by question
solution = solve_tiktok_captcha(image_base64, sub_type, api_key='YOUR_API_KEY')
print('TikTok captcha solution:', solution)  # "x1,y1,x2,y2"

Коды общих ошибок

Коды ошибок при создании задачи

Код ошибкиОписаниеПримечания
0successЗадача успешно создана
2missing required fieldsОтсутствуют обязательные поля, проверьте параметры (image, subType)
3task not supportedТип задачи не поддерживается
4task creation failedОшибка создания задачи, попробуйте позже
5client key does not existAPI ключ не существует, проверьте ваш API ключ
6insufficient account balanceНедостаточно средств на счете, пополните баланс

Коды ошибок при получении результата

Код ошибкиОписаниеПримечания
0successУспешно, читайте результат в поле solution
1processingВ обработке, подождите 1-2 секунды и отправьте запрос снова
5client key does not existAPI ключ не существует, проверьте ваш API ключ
7task failed, please create a new taskЗадача не выполнена, пожалуйста, создайте новую задачу
8task ID does not existID задачи не существует или истек

Лучшие практики

Для достижения наилучших результатов при использовании Achicaptcha API следуйте этим принципам:

1. Определите правильный тип капчи и subType

  • TikTok использует различные типы капчи
  • Точно определите тип отображаемой капчи
  • Отправьте правильный subType в запросе:
    • 0: Капча с вращением в браузере
    • 1: Капча-слайдер
    • 2: Выбор 2 похожих объектов
    • 3: Капча с вращением на телефоне, эмуляторе
    • 5: Выбор объектов, удовлетворяющих вопросу (требуется поле other)

2. Правильно форматируйте изображения

  • Капча с вращением в браузере: Отправьте base64_outer_image|base64_inner_image
  • Капча с вращением на телефоне/эмуляторе: Отправьте base64 1 изображения (содержащего только часть капчи с вращением)
  • Другие типы: Отправьте base64 соответствующего изображения
  • Убедитесь, что изображения закодированы в правильном формате base64

3. Правильно обрабатывайте результаты

  • Для капчи с вращением на эмуляторе/телефоне: Рассчитайте дистанцию перетаскивания по формуле: Дистанция перетаскивания = (L / 180) * solution
    Как измерить L для перетаскивания капчи с вращением
    Измерьте L, как показано выше: длина для вычисления перетаскивания
  • Для капчи с выбором объектов: Разберите строку координат "x1,y1,x2,y2", чтобы получить точки клика
  • Для капчи-слайдера: Используйте возвращенную координату X для перетаскивания слайдера

4. Интервал опроса

  • Ждите не менее 1-2 секунд между проверками результата
  • Не отправляйте слишком много последовательных запросов к API
  • Установите тайм-аут, чтобы избежать бесконечных циклов (рекомендуется 120 секунд)

5. Обработка ошибок

  • Проверяйте errorId = 1 и status = processing, чтобы продолжить ожидание
  • Обрабатывайте другие ошибки соответствующим образом
  • Реализуйте логику повторных попыток для временных ошибок

6. Безопасность API ключа

  • Не прописывайте API ключ жестко в коде
  • Используйте переменные окружения
  • Не раскрывайте API ключ на стороне клиента

Полезные ссылки: