Fast jedes fehlgeschlagene Rasterbild-CAPTCHA lässt sich auf eine von vier Stellen zurückführen: das übermittelte Bild, die Objekterkennung, das Anwenden der zurückgegebenen Zellen oder ein abgelaufenes CAPTCHA. Statt blind neu zu versuchen, ordnen Sie den Fehlercode zuerst einer dieser Stufen zu – dann ist die Korrektur meist eine Sache von Minuten. Dieser Leitfaden nimmt jeden CaptchaAI-Fehlercode einzeln durch und zeigt den passenden Fix mit Python-Beispiel.
Aus der Praxis (DACH): Ein Selenium-Worker auf einem Hetzner-VPS greift ein Rasterbild von einem Visa-Termin-Portal (etwa BLS) ab. Läuft der Worker im Rechenzentrum langsamer als lokal, tickt die kurze Gültigkeit des CAPTCHAs im Hintergrund – und aus einem eigentlich sauberen Bild wird ein Timeout. Genau solche Ketten aus mehreren kleinen Ursachen deckt dieser Artikel auf.
Rasterbild-CAPTCHA-Fehler in 30 Sekunden eingrenzen
Bevor Sie in den Code steigen, arbeiten Sie diese Triage-Tabelle von oben nach unten ab. In den meisten Fällen finden Sie die Ursache schon hier.
| Prüfpunkt | Erwartung |
|---|---|
| Bildformat? | PNG oder JPEG, sauber codiert |
| Bildgröße? | Unter 600 KB |
| Vollständiges Raster erfasst? | Gesamtes Raster inklusive Ränder |
| Bildqualität? | Scharf, nicht verschwommen oder herunterskaliert |
| Lösungsformat? | Kommagetrennte Indizes korrekt geparst |
| Indexbasis? | 1-basiert in 0-basiert für Arrays umgerechnet |
| iframe-Kontext? | Bei Bedarf in den CAPTCHA-iframe gewechselt |
| CAPTCHA abgelaufen? | Bild sofort nach der Erfassung übermittelt |
Fehler beim Übermitteln des Bildes
Diese Fehlercodes treten auf, bevor der Solver das Bild überhaupt zu Gesicht bekommt. Fast immer stimmt etwas mit Format, Größe oder Codierung nicht.
ERROR_WRONG_FILE_EXTENSION
Ursache: Die übermittelte Datei liegt nicht in einem gültigen Bildformat vor. So beheben Sie ihn:
- Verwenden Sie ausschließlich PNG oder JPEG.
- Prüfen Sie, ob die Base64-Zeichenfolge korrekt codiert ist.
- Entfernen Sie vor dem Senden das Präfix
data:image/...;base64,.
# WRONG — includes data URI prefix
body = "data:image/png;base64,iVBORw0KGgo..."
# CORRECT — raw base64 only
body = "iVBORw0KGgo..."
ERROR_TOO_BIG_CAPTCHA_FILESIZE
Ursache: Das Bild überschreitet die maximale Dateigröße (in der Regel 600 KB). Skalieren Sie es vor dem Senden herunter:
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
Ursache: Leere Datei oder fehlgeschlagene Bildextraktion. So beheben Sie ihn:
- Stellen Sie sicher, dass das Bildelement geladen ist, bevor Sie es extrahieren.
- Prüfen Sie, ob das Attribut
srcgefüllt ist. - Warten Sie auf verzögert nachgeladene Bilder.
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"
)
Fehler bei Bildqualität und Objekterkennung
Kommt das Bild sauber an, wird aber trotzdem falsch oder gar nicht gelöst, liegt es meist an der Bildqualität oder am Ausschnitt.
ERROR_CAPTCHA_UNSOLVABLE
Ursache: Das Bild ist zu verschwommen oder verzerrt, oder die Objekte sind unkenntlich. Das können Sie versuchen:
- Erfassen Sie das Bild in voller Auflösung – nicht herunterskalieren.
- Achten Sie darauf, dass keine Overlays oder Wasserzeichen das Raster verdecken.
- Versuchen Sie es mit einem neuen CAPTCHA erneut (manche Abfragen sind von Natur aus mehrdeutig).
Falsche Zellen erkannt
Ursache: Geringe Bildqualität oder unvollständiger Ausschnitt. So beheben Sie das:
- Erstellen Sie einen Screenshot des gesamten CAPTCHA-Elements samt Rändern.
- Schneiden Sie nicht zu eng zu – lassen Sie ein paar Pixel Rand stehen.
- Kontrollieren Sie das Ergebnis, indem Sie das erfasste Bild speichern und manuell ansehen.
# 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()
Fehler beim Anwenden der Lösung
Hier ist das Bild korrekt gelöst, aber Ihr Code setzt die zurückgegebenen Zellen falsch um. Diese Fehler sind besonders tückisch, weil die API-Antwort völlig in Ordnung aussieht.
Off-by-one-Fehler beim Zellindex
Ursache: Abweichung zwischen der 1-basierten API-Antwort und der 0-basierten Array-Indizierung.
# 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
Tipp: Prüfen Sie die Indexbasis, bevor Sie an der Objekterkennung zweifeln. Ein Off-by-one-Fehler ist die mit Abstand häufigste Ursache dafür, dass ein sauber gelöstes Raster trotzdem falsch angeklickt wird.
Zellen reagieren nicht auf Klicks
Ursache: Das Klickziel stimmt nicht – Overlay, iframe oder Shadow DOM. Wechseln Sie zuerst in den richtigen Frame:
# 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")
Dynamisches Raster – Kacheln wechseln nach dem Klick
Ursache: Dynamische Raster im reCAPTCHA-Stil ersetzen einzelne Kacheln nach dem Anklicken.
Fix: Verwenden Sie bei reCAPTCHA die Token-Methode statt der Image-Methode:
# 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
})
Tipp: Bei reCAPTCHA-Rastern übernimmt die Token-Methode das Nachladen der Kacheln vollständig. Sie klicken dann keine einzelnen Felder mehr an, sondern erhalten direkt ein fertiges Token zurück.
Timeout- und Polling-Fehler
Rasterbild-CAPTCHAs sind kurzlebig. Wer das Bild zu spät übermittelt oder beim Abfragen des Ergebnisses keine Abbruchbedingung setzt, landet in genau den Fehlern dieser Stufe.
CAPTCHA läuft ab, bevor die Lösung zurückkommt
Ursache: Grid-CAPTCHAs laufen in der Regel innerhalb von 2–3 Minuten ab. So vermeiden Sie den Ablauf:
- Übermitteln Sie das Bild unmittelbar nach der Erfassung.
- Dauert die Lösung länger als 60 Sekunden, aktualisieren Sie das CAPTCHA und versuchen es erneut.
CAPCHA_NOT_READY läuft in einer Endlosschleife
Ursache: Die Aufgabe ist möglicherweise stillschweigend fehlgeschlagen.
Fix: Setzen Sie ein Limit für die Wiederholungen und behandeln Sie Fehler aktiv:
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")
Der Statuswert CAPCHA_NOT_READY (so die tatsächliche Schreibweise der API) bedeutet lediglich „noch nicht fertig". Jeder andere Rückgabewert ist ein echter Fehler – dann beenden Sie das Polling sofort, statt weiter abzufragen.
FAQ
Wie lange bleibt ein Rasterbild-CAPTCHA gültig?
Meist 2–3 Minuten. Übermitteln Sie das Bild darum direkt nach der Erfassung und halten Sie die Zeit zwischen Screenshot und Übermittlung so kurz wie möglich. Läuft Ihr Worker in einem Rechenzentrum, planen Sie den zusätzlichen Netzwerk-Overhead ein.
Warum wählt mein Skript trotz scharfem Bild die falschen Zellen aus?
In den allermeisten Fällen ist es ein Off-by-one-Fehler: Die API liefert 1-basierte Indizes, Ihre Array-Zugriffe sind aber 0-basiert. Ziehen Sie vor dem Klicken jeweils 1 ab. Reagieren die Zellen gar nicht, prüfen Sie, ob das Raster in einem iframe liegt.
PNG oder JPEG für Rasterbild-CAPTCHAs?
PNG, wann immer möglich. Das Format ist verlustfrei und hält die Zellgrenzen scharf. JPEG funktioniert ebenfalls, aber starke Komprimierung kann Kanten verwischen und die Genauigkeit senken.
Welche Methode eignet sich für dynamische reCAPTCHA-Raster?
Die Token-Methode (method=userrecaptcha), nicht die Image-Methode. Dynamische Raster ersetzen Kacheln nach jedem Klick – die Token-Methode übernimmt diesen Ablauf vollständig und liefert direkt ein Token zurück.
Behandelt CaptchaAI auch Raster mit ungewöhnlichen Abmessungen?
Ja. CaptchaAI wertet das Bild so aus, wie es ist. Auch nicht standardmäßige Raster (etwa 5×3 oder 2×4) werden per visueller Analyse verarbeitet, nicht anhand fester Rasterannahmen.
Fazit
Ordnen Sie jeden Fehler zuerst einer der vier Stufen zu: Bildübermittlung, Objekterkennung, Anwenden der Zellen oder Ablauf. Bei falsch geklickten Zellen prüfen Sie immer zuerst die Indexbasis und den iframe-Kontext; bei Timeouts übermitteln Sie das Bild so schnell wie möglich nach der Erfassung. Damit sind die meisten Rasterbild-Fehler in wenigen Minuten eingegrenzt.
Verwandte Leitfäden
- Rasterbild-CAPTCHAs automatisch lösen
- Rasterbild-CAPTCHAs mit Node.js lösen
- API-Antwortformate und Fehlercodes