Résolution de Problèmes

Erreurs et correctifs courants de Grid Image CAPTCHA

La résolution de CAPTCHA d’image de grille peut échouer en raison de la qualité de l’image, de différences de format ou d’une application incorrecte de la solution. Voici les erreurs les plus courantes et comment les résoudre.


Erreurs de soumission d'images

ERROR_WRONG_FILE_EXTENSION

Cause : Le fichier téléchargé n'est pas un format d'image valide.

Correction :

  • Utilisez uniquement le format PNG ou JPEG
  • Vérifiez que la chaîne base64 est correctement codée
  • Supprimez le préfixe data:image/...;base64, avant d'envoyer
# WRONG — includes data URI prefix
body = "data:image/png;base64,iVBORw0KGgo..."

# CORRECT — raw base64 only
body = "iVBORw0KGgo..."

ERROR_TOO_BIG_CAPTCHA_FILESIZE

Cause : L'image dépasse la taille maximale du fichier (généralement 600 Ko).

Correction :

from PIL import Image
import io
import base64

# Resize if too large
img = Image.open("captcha.png")
if img.width > 600:
    ratio = 600 / img.width
    img = img.resize((600, int(img.height * ratio)), Image.LANCZOS)

buffer = io.BytesIO()
img.save(buffer, format="PNG")
b64 = base64.b64encode(buffer.getvalue()).decode()

ERROR_ZERO_CAPTCHA_FILESIZE

Cause : Fichier vide ou échec de l'extraction de l'image.

Correction :

  • Vérifiez que l'élément d'image a été chargé avant de l'extraire
  • Vérifiez que l'attribut src n'est pas vide
  • Attendez les images chargées paresseusement
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait for image to load
WebDriverWait(driver, 10).until(
    lambda d: d.find_element(By.CSS_SELECTOR, ".captcha img").get_attribute("complete") == "true"
)

Résoudre les erreurs

ERROR_CAPTCHA_UNSOLVABLE

Cause : L'image est trop floue, déformée ou les objets sont méconnaissables.

Correction :

  • Capturez l'image en pleine résolution - ne réduisez pas l'échelle
  • Assurez-vous qu’aucune superposition ou filigrane n’obscurcit la grille
  • Réessayez avec un nouveau captcha (certains défis sont intrinsèquement ambigus)

Mauvaises cellules identifiées

Cause : Faible qualité d'image ou capture partielle.

Correction :

  • Capture d'écran de l'intégralité de l'élément captcha, y compris les bordures
  • Ne recadrez pas trop serré : incluez quelques pixels de marge
  • Vérifiez en enregistrant l'image capturée et en la examinant manuellement
# Take a proper element screenshot
captcha_el = driver.find_element(By.CSS_SELECTOR, "#captcha-container")
captcha_el.screenshot("debug_captcha.png")

# Open and check manually
from PIL import Image
Image.open("debug_captcha.png").show()

Erreurs d'application de la solution

Erreurs d'index aléatoires

Cause : Incompatibilité entre la réponse API de base 1 et l'indexation de tableau de base 0.

# API returns "1,3,5" (1-based)
solution = "1,3,5"
indices = [int(i) for i in solution.split(",")]

# DON'T: use directly as array index
# cells[1], cells[3], cells[5]  ← WRONG (off by one)

# DO: convert to 0-based
for idx in indices:
    cells[idx - 1].click()  # 1→0, 3→2, 5→4

Les cellules ne répondent pas aux clics

Cause : La cible du clic est incorrecte : superposition, iframe ou Shadow DOM.

Correction :

# Check if captcha is in an iframe
iframes = driver.find_elements(By.TAG_NAME, "iframe")
for iframe in iframes:
    if "captcha" in iframe.get_attribute("src").lower():
        driver.switch_to.frame(iframe)
        break

# Now find and click cells
cells = driver.find_elements(By.CSS_SELECTOR, ".grid-cell")

Grille dynamique — les tuiles changent après avoir cliqué

Cause : Les grilles dynamiques de style reCAPTCHA remplacent les vignettes.

Correction : Utilisez la méthode token au lieu de la méthode image pour reCAPTCHA :

# Token method handles dynamic grids automatically
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1
})

Erreurs de délai d'attente

Le captcha expire avant le retour de la solution

Cause : Les CAPTCHA de grille expirent généralement au bout de 2 à 3 minutes.

Correction :

  • Soumettez l'image immédiatement après la capture
  • Si la résolution prend plus de 60 secondes, actualisez et réessayez.

CAPCHA_NOT_READY boucle indéfiniment

Cause : La tâche a peut-être échoué silencieusement.

Correction : Définissez un nombre maximal de tentatives et gérez les échecs :

for attempt in range(30):
    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") not in ["CAPCHA_NOT_READY"]:
        break  # Actual error, stop polling

raise Exception("Grid captcha solve failed — refresh and retry")

Liste de contrôle de débogage

Vérifier Action
Format des images ? PNG ou JPEG, correctement encodés
Taille de l'image ? Moins de 600 Ko
Grille complète capturée ? Inclure la grille entière avec les marges
Qualité des images ? Clair, ni flou ni réduit
Format de solution ? Analyser correctement les index séparés par des virgules
Base d'indexation ? Convertir la base 1 en base 0 pour les tableaux
Contexte Iframe ? Passer à l'iframe captcha si présent
Captcha expiré ? Soumettre immédiatement après la capture

FAQ

Quel format d'image donne les meilleurs résultats ?

PNG produit les meilleurs résultats car il est sans perte. JPEG fonctionne mais une compression importante peut brouiller les limites des cellules et réduire la précision.

Dois-je inclure le texte d’instructions avec des images de grille ?

Pour method=post avec recaptcha=1, l'instruction n'est pas requise — le solveur identifie les objets visuellement. Pour method=bls, incluez toujours le texte d’instruction.

Puis-je résoudre plusieurs CAPTCHA de grille en parallèle ?

Oui. Chaque résolution est indépendante. Soumettez plusieurs tâches et interrogez chacune séparément.

Que faire si la grille a des dimensions non standard ?

CaptchaAI analyse l'image telle quelle. Les grilles non standard (par exemple 5 × 3, 2 × 4) sont traitées sur la base d'une analyse visuelle plutôt que d'hypothèses de grille fixes.


Guides associés

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