Text-CAPTCHAs fordern Benutzer auf, verzerrte Buchstaben und Zahlen einzugeben. Bild-CAPTCHAs fordern Benutzer auf, bestimmte Objekte aus Fotos auszuwählen (Ampeln, Zebrastreifen, Busse). Beide zielen darauf ab, Bots zu blockieren, unterscheiden sich jedoch in der Sicherheitsstärke, der Benutzererfahrung, der Zugänglichkeit und der Automatisierungskomplexität. Dieser Vergleich hilft Entwicklern zu verstehen, mit welchem Typ sie konfrontiert sind und wie sich jeder in ihren Workflow integriert.
So funktionieren Text-CAPTCHAs
Text-CAPTCHAs stellen verzerrte Zeichen als Bild dar. Der Benutzer liest die Zeichen und gibt sie in ein Textfeld ein.
Gängige Text-CAPTCHA-Techniken
| Technik | Zweck |
|---|---|
| Charakterverzerrung | Knickt Buchstaben um, um einfaches OCR zu verhindern |
| Hintergrundgeräusche | Fügt Linien, Punkte oder Farbverläufe hinter dem Text hinzu |
| Zeichenüberlappung | Überlappt benachbarte Buchstaben, um eine Segmentierung zu verhindern |
| Schriftart-Randomisierung | Verwendet mehrere Schriftarten und -größen pro Herausforderung |
| Farbvariation | Legt die Zeichen- und Hintergrundfarben zufällig fest |
Text-CAPTCHA-Fluss
Server generates random string (e.g., "X7mK9p")
↓
Applies distortion: warping, noise, overlap
↓
Renders as PNG/JPEG image
↓
User reads characters, types into input field
↓
Server compares input against stored string (case-insensitive usually)
So funktionieren Bild-CAPTCHAs
Bild-CAPTCHAs stellen ein Raster mit Fotos dar und fordern den Benutzer auf, Bilder auszuwählen, die einer Kategorie entsprechen.
Gängige Bild-CAPTCHA-Typen
| Typ | Herausforderung | Anbieter |
|---|---|---|
| Gitterauswahl | „Alle Felder mit Ampeln auswählen“ | reCAPTCHA v2 |
| Bildbeschriftung | „Klicken Sie auf alle Bilder, die einen Bus enthalten“ | hCaptcha |
| Objektzählung | „Wie viele Fahrräder sind auf diesem Bild zu sehen?“ | Benutzerdefiniert |
| Rotation | „Bild in die richtige Ausrichtung drehen“ | FunCaptcha |
Bild-CAPTCHA-Fluss
Server selects images from a labeled dataset
↓
Presents 3×3 or 4×4 grid with a text prompt
↓
User clicks matching images
↓
Server validates selections against ground truth
↓
If fading images: new images load in place of selected ones (multi-round)
Direkter Vergleich
| Dimension | Text-CAPTCHA | Bild-CAPTCHA |
|---|---|---|
| Sicherheitsstufe | Niedrig – moderne OCR-Systeme erreichen laut Stichproben bis zu ~95 % | Hoch – erfordert Objekterkennung |
| Benutzerlösungszeit | 5-10 Sekunden | 10-30 Sekunden |
| Fehlerrate (Menschen) | 15-20 % | 8-15 % |
| Barrierefreiheit | Schlecht für Sehbehinderte | Sehr schlecht für Sehbehinderte |
| Mobile Freundlichkeit | Moderat (kleine Zeichen) | Gut (tippbasierte Auswahl) |
| Automatisierungsschwierigkeit | Einfach (OCR) | Schwer (Bildklassifizierung) |
| Kosten für die Bereitstellung | Kostenlos (selbst gehostet) | Kostenlos bis kostenpflichtig (Drittanbieter-API) |
| Bot-Bypass-Kosten | 0,50–1,00 $ pro 1.000 | 1,50–3,00 $ pro 1.000 |
| Datenerfassung | Keine | Kann ML-Modelle trainieren (reCAPTCHA) |
| Implementierungsaufwand | Minimal (serverseitige Bildgenerierung) | Moderat (JavaScript SDK-Integration) |
Erkennen von Text- und Bild-CAPTCHAs
Python-Erkennung
import requests
from bs4 import BeautifulSoup
import re
def detect_captcha_type(url):
"""Detect whether page uses text or image CAPTCHA."""
response = requests.get(url, timeout=10)
soup = BeautifulSoup(response.text, "html.parser")
html = response.text
result = {"text_captcha": False, "image_captcha": False, "provider": None}
# Check for reCAPTCHA (image-based)
if "google.com/recaptcha" in html or "g-recaptcha" in html:
result["image_captcha"] = True
result["provider"] = "reCAPTCHA"
return result
# Check for hCaptcha (image-based)
if "hcaptcha.com" in html or "h-captcha" in html:
result["image_captcha"] = True
result["provider"] = "hCaptcha"
return result
# Check for text CAPTCHA patterns
captcha_images = soup.find_all("img", attrs={
"src": re.compile(r"captcha", re.I)
})
captcha_inputs = soup.find_all("input", attrs={
"name": re.compile(r"captcha", re.I)
})
if captcha_images and captcha_inputs:
# Image with text input = text CAPTCHA
result["text_captcha"] = True
result["provider"] = "custom text CAPTCHA"
return result
# Check for FunCaptcha (image-based rotation)
if "funcaptcha" in html.lower() or "arkoselabs" in html.lower():
result["image_captcha"] = True
result["provider"] = "FunCaptcha"
return result
return result
captcha = detect_captcha_type("https://example.com/login")
print(captcha)
Node.js-Erkennung
const axios = require("axios");
const cheerio = require("cheerio");
async function detectCaptchaType(url) {
const { data: html } = await axios.get(url, { timeout: 10000 });
const $ = cheerio.load(html);
const result = { textCaptcha: false, imageCaptcha: false, provider: null };
// reCAPTCHA detection
if (html.includes("google.com/recaptcha") || html.includes("g-recaptcha")) {
result.imageCaptcha = true;
result.provider = "reCAPTCHA";
return result;
}
// hCaptcha detection
if (html.includes("hcaptcha.com") || html.includes("h-captcha")) {
result.imageCaptcha = true;
result.provider = "hCaptcha";
return result;
}
// Text CAPTCHA: image + input with "captcha" in name/class
const captchaImgs = $("img[src*='captcha' i]").length;
const captchaInputs = $("input[name*='captcha' i]").length;
if (captchaImgs > 0 && captchaInputs > 0) {
result.textCaptcha = true;
result.provider = "custom text CAPTCHA";
return result;
}
return result;
}
detectCaptchaType("https://example.com/login").then(console.log);
Text-CAPTCHAs mit CaptchaAI lösen
Text-CAPTCHAs basieren im Kern auf Bildern – der verzerrte Text wird als PNG oder JPEG gerendert. Die Bild-OCR-API von CaptchaAI verarbeitet diese direkt.
import requests
import base64
import time
API_KEY = "YOUR_API_KEY"
# Get the CAPTCHA image
captcha_url = "https://example.com/captcha.png"
image_data = requests.get(captcha_url).content
b64 = base64.b64encode(image_data).decode()
# Submit to CaptchaAI
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "base64",
"body": b64,
"json": 1,
})
task_id = submit.json()["request"]
# Poll for result
for _ in range(30):
time.sleep(3)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if resp.get("status") == 1:
print(f"CAPTCHA text: {resp['request']}")
break
CaptchaAI unterstützt über 27.500 Bild-CAPTCHA-Typen, darunter verzerrter Text, mathematische Gleichungen und Zeichenerkennungsherausforderungen.
Wann welcher CAPTCHA-Typ verwendet werden soll
Wählen Sie Text-CAPTCHAs, wenn:
- Sie benötigen eine selbstgehostete Lösung ohne Abhängigkeiten
- Ihre Benutzerbasis hat Anforderungen an die Barrierefreiheit (Text-CAPTCHAs können Audio-Alternativen haben)
- Der Bot-Verkehr ist gering und Sie benötigen einen grundlegenden Spam-Schutz
- Sie möchten die Datenerfassung durch Dritte vermeiden
Wählen Sie Bild-CAPTCHAs, wenn:
- Sie benötigen einen starken Bot-Schutz
- Ihre Anwendung verarbeitet sensible Daten (Login, Zahlungen)
- Sie können eine höhere Benutzerreibung akzeptieren
- Sie möchten eine verwaltete Lösung mit kontinuierlichen Updates
Wählen Sie keines von beiden, wenn:
- Unsichtbare CAPTCHAs (reCAPTCHA v3, Cloudflare Turnstile) können Ihren Datenverkehr ohne Benutzerinteraktion verarbeiten
Häufig gestellte Fragen
Welcher CAPTCHA-Typ ist leichter zugänglich?
Keiner der Typen ist wirklich zugänglich. Text-CAPTCHAs sind für sehbehinderte Benutzer schwierig, es sei denn, es wird eine Audio-Alternative bereitgestellt. Bild-CAPTCHAs sind schlimmer – Rasterauswahlaufgaben sind mit Bildschirmleseprogrammen unbrauchbar. Unsichtbare CAPTCHAs (reCAPTCHA v3, Cloudflare Turnstile) sind die am besten zugängliche Option, da sie keine Benutzerinteraktion erfordern.
Sind Text-CAPTCHAs im Jahr 2025 noch wirksam?
Nein. Moderne OCR-Engines lösen Standardtext-CAPTCHAs mit einer Genauigkeit von über 95 %. Stark verzerrte Text-CAPTCHAs können dies auf 80–85 % reduzieren, allerdings auf Kosten der menschlichen Lesbarkeit. Text-CAPTCHAs blockieren jetzt mehr legitime Benutzer als Bots.
Welcher Typ ist mit einer API günstiger zu lösen?
Text-CAPTCHAs sind günstiger. Die OCR-basierten Lösungen kosten etwa 0,50 bis 1,00 US-Dollar pro 1.000 Lösungen. Bild-CAPTCHAs (reCAPTCHA, hCaptcha) kosten 1,50 bis 3,00 US-Dollar pro 1.000 Lösungen, da sie eine komplexere Verarbeitung erfordern.
Kann CaptchaAI sowohl Text- als auch Bild-CAPTCHAs lösen?
Ja. CaptchaAI löst Text-CAPTCHAs über seine Bild-OCR-API (über 27.500 unterstützte Typen) und Bild-CAPTCHAs über seine reCAPTCHA-, hCaptcha- und Rasterbildlöser.
Zusammenfassung
Text-CAPTCHAs sind einfach, kostengünstig bereitzustellen und mit OCR leicht zu umgehen. Bild-CAPTCHAs sind schwieriger zu automatisieren und bieten einen stärkeren Bot-Schutz auf Kosten höherer Benutzerreibung. Für Entwickler, die Automatisierungsworkflows erstellen, erfordern Text-CAPTCHAs nur OCR (leicht zu handhaben).CaptchaAIs Bild-OCR), während Bild-CAPTCHAs spezielle Löser wie die reCAPTCHA- oder hCaptcha-APIs von CaptchaAI erfordern. Im Jahr 2025 geht der Trend zu unsichtbaren CAPTCHAs, die die Reibungsverluste für den Benutzer vollständig beseitigen.
Verwandte Leitfäden
- Captchaai vs. Capmonster Cloud-Vergleich
- Geetest vs. Cloudflare Turnstile Vergleich
- Cloudflare Turnstile 403 Nach Token-Fix