Vergleiche

CAPTCHA-Lösungszeiten messen: Benchmark-Methodik 2025

Hinweis: Die Benchmarks und Vergleichswerte in diesem Artikel basieren auf internen Messungen und können je nach Region, Traffic-Muster und CAPTCHA-Konfiguration variieren. Eigene Tests mit realen Workflows sollten die maßgebliche Grundlage für Entscheidungen sein.

Die einzige Lösungszeit, auf die Sie sich verlassen sollten, ist die, die Sie selbst gemessen haben. Ein veröffentlichter Median sagt nichts über Ihre Region, Ihre Serverlast oder Ihren CAPTCHA-Mix aus – und genau diese Faktoren entscheiden über den Durchsatz Ihrer Pipeline. Belastbar wird ein Vergleich erst, wenn Sie jeden Anbieter mit derselben Methodik, Region und Konfiguration vermessen und dabei Median, P90 und P99 sauber erheben.


Messmethodik: Median, P90 und P99 sauber erheben

Für jeden CAPTCHA-Typ:

  1. Submit task to provider API
  2. Start timing from submission
  3. Poll until result received
  4. Record total elapsed time
  5. Repeat 100 times per provider
  6. Calculate: median, P50, P90, P99

Gemessen wird durchgängig: Netzwerklatenz, Warteschlangenzeit und Lösungszeit fließen in denselben Wert ein. Der Median beschreibt den Normalfall, P90 und P99 die Ausreißer unter Last.


Vergleichsvorlage nach CAPTCHA-Typ

Tragen Sie Ihre Messwerte in die folgende Vorlage ein, um Anbieter unter denselben Bedingungen gegenüberzustellen:

CAPTCHA-Typ Anbieter Median (intern) P90 (intern) P99 (intern) Stichprobe Hinweis
reCAPTCHA v2 Anbieter A eintragen eintragen eintragen n=100 interne Stichprobe
reCAPTCHA v2 Anbieter B eintragen eintragen eintragen n=100 gleiche Region/Last
reCAPTCHA v3 Anbieter A eintragen eintragen eintragen n=100 Action-Parameter dokumentieren
Turnstile Anbieter A eintragen eintragen eintragen n=100 Widget-Modus notieren
Image/OCR Anbieter A eintragen eintragen eintragen n=100 Bildqualität protokollieren
GeeTest v3 Anbieter A eintragen eintragen eintragen n=100 Challenge-Typ protokollieren
BLS/Custom Anbieter A eintragen eintragen eintragen n=100 Support vorab prüfen

Von der Lösungszeit zur Kapazitätsplanung

Aus dem Median leiten Sie ab, wie viele Lösungen ein Slot pro Stunde schafft:

Kapazitätsformel:

  solves_per_hour = 3600 / gemessene_durchschnittszeit

Beispiel:
  3600s / 18s = 200 Lösungen pro Stunde und Slot

Nutzen Sie hier Ihre eigenen Messwerte pro Anbieter und CAPTCHA-Typ.

Für mehrere Slots multiplizieren Sie den Wert mit Ihrer Parallelität. CaptchaAI rechnet pro Thread ab – ein Thread ist ein gleichzeitig laufendes CAPTCHA, ein Slot hier also ein Thread:

Gleichzeitige Slots Formel Beispiel bei 18 s Mittelwert
1 3600 / avg_s 200/h
5 5 * 3600 / avg_s 1.000/h
10 10 * 3600 / avg_s 2.000/h
50 50 * 3600 / avg_s 10.000/h

Der BASIC-Tarif (15 $/Monat, 5 Threads) deckt fünf Slots ab; für mehr Durchsatz nutzen Sie die größeren Tarife.


Mess-Skript für die eigene Umgebung

Das Skript misst die End-to-End-Zeit über mehrere Durchläufe und gibt Median, Mittelwert und Streuung aus. Ersetzen Sie YOUR_API_KEY und die Sitekeys; setzen Sie runs in der Praxis auf 50 bis 100:

import requests
import time
import statistics


API_KEY = "YOUR_API_KEY"
BASE_URL = "https://ocr.captchaai.com"


