Skip to content
API
Captcha de Tiktok

Captcha de TikTok

Descripción General

El Captcha de TikTok es un sistema de verificación utilizado por TikTok para proteger la plataforma de bots y spam. Este captcha generalmente aparece al registrar una nueva cuenta, iniciar sesión o cuando se detecta actividad inusual.

🎵

Actualmente, las extensiones están disponibles para los 4 tipos de captcha en navegadores. Envía un mensaje al administrador para recibir la extensión. Proporciona todos los tipos de captcha para navegadores, emuladores y teléfonos.

Captcha de Rotación

1. Crear Tarea

Solicitud

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

Parámetros

ParámetroTipo de Dato¿Requerido?Descripción
clientKeystringClave API
task.typestringTiktokCaptchaTask
task.imagestringBase64 de la imagen
task.subTypeintTipo de captcha: 0 (Captcha de rotación en navegador), 1 (Captcha deslizante), 2 (Seleccionar 2 objetos similares), 3 (Captcha de rotación en teléfono, emulador), 5 (Seleccionar objetos que satisfagan la pregunta)
task.otherstringnoPara subType 5, este campo es requerido. La pregunta del captcha, por ejemplo: "Cuál de estos objetos relincha"

Ejemplo de Solicitud

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

Respuesta

En caso de éxito, el servidor devolverá errorId = 0 y taskId

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

Muestras de Imágenes para Enviar al Servidor de Resolución de Captcha

En navegador:

Campo image = base64_imagen_externa|base64_imagen_interna

Captcha de Rotación - Imagen Externa
Captcha de Rotación - Imagen Interna

En emulador, teléfono:

El campo image es base64 de 1 imagen, recortada para contener solo la porción del captcha de rotación (con ambos círculos, puede tener espacio en blanco extra en los márgenes, la longitud del margen es flexible)

Captcha de Rotación en teléfono

2. Obtener Resultado

Solicitud

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

Parámetros

ParámetroTipo de Dato¿Requerido?Descripción
clientKeystringClave API del sitio web
taskIdstringTaskId del paso (1)

Ejemplo de Solicitud

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

Respuesta

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

Significado de la Respuesta

  • errorId = 0 y status = ready: Resuelto exitosamente, lee el resultado en solution
  • errorId = 1 y status = processing: El captcha se está resolviendo, espera 1-2 segundos e intenta de nuevo
  • errorId distinto de 0 y 1: Error del sistema, se proporciona código de error y descripción
  • solution:
    • Para captcha de rotación en navegador: devuelve la longitud de la distancia de arrastre del deslizador
    • Para captcha de rotación en emulador, teléfono: devuelve el ángulo de rotación, el usuario calcula la distancia de arrastre usando la fórmula: Distancia de arrastre = (L / 180) * solution (donde L es la distancia desde la posición inicial hasta la final del deslizador, medida desde el centro del deslizador)
    • Para captcha deslizante: devuelve la coordenada del eje x para arrastrar
    • Para captcha de selección de 2 objetos similares: devuelve par de coordenadas para hacer clic en la imagen "x1,y1,x2,y2"
    • Para captcha de selección de múltiples objetos que satisfacen la pregunta: devuelve coordenadas para hacer clic en la imagen "x1,y1,x2,y2,x3,y3,..."

Ejemplos de Integración

import requests
import time
import base64
 
def solve_tiktok_captcha(image_base64, sub_type, question=None, api_key='TU_CLAVE_API'):
    # Paso 1: Crear tarea
    task = {
        'type': 'TiktokCaptchaTask',
        'image': image_base64,
        'subType': sub_type
    }
    
    # Si subType = 5, agregar campo other (pregunta)
    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', 'Error desconocido'))
    
    task_id = result['taskId']
    
    # Paso 2: Obtener resultado
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Esperar 2 segundos
        
        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':
            # Continuar esperando
            continue
        
        # Otros errores
        raise Exception(result.get('errorDescription', 'Error desconocido'))
 
