Résolution de Problèmes

Erreurs BLS CAPTCHA et dépannage

La résolution de BLS CAPTCHA présente des défis uniques car elle utilise une implémentation personnalisée. Voici les erreurs les plus courantes et leurs solutions.


Erreurs de soumission d'API

ERROR_BAD_PARAMETERS

Cause : Paramètres requis manquants (instructions ou images).

Correction :

# 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

Cause : Les données d'image ne sont pas en base64 valide ou sont dans un format non pris en charge.

Correction :

  • Assurez-vous que les images sont codées en PNG ou JPEG en base64.
  • Supprimez le préfixe data:image/...;base64,
  • Vérifiez que la chaîne base64 n'est pas tronquée
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

Cause : Les images sont de trop mauvaise qualité, floues ou les instructions sont ambiguës.

Correction :

  • Capturez des images en pleine résolution
  • Assurez-vous que le texte des instructions est extrait correctement
  • Réessayez : certains défis sont intrinsèquement plus difficiles

Erreurs d'extraction d'images

Les images se chargent dynamiquement

Problème : Les images ne sont pas dans le DOM lors du premier chargement de la page.

Correction : Attendez que le captcha s'affiche complètement :

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"))
)

Les images sont des toiles, pas des éléments img

Problème : Certaines implémentations BLS restituent des images sur des éléments <canvas>.

Correction : Extrayez les données du canevas en 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

Images derrière l’anti-hotlinking

Problème : Les URL d'image renvoient 403 lorsqu'elles sont récupérées en dehors du navigateur.

Correction : Extrayez les images dans le contexte du navigateur :

# 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)

Erreurs d'application de la solution

Mauvaises images sélectionnées

Cause : Incompatibilité dans l'ordre des images entre l'extraction et l'affichage.

Correction : Maintenez un ordre cohérent :

# 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)

Les indices de solution ne correspondent pas

Cause : CaptchaAI renvoie des indices de base 1, mais votre code utilise des indices de base 0.

Correction :

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

La soumission du formulaire échoue après une sélection correcte

Cause : Des champs de formulaire ou des jetons supplémentaires sont manquants.

Correction : Vérifiez les champs masqués qui doivent être soumis avec le 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}")

Erreurs de délai d'attente

Le captcha expire avant la fin de la résolution

Problème : BLS CAPTCHA a une courte fenêtre de validité.

Correction :

  • Extrayez les images et soumettez-les immédiatement à CaptchaAI
  • N'extrayez pas d'images puis attendez avant de les soumettre
  • Si la résolution prend plus de 60 secondes, le captcha a peut-être expiré : actualisez et réessayez.

Le sondage prend trop de temps

Correction : Assurez-vous que vous interrogez correctement :

# 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")

Liste de contrôle de débogage

Vérifier Action
Instructions extraites ? Imprimez et vérifiez le texte des instructions
Images valides ? Enregistrer en base64 dans un fichier et ouvrir pour vérifier
Le nombre d'images est-il correct ? Comparez le nombre d'images envoyées et affichées
L’ordre des images est-il correct ? Vérifier que l'ordre DOM correspond à l'ordre d'affichage
Le préfixe Base64 supprimé ? Supprimer data:image/...;base64,
Format de solution ? Analyser les indices basés sur 1 séparés par des virgules
Conversion d'index ? Soustraire 1 pour accéder au tableau basé sur 0

FAQ

Combien d’images dois-je envoyer à CaptchaAI ?

Envoyez toutes les images affichées dans le CAPTCHA, généralement 3 à 9. Utilisez image_base64_1 à image_base64_9.

Que se passe-t-il si l'enseignement est dans une langue autre que l'anglais ?

Envoyez l’instruction exactement telle qu’elle est affichée. CaptchaAI gère les instructions multilingues.

Puis-je précharger des images pour accélérer la résolution ?

Non. BLS génère des images uniques par session. Vous devez les extraire à nouveau pour chaque instance de captcha.

Et si BLS changeait son format CAPTCHA ?

Si le format change, le code d'extraction d'image devra peut-être être mis à jour. Les paramètres de l'API CaptchaAI (method=bls, instructions, images) resteront les mêmes.


Guides associés

Les commentaires sont désactivés pour cet article.