Solução de Problemas

Erros e correções comuns de CAPTCHA de imagem de grade

A resolução de CAPTCHA de imagem em grade pode falhar devido à qualidade da imagem, incompatibilidades de formato ou aplicação incorreta da solução. Aqui estão os erros mais comuns e como resolvê-los.


Erros de envio de imagem

ERROR_WRONG_FILE_EXTENSION

Causa: O arquivo enviado não tem um formato de imagem válido.

Correção:

  • Use apenas o formato PNG ou JPEG
  • Verifique se a string base64 está codificada corretamente
  • Remova o prefixo data:image/...;base64, antes de enviar
# WRONG — includes data URI prefix
body = "data:image/png;base64,iVBORw0KGgo..."

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

ERROR_TOO_BIG_CAPTCHA_FILESIZE

Causa: A imagem excede o tamanho máximo do arquivo (normalmente 600 KB).

Correção:

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

Causa: Arquivo vazio ou falha na extração da imagem.

Correção:

  • Verifique se o elemento da imagem foi carregado antes de extrair
  • Verifique se o atributo src não está vazio
  • Aguarde imagens carregadas lentamente
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"
)

Resolvendo erros

ERROR_CAPTCHA_UNSOLVABLE

Causa: a imagem está muito desfocada, distorcida ou os objetos estão irreconhecíveis.

Correção:

  • Capture a imagem em resolução total – não reduza a escala
  • Certifique-se de que nenhuma sobreposição ou marca d’água obscureça a grade
  • Tente novamente com um novo captcha (alguns desafios são inerentemente ambíguos)

Células erradas identificadas

Causa: Baixa qualidade de imagem ou captura parcial.

Correção:

  • Captura de tela de todo o elemento captcha, incluindo bordas
  • Não corte muito apertado – inclua alguns pixels de margem
  • Verifique salvando a imagem capturada e revisando-a manualmente
# 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()

Erros de aplicação de solução

Erros de índice off-by-one

Causa: Incompatibilidade entre a resposta da API baseada em 1 e a indexação de matriz baseada em 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

As células não respondem aos cliques

Causa: O destino do clique está errado — sobreposição, iframe ou shadow DOM.

Correção:

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

Grade dinâmica – os blocos mudam após clicar

Causa: grades dinâmicas estilo reCAPTCHA substituem os blocos.

Correção: Use o método token em vez do método de imagem para 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
})

Erros de tempo limite

O Captcha expira antes que a solução retorne

Causa: Grid CAPTCHAs normalmente expiram em 2 a 3 minutos.

Correção:

  • Envie a imagem imediatamente após a captura
  • Se a resolução demorar mais de 60 segundos, atualize e tente novamente

CAPCHA_NOT_READY faz loop indefinidamente

Causa: A tarefa pode ter falhado silenciosamente.

Correção: Defina uma contagem máxima de novas tentativas e trate as falhas:

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

Lista de verificação de depuração

Verifique Ação
Formato de imagem? PNG ou JPEG, devidamente codificado
Tamanho da imagem? Menos de 600 KB
Grade completa capturada? Incluir grade inteira com margens
Qualidade da imagem? Claro, não desfocado ou reduzido
Formato da solução? Analisar índices separados por vírgula corretamente
Base do índice? Converter baseado em 1 em baseado em 0 para matrizes
Contexto do iframe? Mude para iframe captcha, se presente
Captcha expirou? Envie imediatamente após a captura

Perguntas frequentes

Qual formato de imagem oferece os mais adequado resultados?

PNG produz os mais adequado resultados porque não tem perdas. JPEG funciona, mas a compactação pesada pode desfocar os limites das células e reduzir a precisão.

Devo incluir o texto das instruções com imagens de grade?

Para method=post com recaptcha=1, a instrução não é necessária — o solucionador identifica os objetos visualmente. Para method=bls, inclua sempre o texto das instruções.

Posso resolver vários CAPTCHAs de grade em paralelo?

Sim. Cada solução é independente. Envie várias tarefas e pesquise cada uma delas separadamente.

E se a grade tiver dimensões fora do padrão?

CaptchaAI analisa a imagem como está. Grades não padronizadas (por exemplo, 5×3, 2×4) são tratadas com base na análise visual, em vez de suposições de grade fixa.


Guias relacionados

Os comentários estão desativados para este artigo.