Skip to content
API
Funcaptcha

Imagen Funcaptcha

Descripción General

FunCaptcha (también conocido como Arkose Labs Captcha) es un tipo de captcha interactivo que requiere que los usuarios realicen acciones como rotar imágenes, arrastrar y soltar objetos para resolver desafíos. Es utilizado por muchos sitios web importantes como Roblox, Epic Games, Outlook, etc.

🎮

FunCaptcha está diseñado tanto para proteger contra bots como para crear una experiencia "divertida" para los usuarios a través de minijuegos interactivos.

FunCaptcha FunCaptcha FunCaptcha

1. Crear Tarea

Solicitud

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

Parámetros

Nombre del ParámetroTipo de Dato¿Requerido?Descripción
clientKeystringClave API
task.typestringFuncaptchaImageTask
task.subTypestringEl valor es igual a 1
task.imagestringBase64 de la imagen
task.otherstringPregunta
Ejemplo: "Usa las flechas para rotar el objeto para que mire en la dirección de la mano"

Ejemplo de Solicitud

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "TU_CLAVE_API",
  "task": {
    "type": "FuncaptchaImageTask",
    "subType": "1",
    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
    "other": "Usa las flechas para rotar el objeto para que mire en la dirección de la mano"
  }
}

Respuesta

Cuando tiene éxito, el servidor devuelve errorId = 0 y taskId

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

2. Obtener Resultado

Solicitud

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

Parámetros

Nombre del ParámetroTipo de Dato¿Requerido?Descripción
clientKeystringClave API
taskIdstringTaskId obtenido de (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": "1" // Índice de imagen para hacer clic (Comenzando desde 0)
}

Explicación del Estado

  • errorId = 0 y status = ready: Resuelto exitosamente, lee el resultado en solution.answer (array de índices de imagen)
  • errorId = 0 y status = processing: Resolviendo captcha, espera 2 segundos e intenta de nuevo
  • errorId > 0: Error del sistema, devuelve código de error y descripción del error

Ejemplos de Integración

import requests
import time
 
def solve_funcaptcha_image(image_base64, question, api_key='TU_CLAVE_API'):
    # Paso 1: Crear tarea
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'FuncaptchaImageTask',
            'subType': '1',
            'image': image_base64,
            'other': question
        }
    }
    
    response = requests.post(create_task_url, json=create_task_payload)
    result = response.json()
    
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
    
    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:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']
        
        # Si status == 'processing', continuar el bucle
 
# Uso
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'  # Base64 de la imagen
question = 'Usa las flechas para rotar el objeto para que mire en la dirección de la mano'
solution = solve_funcaptcha_image(image_base64, question, 'TU_CLAVE_API')
print('Solución de FunCaptcha:', solution)

Códigos de Error Comunes

Código de ErrorDescripciónNotas
0éxitoÉxito
1procesandoProcesando
2faltan campos requeridosFaltan campos requeridos, verifica los parámetros nuevamente
3tarea no compatibleTipo de tarea no compatible
4creación de tarea fallidaCreación de tarea fallida
5la clave del cliente no existeLa clave API no existe, verifica la clave API nuevamente
6saldo de cuenta insuficienteSaldo de cuenta insuficiente, agrega más créditos
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

Mejores Prácticas

Para obtener los mejores resultados al usar la API de Achicaptcha para FunCaptcha Imagen, sigue estos principios:

1. Procesamiento de Imagen Base64

  • Solo acepta una sola imagen. Para usuarios de teléfono, fusiona en una imagen grande antes de enviar
  • Asegúrate de que la imagen esté correctamente codificada en formato Base64
  • Elimina el prefijo data:image/...;base64, si está presente
  • Verifica que el tamaño de la imagen sea razonable (no demasiado grande)

2. Pregunta

  • Proporciona la pregunta exacta del desafío FunCaptcha
  • La pregunta ayuda al sistema a comprender mejor el tipo de desafío
  • Ejemplo: "Usa las flechas para rotar el objeto para que mire en la dirección de la mano"

3. Intervalo de Sondeo

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

4. Procesamiento de Resultados

  • El resultado devuelto es un solo número (índice comenzando desde 0)
  • Usa este resultado para enviarlo a FunCaptcha

5. Lógica de Reintento

  • Implementa reintento para errores temporales como ERROR_NO_SLOT_AVAILABLE
  • Usa retroceso exponencial al reintentar
  • Limita los intentos máximos de reintento

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: