Fehlerbehebung

BLS CAPTCHA Fehler und Fehlerbehebung

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

Kommentare sind für diesen Artikel deaktiviert.