Temu Grid Captcha
Descripción general
Temu Grid Captcha es una captcha de selección en cuadrícula: la página muestra una cuadrícula de mosaicos y el solucionador debe devolver qué celdas hacer clic (índices de base 0, orden de fila: de izquierda a derecha, de arriba a abajo).
El campo task.image codifica la imagen de cuadrícula como una sola cadena Base64. No se necesita un campo other adicional.

1. Crear tarea
Formato de envío de imagen
Imagen de cuadrícula

Solicitud
POST https://api.achicaptcha.com/createTask
Parámetros
| Nombre del parámetro | Tipo de dato | ¿Requerido? | Descripción |
|---|---|---|---|
clientKey | string | yes | API key |
task.type | string | yes | GridCaptcha |
task.subType | string | yes | temu |
task.image | string | yes | Imagen de cuadrícula codificada en Base64 |
Ejemplo de solicitud
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GridCaptcha",
"subType": "temu",
"image": "BASE64_GRID_IMAGE"
}
}Respuesta
Cuando tiene éxito, el servidor devuelve errorId = 0 y taskId
{
"errorId": 0,
"taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}2. Obtener resultado
Solicitud
POST https://api.achicaptcha.com/getTaskResult
Parámetros
| Nombre del parámetro | Tipo de dato | ¿Requerido? | Descripción |
|---|---|---|---|
clientKey | string | yes | API key |
taskId | string | yes | TaskId obtenido del paso (1) |
Ejemplo de solicitud
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Respuesta
{
"errorId": 0,
"status": "ready",
"solution": {
"click": "0,2,5"
}
}solution.click es una cadena de índices de celdas de base 0 (orden de fila) separados por comas para hacer clic en la cuadrícula.
Explicación de estados
errorId = 0ystatus = ready: Resuelto exitosamente, leer índices de celdas ensolution.clickerrorId = 0ystatus = processing: Aún resolviendo, esperar 2 segundos y consultar de nuevoerrorId > 0: Error del sistema, verificarerrorCodeyerrorDescription
Ejemplos de integración
import requests
import base64
import time
def solve_temu(grid_path, api_key='YOUR_API_KEY'):
with open(grid_path, 'rb') as f:
grid_b64 = base64.b64encode(f.read()).decode()
# Paso 1: Crear tarea
create_resp = requests.post(
'https://api.achicaptcha.com/createTask',
json={
'clientKey': api_key,
'task': {
'type': 'GridCaptcha',
'subType': 'temu',
'image': grid_b64
}
}
)
result = create_resp.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Paso 2: Consultar resultado
while True:
time.sleep(2)
poll_resp = requests.post(
'https://api.achicaptcha.com/getTaskResult',
json={'clientKey': api_key, 'taskId': task_id}
)
result = poll_resp.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution']['click'] # e.g. "0,2,5"
# Uso
indices = solve_temu('grid.jpg', 'YOUR_API_KEY')
print('Celdas a hacer clic:', indices)Códigos de error comunes
| Código de error | Descripción | Notas |
|---|---|---|
| 0 | success | Éxito |
| 1 | processing | Procesando |
| 2 | missing required fields | Faltan campos requeridos, verificar parámetros |
| 3 | task not supported | Tipo de tarea no soportado |
| 4 | task creation failed | Creación de tarea fallida |
| 5 | client key does not exist | API key no existe, verificar clave |
| 6 | insufficient account balance | Saldo insuficiente, añadir créditos |
| 7 | task failed, please create a new task | Tarea fallida, crear una nueva tarea |
| 8 | task ID does not exist | ID de tarea no existe |
Mejores prácticas
Para obtener los mejores resultados al usar la API de Achicaptcha para Temu Grid Captcha, siga estos principios:
1. Codificación de imágenes
- Envíe solo la imagen de cuadrícula como una sola cadena Base64
- No incluya el prefijo
data:image/...;base64,— solo Base64 sin procesar - Asegúrese de que la imagen esté completamente cargada y codificada antes de enviar
2. Intervalo de consulta
- Espere al menos 2 segundos entre verificaciones de resultado
- No sature la API con solicitudes consecutivas
- Establezca un tiempo de espera para evitar bucles infinitos (recomendado: 60 segundos)
3. Procesamiento de resultados
solution.clickes una cadena de índices de celdas de base 0 (orden de fila, de izquierda a derecha, de arriba a abajo) separados por comas- Divida por
,y convierta a enteros antes de hacer clic en las celdas de cuadrícula correspondientes
4. Lógica de reintento
- Implemente reintentos para errores temporales como
ERROR_NO_SLOT_AVAILABLE - Use retroceso exponencial al reintentar
- Limite el número máximo de intentos de reintento
5. Seguridad de la API key
- No codifique su API key en el código fuente
- Use variables de entorno o un gestor de secretos
- Nunca exponga la API key en el lado del cliente
Enlaces útiles: