Solución de Problemas

Errores y solución de problemas de BLS CAPTCHA

La resolución de BLS CAPTCHA presenta desafíos únicos porque utiliza una implementación personalizada. A continuación se detallan los errores más comunes y sus soluciones.


Errores de envío de API

ERROR_BAD_PARAMETERS

Causa: Faltan parámetros requeridos, ya sean instrucciones o imágenes.

Arreglo:

# WRONG — missing instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "image_base64_1": img1, "json": 1
})

# CORRECT — include instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "instructions": "Select all images with a car",
    "image_base64_1": img1, "json": 1
})

ERROR_WRONG_FILE_EXTENSION

Causa: Los datos de la imagen no son base64 válidos o tienen un formato no compatible.

Arreglo:

  • Asegúrese de que las imágenes sean PNG o JPEG codificadas en base64
  • Eliminar el prefijo data:image/...;base64,
  • Verifique que la cadena base64 no esté truncada
import base64

# Strip the data URI prefix
src = img_element.get_attribute("src")
if src.startswith("data:image"):
    b64 = src.split(",")[1]
else:
    # Download and encode
    img_data = requests.get(src).content
    b64 = base64.b64encode(img_data).decode()

ERROR_CAPTCHA_UNSOLVABLE

Causa: Las imágenes son de muy baja calidad, están borrosas o las instrucciones son ambiguas.

Arreglo:

  • Capture imágenes a máxima resolución
  • Asegúrese de que el texto de las instrucciones se extraiga correctamente
  • Reintentar: algunos desafíos son inherentemente más difíciles

Errores de extracción de imágenes

Las imágenes se cargan dinámicamente

Problema: Las imágenes no están en el DOM cuando se carga la página por primera vez.

Solución: Espere a que el captcha se procese por completo:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait for captcha images to load
WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".captcha-image img"))
)

Las imágenes son lienzos, no elementos img.

Problema: Algunas implementaciones de BLS representan imágenes en elementos <canvas>.

Solución: Extraiga los datos del lienzo como base64:

canvas_elements = driver.find_elements(By.CSS_SELECTOR, ".captcha-canvas")
for i, canvas in enumerate(canvas_elements, 1):
    b64 = driver.execute_script(
        "return arguments[0].toDataURL('image/png').split(',')[1];",
        canvas
    )
    payload[f"image_base64_{i}"] = b64

Imágenes detrás del anti-hotlinking

Problema: Las URL de imágenes devuelven 403 cuando se obtienen fuera del navegador.

Solución: Extrae imágenes dentro del contexto del navegador:

# Get image data from within the browser
b64 = driver.execute_script("""
    var img = arguments[0];
    var canvas = document.createElement('canvas');
    canvas.width = img.naturalWidth;
    canvas.height = img.naturalHeight;
    canvas.getContext('2d').drawImage(img, 0, 0);
    return canvas.toDataURL('image/png').split(',')[1];
""", img_element)

Errores de aplicación de solución

Imágenes incorrectas seleccionadas

Causa: El orden de las imágenes no coincide entre la extracción y la visualización.

Solución: Mantener pedidos consistentes:

# Ensure images are indexed in display order
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
# The order of find_elements matches DOM order = display order
for i, img in enumerate(captcha_imgs, 1):
    payload[f"image_base64_{i}"] = extract_base64(img)

Los índices de solución no coinciden

Causa: CaptchaAI devuelve índices basados en 1, pero su código utiliza índices basados en 0.

Arreglo:

solution = result["request"]  # e.g., "1,3,5"
indices = [int(i) for i in solution.split(",")]

# Convert to 0-based for array access
for idx in indices:
    captcha_imgs[idx - 1].click()  # 1-based → 0-based

El envío del formulario falla después de la selección correcta

Causa: Faltan tokens o campos de formulario adicionales.

Solución: Verifique los campos ocultos que deben enviarse junto con el captcha:

# Look for hidden captcha tokens
hidden_fields = driver.find_elements(By.CSS_SELECTOR, "input[type='hidden']")
for field in hidden_fields:
    name = field.get_attribute("name")
    value = field.get_attribute("value")
    print(f"Hidden field: {name}={value}")

Errores de tiempo de espera

Captcha caduca antes de que se complete la resolución

Problema: BLS CAPTCHA tiene una ventana de validez corta.

Arreglo:

  • Extraiga imágenes y envíelas a CaptchaAI inmediatamente
  • No extraiga imágenes y luego espere antes de enviarlas
  • Si la resolución tarda más de 60 segundos, es posible que el captcha haya caducado: actualice y vuelva a intentarlo

Las consultas tardan demasiado

Solución: Asegúrese de realizar la consulta correctamente:

# Standard polling pattern
for _ in range(30):  # 30 attempts × 5 seconds = 150 seconds max
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()

    if result.get("status") == 1:
        return result["request"]
    if result.get("request") == "ERROR_CAPTCHA_UNSOLVABLE":
        # Don't keep polling — start over
        raise Exception("Unsolvable")

Lista de verificación de depuración

Verificación Acción
¿Instrucciones extraídas? Imprima y verifique el texto de instrucciones.
¿Imágenes válidas? Guarde base64 en un archivo y ábralo para verificar
¿El recuento de imágenes es correcto? Compare el número de imágenes enviadas con las mostradas
¿El orden de las imágenes es correcto? Verificar que el orden DOM coincida con el orden de visualización
¿Prefijo Base64 eliminado? Quitar data:image/...;base64,
¿Formato de solución? Analizar índices basados en 1 separados por comas
¿Conversión de índice? Resta 1 para acceder a la matriz basada en 0

Preguntas frecuentes

¿Cuántas imágenes debo enviar a CaptchaAI?

Envíe todas las imágenes que se muestran en el CAPTCHA, normalmente entre 3 y 9. Utilice image_base64_1 a image_base64_9.

¿Qué pasa si la instrucción es en un idioma distinto del inglés?

Envíe las instrucciones exactamente como se muestran. CaptchaAI maneja instrucciones multilingües.

¿Puedo precargar imágenes para acelerar la resolución?

No. BLS genera imágenes únicas por sesión. Debes extraerlos nuevos para cada instancia de captcha.

¿Qué pasa si BLS cambia su formato CAPTCHA?

Si el formato cambia, es posible que sea necesario actualizar el código de extracción de imágenes. Los parámetros de la API CaptchaAI (method=bls, instrucciones, imágenes) seguirán siendo los mismos.


Guías relacionadas

  • Cómo resolver BLS CAPTCHA paso a paso
  • Referencia de códigos de error CaptchaAI
Los comentarios están deshabilitados para este artículo.