CAPTCHAs de imagem de grade (desafios de imagem reCAPTCHA v2) retornam índices de células como solução. Quando as células retornadas estão erradas - clicando nos blocos errados ou obtendo ERROR_CAPTCHA_UNSOLVABLE - o problema geralmente está na forma como você envia a imagem, no parâmetro de tamanho da grade ou no texto da instrução.
Como funciona a resolução de imagens em grade
CaptchaAI recebe sua imagem de grade, analisa cada célula e retorna uma matriz de índices que correspondem à instrução. As células são numeradas da esquerda para a direita, de cima para baixo:
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
A resposta é semelhante a: [1, 3, 6, 9] — significando que as células 1, 3, 6 e 9 contêm os objetos de destino.
Erros e correções comuns
Tamanho de grade incorreto
O erro de coordenadas mais comum. Se o CAPTCHA for uma grade 4×4, mas você enviar grid_size=3x3, a numeração das células estará errada e os blocos errados serão selecionados.
# 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
}
Como detectar o tamanho da grade programaticamente:
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}")
Imagem cortada ou modificada
Enviar uma imagem cortada, redimensionada ou com captura de tela altera o alinhamento da grade. CaptchaAI precisa da imagem CAPTCHA original exatamente como foi renderizada.
Correção: capture a imagem diretamente do iframe reCAPTCHA, não uma captura de tela de página inteira.
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
Instruções erradas ou vagas
O texto da instrução deve corresponder ao que o CAPTCHA pede. Instruções vagas levam a seleções erradas de células.
# WRONG — too vague
data["instructions"] = "select images"
# CORRECT — specific instruction from the CAPTCHA
data["instructions"] = "crosswalks"
Valores de instrução comuns: crosswalks, traffic lights, cars, buses, motorcycles, bicycles, fire hydrants, stairs, bridges, parking meters.
Deslocamento do índice de célula (baseado em 0 vs baseado em 1)
CaptchaAI retorna índices de células baseados em 1. Se o seu código de automação usar indexação baseada em 0, você precisará subtrair 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()
Problemas de formato de imagem
CaptchaAI suporta JPG, JPEG, PNG e GIF. Outros formatos retornam 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")}
Árvore de decisão
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
Relatando soluções incorretas
Se as coordenadas estiverem consistentemente erradas apesar dos parâmetros corretos, relate a solução:
requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "reportbad",
"id": task_id,
"json": 1
})
Isso ajuda CaptchaAI a aprimorar a precisão e pode reembolsar o custo de resolução.
Verificações de validação de grade
- Confirme se as dimensões da grade correspondem às coordenadas esperadas pelo alvo antes de enviar qualquer resposta.
- Normalize o dimensionamento da imagem e a matemática da janela de visualização para que os pontos de clique sobrevivam às alterações do zoom do navegador e da proporção de pixels do dispositivo.
- Rejeite respostas que estejam fora da grade declarada, em vez de encaminhar silenciosamente coordenadas incorretas.
Perguntas frequentes
Quais tamanhos de grade o CaptchaAI suporta?
Grades 3×3 e 4×4. Estes são os formatos padrão de desafio de imagem reCAPTCHA.
Por que obtenho ERROR_CAPTCHA_UNSOLVABLE para imagens de grade?
A qualidade da imagem é muito baixa, o texto das instruções está errado ou a imagem não é uma grade CAPTCHA reconhecível. Verifique se você está enviando a imagem original não cortada com as instruções corretas.
Minhas células são compensadas por um. O que há de errado?
CaptchaAI retorna índices baseados em 1. Se o seu código espera baseado em 0, subtraia 1 de cada índice.
Resolva CAPTCHAs de imagem de grade com CaptchaAI
Obtenha soluções precisas de imagens de grade emcaptchaai.com.
Guias relacionados
- Como resolver Grid Image CAPTCHAs usando API
- Referência de códigos de erro CaptchaAI
- Imagem CAPTCHA Otimização de qualidade de resposta errada
- Validação de solicitação ERROR_BAD_PARAMETERS