def benchmark_solve(method, runs=10, **params):
    """Benchmark solve times for a CAPTCHA type."""
    times = []

    for i in range(runs):
        start = time.time()

        # Submit
        data = {"key": API_KEY, "method": method, "json": 1}
        data.update(params)
        resp = requests.post(f"{BASE_URL}/in.php", data=data)
        task_id = resp.json()["request"]

        # Poll
        while True:
            time.sleep(3)
            result = requests.get(f"{BASE_URL}/res.php", params={
                "key": API_KEY, "action": "get",
                "id": task_id, "json": 1,
            })
            r = result.json()
            if r["request"] != "CAPCHA_NOT_READY":
                break

        elapsed = time.time() - start
        times.append(elapsed)
        print(f"  Run {i+1}: {elapsed:.1f}s")

    print(f"\nResults ({runs} runs):")
    print(f"  Median: {statistics.median(times):.1f}s")
    print(f"  Mean:   {statistics.mean(times):.1f}s")
    print(f"  Min:    {min(times):.1f}s")
    print(f"  Max:    {max(times):.1f}s")
    print(f"  StdDev: {statistics.stdev(times):.1f}s")

    return times


# Benchmark reCAPTCHA v2
print("=== reCAPTCHA v2 ===")
benchmark_solve(
    "userrecaptcha",
    googlekey="SITE_KEY",
    pageurl="https://example.com",
    runs=10,
)

# Benchmark Turnstile
print("\n=== Turnstile ===")
benchmark_solve(
    "turnstile",
    sitekey="SITE_KEY",
    pageurl="https://example.com",
    runs=10,
)

Beispiel: Region und Latenz im DACH-Raum

Die Netzwerklatenz ist ein oft unterschätzter Anteil der End-to-End-Zeit. Wer seine Worker bei Hetzner in Falkenstein oder Nürnberg, bei netcup oder in einer Frankfurter Cloud-Region betreibt, misst andere Werte als aus einer US-Region. Messen Sie deshalb aus der Region, aus der später produktiv gelöst wird; ein Job in GitLab CI oder GitHub Actions hält die Reihe reproduzierbar.


Zeitfenster getrennt betrachten

Last und Tageszeit verschieben Messwerte spürbar – prüfen Sie die Fenster einzeln:

Zeitraum Ihre Messung Anbieter A Ihre Messung Anbieter B Notiz
Wochentag 9-17 eintragen eintragen Normalbetrieb
Wochentag 17-23 eintragen eintragen Abendlast
Nacht 23-06 eintragen eintragen Randzeit
Wochenende eintragen eintragen Wochenendlast
Feiertag/Event eintragen eintragen Sonderlast

Richtwerte richtig einordnen

  • Nutzen Sie interne Richtwerte als Startpunkt der Kapazitätsplanung, nicht als Zusage.
  • Validieren Sie jede Zahl in Ihrer eigenen Umgebung mit identischer Methodik.
  • Vergleichen Sie nie unterschiedliche Regionen, Lastmuster oder Abfrageintervalle.
  • Dokumentieren Sie Fehler- und Akzeptanzquote parallel zur Zeitmessung.

reCAPTCHA v3 zeigt teils kürzere Messwerte, weil keine interaktive Aufgabe erscheint – auch das bleibt ein Richtwert.


Fehlerbehebung bei abweichenden Messwerten

Problem Ursache Lösung
Langsamer als Benchmarks Netzwerklatenz Aus näherer Region testen, Abfrageintervall reduzieren
Hohe P99-Zeiten Gelegentlich komplexe CAPTCHAs Normale Varianz, Median zur Planung verwenden
Längere Lösungszeiten Anbieter unter Last Trends überwachen und ein Failover in Betracht ziehen
Die Abfrage ergab oft „nicht bereit". Abfrageintervall zu kurz 5-Sekunden-Intervalle statt 1-Sekunden-Intervalle nutzen

FAQ

Welche Faktoren verfälschen einen CAPTCHA-Benchmark am häufigsten?

Region, Lastzustand und Abfrageintervall. Halten Sie sie für alle Anbieter identisch, sonst messen Sie vor allem Latenz.

Wie viele Messdurchläufe brauche ich pro CAPTCHA-Typ?

50 bis 100 je Typ und Anbieter. Bei weniger schwankt der Median zu stark, und P90 sowie P99 werden von Ausreißern dominiert.

Warum liegen P90 und P99 deutlich über dem Median?

Weil komplexe Abfragen oder kurze Lastspitzen wenige Läufe verlängern. Der Median beschreibt den Normalfall, die hohen Perzentile die Reserve für Lastphasen.

Median oder Mittelwert für die Kapazitätsplanung?

Den Median, weil er robust gegen Ausreißer ist; P90 liefert den Puffer für Lastspitzen. Der Mittelwert wird durch lange Läufe verzerrt.


Verwandte Leitfäden


Messen Sie die CAPTCHA-Lösungszeit in Ihrer eigenen Umgebung – CaptchaAI bietet eine Benchmark-freundliche API.

Kommentare sind für diesen Artikel deaktiviert.