Skip to content
API
Captcha Geetest

Captcha de Imagen Geetest

Descripción General

Geetest es un sistema de captcha popular en China y países asiáticos, que utiliza desafíos interactivos como arrastre de rompecabezas y reconocimiento de imágenes. Proporcionamos servicios para resolver todos los tipos de Imagen Geetest (Geetest v3, Geetest v4, ...) en navegadores, simuladores y granjas de teléfonos.

🧩

Esta documentación te guía a través del manejo del Captcha Geetest que requiere que los usuarios identifiquen y hagan clic en objetos en secuencia sobre la imagen de fondo. Para captcha tipo arrastre, sigue las instrucciones para Captcha de Tiktok tipo arrastre.

Geetest Captcha

1. Crear Tarea

Formato de Envío de Imagen

Separa las imágenes de iconos y las imágenes de fondo como se muestra a continuación Muestra de Imagen de Clic

Solicitud

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

Parámetros

Nombre del ParámetroTipo de Dato¿Requerido?Descripción
clientKeystringClave API
task.typestringGeetestImageCaptchaTask
task.imagestringLista de imágenes en base64 siguiendo el principio: icono_1|icono_2|...|icono_n|fondo (Cadenas Base64 separadas por |)
task.subTypeintTipo de captcha: 7: Seleccionar objetos en orden

Ejemplo de Solicitud

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "TU_CLAVE_API",
  "task": {
    "type": "GeetestImageCaptchaTask",
    "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
    "subType": 7
  }
}

Nota: El parámetro image debe ser una cadena base64 de imágenes de iconos y fondo, separadas por |. Orden: icono_1|icono_2|icono_3|...|fondo

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": "x1,y1,x2,y2,x3,y3"
}

Explicación del Estado

  • errorId = 0 y status = ready: Resuelto exitosamente, lee el resultado en solution
  • errorId = 1 y status = processing: Resolviendo captcha, espera 1-2 segundos e intenta de nuevo
  • errorId distinto de 0 y 1: Error del sistema, devuelve código de error y descripción

Significado del Resultado

  • solution: Devuelve coordenadas para hacer clic en el captcha, formato x1,y1,x2,y2,x3,y3,...
    • Cada par (x, y) representa coordenadas de píxeles para hacer clic en la imagen de fondo
    • El orden de clic corresponde al orden de los iconos mostrados

Ejemplos de Integración

import requests
import time
 
def solve_geetest_image(base64_images, sub_type=7, api_key='TU_CLAVE_API'):
    # base64_images: "icono1|icono2|icono3|fondo" - cadena base64 separada por |
    
    # Paso 1: Crear tarea
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'GeetestImageCaptchaTask',
            'image': base64_images,
            'subType': sub_type
        }
    }
    
    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'] not in [0, 1]:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']  # "x1,y1,x2,y2,x3,y3"
        
        # Si status == 'processing', continuar el bucle
 
# Uso
# Supongamos que tienes imágenes en base64
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
 
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'TU_CLAVE_API')
print('Coordenadas de Geetest:', solution)  # "x1,y1,x2,y2,x3,y3"
 
# Analizar coordenadas y usar
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
    x, y = coords[i], coords[i + 1]
    print(f'Hacer clic en ({x}, {y})')
    # Realizar clic en las coordenadas (x, y)

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 Imagen Geetest, sigue estos principios:

1. Preparar Imágenes en el Formato Correcto

  • Todas las imágenes deben estar codificadas en base64
  • Orden de las imágenes: icono_1|icono_2|...|icono_n|fondo
  • Las imágenes base64 están separadas por el carácter |
  • Asegúrate de que la imagen de fondo sea la última en la cadena

2. Usar los Resultados Correctamente

  • El resultado devuelto es una cadena de coordenadas: x1,y1,x2,y2,x3,y3,...
  • Cada par (x, y) son coordenadas de píxeles en la imagen de fondo
  • El orden de clic corresponde al orden de los iconos mostrados
  • Haz clic precisamente en las coordenadas para completar el captcha

3. Intervalo de Sondeo

  • Espera al menos 1-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)

4. Manejo de Errores

  • Verifica errorId = 1 para el estado de procesamiento
  • Reintenta para errores temporales (errorId = 6, 7)
  • Crea una nueva tarea si la tarea actual falla
  • Limita los intentos máximos de reintento

5. 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
  • Realiza llamadas a la API desde el backend/servidor

Enlaces útiles: