Die Lösung von BLS CAPTCHA stellt besondere Herausforderungen dar, da eine benutzerdefinierte Implementierung verwendet wird. Hier sind die häufigsten Fehler und ihre Lösungen.
API-Übermittlungsfehler
ERROR_BAD_PARAMETERS
Ursache: Erforderliche Parameter fehlen – entweder Anweisungen oder Bilder.
Fix:
# WRONG — missing instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "bls",
"image_base64_1": img1, "json": 1
})
# CORRECT — include instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "bls",
"instructions": "Select all images with a car",
"image_base64_1": img1, "json": 1
})
ERROR_WRONG_FILE_EXTENSION
Ursache: Bilddaten haben kein gültiges Base64-Format oder sind ein nicht unterstütztes Format.
Fix:
- Stellen Sie sicher, dass die Bilder Base64-kodiertes PNG oder JPEG sind
- Entfernen Sie das Präfix
data:image/...;base64, - Stellen Sie sicher, dass die Base64-Zeichenfolge nicht abgeschnitten ist
import base64
# Strip the data URI prefix
src = img_element.get_attribute("src")
if src.startswith("data:image"):
b64 = src.split(",")[1]
else:
# Download and encode
img_data = requests.get(src).content
b64 = base64.b64encode(img_data).decode()
ERROR_CAPTCHA_UNSOLVABLE
Ursache: Die Bilder sind von zu geringer Qualität, verschwommen oder die Anleitung ist mehrdeutig.
Fix:
- Nehmen Sie Bilder in voller Auflösung auf
- Stellen Sie sicher, dass der Anweisungstext korrekt extrahiert wird
- Versuchen Sie es erneut – einige Herausforderungen sind von Natur aus schwieriger
Fehler bei der Bildextraktion
Bilder werden dynamisch geladen
Problem: Bilder befinden sich beim ersten Laden der Seite nicht im DOM.
Fix: Warten Sie, bis das Captcha vollständig gerendert ist:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Wait for captcha images to load
WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".captcha-image img"))
)
Bilder sind Leinwände, keine img-Elemente
Problem: Einige BLS-Implementierungen rendern Bilder auf <canvas>-Elementen.
Fix: Canvas-Daten als Base64 extrahieren:
canvas_elements = driver.find_elements(By.CSS_SELECTOR, ".captcha-canvas")
for i, canvas in enumerate(canvas_elements, 1):
b64 = driver.execute_script(
"return arguments[0].toDataURL('image/png').split(',')[1];",
canvas
)
payload[f"image_base64_{i}"] = b64
Bilder hinter Anti-Hotlinking
Problem: Bild-URLs geben 403 zurück, wenn sie außerhalb des Browsers abgerufen werden.
Fix: Bilder im Browserkontext extrahieren:
# Get image data from within the browser
b64 = driver.execute_script("""
var img = arguments[0];
var canvas = document.createElement('canvas');
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
canvas.getContext('2d').drawImage(img, 0, 0);
return canvas.toDataURL('image/png').split(',')[1];
""", img_element)
Lösungsanwendungsfehler
Falsche Bilder ausgewählt
Ursache: Nichtübereinstimmung der Bildreihenfolge zwischen Extraktion und Anzeige.
Fix: Konsistente Reihenfolge beibehalten:
# Ensure images are indexed in display order
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
# The order of find_elements matches DOM order = display order
for i, img in enumerate(captcha_imgs, 1):
payload[f"image_base64_{i}"] = extract_base64(img)
Lösungsindizes stimmen nicht überein
Ursache: CaptchaAI gibt 1-basierte Indizes zurück, aber Ihr Code verwendet 0-basierte Indizes.
Fix:
solution = result["request"] # e.g., "1,3,5"
indices = [int(i) for i in solution.split(",")]
# Convert to 0-based for array access
for idx in indices:
captcha_imgs[idx - 1].click() # 1-based → 0-based
Das Absenden des Formulars schlägt nach korrekter Auswahl fehl
Ursache: Zusätzliche Formularfelder oder Token fehlen.
Fix: Suchen Sie nach versteckten Feldern, die zusammen mit dem Captcha übermittelt werden müssen:
# Look for hidden captcha tokens
hidden_fields = driver.find_elements(By.CSS_SELECTOR, "input[type='hidden']")
for field in hidden_fields:
name = field.get_attribute("name")
value = field.get_attribute("value")
print(f"Hidden field: {name}={value}")
Timeout-Fehler
Captcha läuft ab, bevor die Lösung abgeschlossen ist
Problem: BLS CAPTCHA hat ein kurzes Gültigkeitsfenster.
Fix:
- Bilder extrahieren und sofort an CaptchaAI senden
- Extrahieren Sie keine Bilder und warten Sie dann mit dem Absenden
- Wenn die Lösung länger als 60 Sekunden dauert, ist das Captcha möglicherweise abgelaufen – aktualisieren Sie es und versuchen Sie es erneut
Die Abfrage dauert zu lange
Fix: Stellen Sie sicher, dass Sie die Umfrage korrekt durchführen:
# Standard polling pattern
for _ in range(30): # 30 attempts × 5 seconds = 150 seconds max
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") == "ERROR_CAPTCHA_UNSOLVABLE":
# Don't keep polling — start over
raise Exception("Unsolvable")
Debugging-Checkliste
| Überprüfen | Aktion |
|---|---|
| Anweisungen extrahiert? | Drucken Sie den Anweisungstext aus und überprüfen Sie ihn |
| Bilder gültig? | Base64 in einer Datei speichern und zur Überprüfung öffnen |
| Bildanzahl korrekt? | Vergleichen Sie die Anzahl der gesendeten und angezeigten Bilder |
| Bildreihenfolge korrekt? | Überprüfen Sie, ob die DOM-Reihenfolge mit der Anzeigereihenfolge übereinstimmt |
| Base64-Präfix entfernt? | Entfernen Sie data:image/...;base64, |
| Lösungsformat? | Analysieren Sie durch Kommas getrennte 1-basierte Indizes |
| Indexkonvertierung? | Subtrahieren Sie 1 für einen 0-basierten Array-Zugriff |
FAQ
Wie viele Bilder soll ich an CaptchaAI senden?
Senden Sie alle im CAPTCHA angezeigten Bilder, normalerweise 3–9. Verwenden Sie image_base64_1 bis image_base64_9.
Was ist, wenn die Anleitung in einer nicht-englischen Sprache erfolgt?
Senden Sie die Anleitung genau wie angezeigt. CaptchaAI verarbeitet mehrsprachige Anweisungen.
Kann ich Bilder vorab laden, um die Lösung zu beschleunigen?
Nein. BLS generiert pro Sitzung einzigartige Bilder. Sie müssen sie für jede Captcha-Instanz neu extrahieren.
Was passiert, wenn BLS sein CAPTCHA-Format ändert?
Wenn sich das Format ändert, muss der Bildextraktionscode möglicherweise aktualisiert werden. Die CaptchaAI-API-Parameter (method=bls, Anweisungen, Bilder) bleiben gleich.
Verwandte Leitfäden
- So lösen Sie BLS CAPTCHA Schritt für Schritt
- BLS CAPTCHA Instructions Code erklärt
- CaptchaAI API-Antwortformate