Les CAPTCHA d'image de grille (défis d'image reCAPTCHA v2) renvoient des indices de cellule comme solution. Lorsque les cellules renvoyées sont erronées (en cliquant sur les mauvaises vignettes ou en obtenant ERROR_CAPTCHA_UNSOLVABLE), le problème réside généralement dans la façon dont vous soumettez l'image, le paramètre de taille de la grille ou le texte des instructions.
Diagnostic rapide avant de changer le code
| Symptom | Cause plus probable |
|---|---|
| Les clics sont décalés mais le bon objet est bien présent | La taille de grille envoyée ne correspond pas au vrai défi |
| Toutes les réponses semblent fausses | L'image capturée n'est pas la grille brute attendue |
| Les résultats varient fortement d'un essai à l'autre | L'instruction texte est ambiguë ou tronquée |
| L'erreur revient seulement sur certains sites | Le rendu du widget ou la capture iframe change selon la cible |
Comment fonctionne la résolution d'images en grille
CaptchaAI reçoit votre image de grille, analyse chaque cellule et renvoie un tableau d'indices correspondant à l'instruction. Les cellules sont numérotées de gauche à droite et de haut en bas :
3×3 Grid: 4×4 Grid:
1 2 3 1 2 3 4
4 5 6 5 6 7 8
7 8 9 9 10 11 12
13 14 15 16
La réponse ressemble à : [1, 3, 6, 9] – ce qui signifie que les cellules 1, 3, 6 et 9 contiennent les objets cibles.
Erreurs et correctifs courants
Mauvaise taille de grille
L'erreur de coordonnées la plus courante. Si le CAPTCHA est une grille 4×4 mais que vous envoyez grid_size=3x3, la numérotation des cellules est erronée et les mauvaises tuiles sont sélectionnées.
# WRONG — 4×4 grid sent as 3×3
data = {
"key": "YOUR_API_KEY",
"method": "post",
"grid_size": "3x3", # Wrong!
"img_type": "recaptcha",
"instructions": "traffic lights",
"json": 1
}
# CORRECT — match the actual grid
data = {
"key": "YOUR_API_KEY",
"method": "post",
"grid_size": "4x4", # Correct
"img_type": "recaptcha",
"instructions": "traffic lights",
"json": 1
}
Comment détecter la taille de la grille par programmation :
from PIL import Image
img = Image.open("grid_captcha.png")
width, height = img.size
# reCAPTCHA grids are square. 3×3 tiles are ~100px each, 4×4 tiles are ~75px each
tile_width = width // 3
if width % 4 == 0 and (width // 4) < 100:
grid_size = "4x4"
else:
grid_size = "3x3"
print(f"Detected grid size: {grid_size}")
Image recadrée ou modifiée
L’envoi d’une image recadrée, redimensionnée ou enveloppée d’une capture d’écran modifie l’alignement de la grille. CaptchaAI a besoin de l'image CAPTCHA originale telle qu'elle est rendue.
Correction : capturez l'image directement à partir de l'iframe reCAPTCHA, et non d'une capture d'écran pleine page.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# Switch to reCAPTCHA iframe
iframe = driver.find_element(By.CSS_SELECTOR, 'iframe[title*="recaptcha"]')
driver.switch_to.frame(iframe)
# Get the grid image element
grid_img = driver.find_element(By.CSS_SELECTOR, "img.rc-image-tile-wrapper img")
grid_img.screenshot("grid_captcha.png") # Captures just the grid, not the whole page
Instructions erronées ou vagues
Le texte de l'instruction doit correspondre à ce que demande le CAPTCHA. Des instructions vagues conduisent à de mauvaises sélections de cellules.
# WRONG — too vague
data["instructions"] = "select images"
# CORRECT — specific instruction from the CAPTCHA
data["instructions"] = "crosswalks"
Valeurs d'instruction communes : crosswalks, traffic lights, cars, buses, motorcycles, bicycles, fire hydrants, stairs, bridges, parking meters.
Décalage d'index de cellule (basé sur 0 ou basé sur 1)
CaptchaAI renvoie des indices de cellules basés sur 1. Si votre code d'automatisation utilise une indexation basée sur 0, vous devez soustraire 1.
import json
# CaptchaAI returns 1-based indices
solution = json.loads(result["request"]) # e.g., [1, 3, 6, 9]
# Convert to 0-based for Selenium click automation
zero_based = [cell - 1 for cell in solution]
# Click grid cells using 0-based index
tiles = driver.find_elements(By.CSS_SELECTOR, ".rc-image-tile-wrapper img")
for idx in zero_based:
tiles[idx].click()
Problèmes de format d'image
CaptchaAI prend en charge JPG, JPEG, PNG et GIF. D'autres formats renvoient ERROR_WRONG_FILE_EXTENSION.
# WRONG — WebP or BMP
files = {"file": open("grid.webp", "rb")} # Not supported
# CORRECT — convert to PNG first
from PIL import Image
img = Image.open("grid.webp")
img.save("grid.png", "PNG")
files = {"file": open("grid.png", "rb")}
Arbre de décision
Grid cells are wrong
↓
Is grid_size correct (3x3 or 4x4)? → No → Fix grid_size parameter
↓ Yes
Is the image the original CAPTCHA (not cropped)? → No → Capture directly from iframe
↓ Yes
Is instruction text specific? → No → Use exact CAPTCHA instruction text
↓ Yes
Using 1-based indexing for clicks? → No → Convert solution to 0-based
↓ Yes
Image in supported format (JPG/PNG)? → No → Convert image format
↓ Yes
Report tiles to CaptchaAI via reportbad
Signaler des solutions incorrectes
Si les coordonnées sont systématiquement erronées malgré des paramètres corrects, signalez la solution :
requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "reportbad",
"id": task_id,
"json": 1
})
Cela aide CaptchaAI à améliorer la précision et peut rembourser le coût de résolution.
FAQ
Quelles tailles de grille sont prises en charge par CaptchaAI ?
Grilles 3×3 et 4×4. Il s’agit des formats standard de défi d’image reCAPTCHA.
Pourquoi est-ce que j'obtiens ERROR_CAPTCHA_UNSOLVABLE pour les images de grille ?
La qualité de l'image est trop faible, le texte d'instruction est erroné ou l'image n'est pas une grille CAPTCHA reconnaissable. Vérifiez que vous envoyez l’image originale non recadrée avec les instructions correctes.
Mes cellules sont décalées d'une. Ce qui est faux?
CaptchaAI renvoie des indices basés sur 1. Si votre code attend une base 0, soustrayez 1 de chaque index.
Résolvez les CAPTCHA d’image de grille avec CaptchaAI
Obtenez des solutions d'images de grille précises surcaptchaai.com.
Guides associés
- Comment résoudre les Grid Image CAPTCHA à l'aide de l'API
- Référence des codes d'erreur CaptchaAI
- Image CAPTCHA Mauvaise réponse Optimisation de la qualité
- Validation de la demande ERROR_BAD_PARAMETERS