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
srcn'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
- Comment résoudre automatiquement Grid Image CAPTCHA
- Comment fonctionnent les défis Grid Image CAPTCHA
- Référence des codes d'erreur CaptchaAI