# Uso - Ejemplo con captcha de selección de 2 objetos (subType = 2)
with open('captcha_image.png', 'rb') as f:
    image_base64 = base64.b64encode(f.read()).decode('utf-8')
 
sub_type = 2  # 0: Rotación navegador, 1: Deslizante, 2: Seleccionar 2 objetos, 3: Rotación teléfono, 5: Seleccionar por pregunta
solution = solve_tiktok_captcha(image_base64, sub_type, api_key='TU_CLAVE_API')
print('Solución del captcha de TikTok:', solution)  # "x1,y1,x2,y2"

Códigos de Error Comunes

Códigos de Error al Crear Tarea

Código de ErrorDescripciónNotas
0éxitoTarea creada exitosamente
2faltan campos requeridosFaltan campos requeridos, verifica los parámetros (image, subType)
3tarea no compatibleTipo de tarea no compatible
4creación de tarea fallidaCreación de tarea fallida, intenta de nuevo más tarde
5la clave del cliente no existeLa clave API no existe, verifica tu clave API
6saldo de cuenta insuficienteSaldo de cuenta insuficiente, agrega más créditos

Códigos de Error al Obtener Resultado

Código de ErrorDescripciónNotas
0éxitoÉxito, lee el resultado en el campo solution
1procesandoProcesando, espera 1-2 segundos y envía la solicitud nuevamente
5la clave del cliente no existeLa clave API no existe, verifica tu clave API
7tarea fallida, por favor crea una nueva tareaTarea fallida, por favor crea una nueva tarea
8el ID de tarea no existeEl ID de tarea no existe o ha expirado

Mejores Prácticas

Para lograr los mejores resultados al usar la API de Achicaptcha, sigue estos principios:

1. Identificar el Tipo de Captcha y subType Correcto

  • TikTok utiliza varios tipos de captcha
  • Detecta con precisión el tipo de captcha que se está mostrando
  • Envía el subType correcto en la solicitud:
    • 0: Captcha de rotación en navegador
    • 1: Captcha deslizante
    • 2: Seleccionar 2 objetos similares
    • 3: Captcha de rotación en teléfono, emulador
    • 5: Seleccionar objetos que satisfagan la pregunta (requiere campo other)

2. Formatear las Imágenes Correctamente

  • Captcha de rotación en navegador: Enviar base64_imagen_externa|base64_imagen_interna
  • Captcha de rotación en teléfono/emulador: Enviar base64 de 1 imagen (conteniendo solo la porción del captcha de rotación)
  • Otros tipos: Enviar base64 de la imagen correspondiente
  • Asegúrate de que las imágenes estén codificadas en formato base64 adecuado

3. Manejar los Resultados Correctamente

  • Para captcha de rotación en emulador/teléfono: Calcula la distancia del arrastre usando la fórmula: Distancia de arrastre = (L / 180) * solution
    Cómo medir L para el arrastre de captcha de rotación
    Mide L como se muestra arriba: es la longitud para el cálculo del arrastre
  • Para captcha de selección de objetos: Analiza la cadena de coordenadas "x1,y1,x2,y2" para obtener los puntos de clic
  • Para captcha deslizante: Usa la coordenada x devuelta para mover el deslizador

4. Intervalo de Sondeo

  • Espera al menos 1-2 segundos entre verificaciones de resultado
  • No envíes spam a la API con demasiadas solicitudes consecutivas
  • Ten un tiempo de espera para evitar bucles infinitos (recomendado 120 segundos)

5. Manejo de Errores

  • Verifica errorId = 1 y status = processing para continuar esperando
  • Maneja otros errores apropiadamente
  • Implementa lógica de reintento para errores temporales

6. Seguridad de la Clave API

  • No codifiques la clave API en el código
  • Usa variables de entorno
  • No expongas la clave API en el lado del cliente

Enlaces Útiles: