Hintergründe

CAPTCHA-Typen für Mathematik und Logik erklärt

Ob Sie ein Mathe-CAPTCHA mit einer Zeile Regex oder mit einem OCR-Aufruf lösen, entscheidet eine einzige Frage: Wird die Rechenaufgabe als HTML-Text ausgeliefert oder als Bild? Steht „7 + 3“ im Quelltext, genügt ein Parser. Steckt die Gleichung in einem verrauschten PNG, brauchen Sie Texterkennung. Genau diese Weiche ist der Kern dieses Artikels.

Mathe-CAPTCHAs stellen Rechenaufgaben wie „Was ist 7 + 3?“ oder „15 – 8 = ?“. Logik-CAPTCHAs erweitern das um wortbasierte Fragen wie „Welche Farbe hat der Himmel?“. Beide gehören zu den ältesten CAPTCHA-Typen und sind auf WordPress-Seiten, in Kontaktformularen und in Alt-Anwendungen weiterhin allgegenwärtig – ein simples Eingabefeld für eine Gleichung ist das verräterische Merkmal.


Wo Ihnen Mathe- und Logik-CAPTCHAs begegnen

Das klassische Beispiel aus dem DACH-Raum ist das Kontaktformular eines kleinen Handwerksbetriebs auf WordPress. Wegen der Impressumspflicht ist dort fast immer eine erreichbare Kontaktadresse hinterlegt – und genau dieses Formular wird per Plugin wie „Really Simple CAPTCHA“ oder „Math Captcha“ gegen Spam abgesichert. Da es personenbezogene Daten verarbeitet, gehört die DSGVO ohnehin auf die Prüfliste; das Mathe-CAPTCHA ist dabei die sichtbarste, aber schwächste Schutzschicht.

Dass diese Variante trotz ihrer Schwäche überlebt, hat handfeste Gründe:

  1. Einfachheit – keine externen API-Abhängigkeiten, keine JavaScript-SDKs.
  2. WordPress-Ökosystem – „Math Captcha“ und „Really Simple CAPTCHA“ sind millionenfach installiert.
  3. Geringe Reibung – eine Kopfrechenaufgabe lösen Nutzer schneller als eine Bildauswahl.
  4. Barrierefreiheit – textbasierte Mathe-CAPTCHAs funktionieren mit Screenreadern.
  5. Alt-Systeme – Anwendungen, die vor den modernen CAPTCHA-Diensten entstanden.

Welche Arten von Mathe- und Logik-CAPTCHAs es gibt

1. Einfache arithmetische CAPTCHAs

Eine simple Additions-, Subtraktions- oder Multiplikationsaufgabe wie „Was ist 3 + 5?“, „12 – 4 = ?“ oder „6 × 7 = ?“. Die Frage steht entweder als reiner Text im Quelltext, ist also leicht auszulesen, oder sie ist in ein Bild eingebettet und erfordert dann OCR.

2. Als Bild gerenderte Mathe-CAPTCHAs

Die Gleichung wird als Grafik ausgeliefert, um das direkte Auslesen zu verhindern – etwa „14 + 23 = ?“ in verzerrter Schrift oder mit farbigen Ziffern auf Rauschhintergrund. Hier führt der Weg zwingend über OCR, das die Gleichung aus dem Bild liest, gefolgt von der Berechnung.

3. Wortbasierte Mathe-CAPTCHAs

Zahlen stehen als Wörter statt als Ziffern, etwa „Was ist sieben plus drei?“ oder „Geben Sie das Ergebnis von zwölf minus fünf ein“. Das erfordert NLP-Parsing, um die Wörter in Zahlen zu überführen, bevor gerechnet wird.

4. Logikfragen

Nicht-arithmetische Fragen, die Allgemeinwissen voraussetzen: „Welche Farbe hat Gras?“, „Wie viele Beine hat ein Hund?“ oder „Ist Feuer heiß oder kalt?“. Sie stammen meist aus einem festen Fragenkatalog und benötigen eine Wissensdatenbank oder ein Sprachmodell.

5. Sequenz- oder Muster-CAPTCHAs

Zeigen eine Zahlenfolge und fragen nach dem nächsten Wert, etwa „Was kommt als Nächstes: 2, 4, 6, 8, ?“ oder „Vervollständigen Sie das Muster: 1, 1, 2, 3, 5, ?“. Nötig ist eine Logik zur Mustererkennung.


Wie ein Mathe-CAPTCHA technisch abläuft

Ablauf beim textbasierten Mathe-CAPTCHA

Server generates random equation (e.g., "7 + 3")
    ↓
Stores answer (10) in server-side session
    ↓
Renders equation as HTML text or image
    ↓
User submits answer via form field
    ↓
Server compares submitted answer to stored answer
    ↓
Match → Form submitted     Mismatch → Error shown

Ablauf beim bildbasierten Mathe-CAPTCHA

Server generates random equation
    ↓
Renders equation into a distorted image (noise, lines, color shifts)
    ↓
Image served to client via <img> tag
    ↓
User reads image, computes answer, types in form field
    ↓
Server validates submitted answer

Entscheidend ist: Beim Text-Ablauf steht die Aufgabe im DOM; beim Bild-Ablauf sehen Sie nur ein <img>-Tag – die Gleichung existiert nur als Pixel.


Mathe-CAPTCHAs in der Automatisierung erkennen

Bevor Sie lösen, müssen Sie zuverlässig erkennen, welche Variante vor Ihnen liegt. Die folgenden Beispiele prüfen eine Seite auf typische Text- und Bildmuster.

Erkennung mit Python

import requests
from bs4 import BeautifulSoup
import re

def detect_math_captcha(url):
    """Detect common math CAPTCHA patterns on a page."""
    response = requests.get(url, timeout=10)
    soup = BeautifulSoup(response.text, "html.parser")
    html = response.text.lower()

    indicators = {
        "text_math": False,
        "image_math": False,
        "logic_question": False,
    }

    # Check for text-based math questions
    math_patterns = [
        r"what is \d+\s*[\+\-\×\*]\s*\d+",
        r"\d+\s*[\+\-\×\*]\s*\d+\s*=\s*\?",
        r"solve:\s*\d+",
        r"type the (result|answer|sum)",
    ]
    for pattern in math_patterns:
        if re.search(pattern, html):
            indicators["text_math"] = True
            break

    # Check for CAPTCHA images near math-related labels
    captcha_images = soup.find_all("img", attrs={
        "alt": re.compile(r"captcha|math|verify", re.I)
    })
    if captcha_images:
        indicators["image_math"] = True

    # Check for logic questions
    logic_patterns = [
        r"what color is",
        r"how many legs",
        r"what comes next",
        r"is .+ hot or cold",
    ]
    for pattern in logic_patterns:
        if re.search(pattern, html):
            indicators["logic_question"] = True
            break

    return indicators

result = detect_math_captcha("https://example.com/contact")
print(result)

Erkennung mit Node.js

const axios = require("axios");
const cheerio = require("cheerio");

async function detectMathCaptcha(url) {
    const { data: html } = await axios.get(url, { timeout: 10000 });
    const $ = cheerio.load(html);
    const lower = html.toLowerCase();

    const indicators = {
        textMath: false,
        imageMath: false,
        logicQuestion: false,
    };

    // Text-based math patterns
    const mathPatterns = [
        /what is \d+\s*[+\-×*]\s*\d+/,
        /\d+\s*[+\-×*]\s*\d+\s*=\s*\?/,
        /solve:\s*\d+/,
        /type the (result|answer|sum)/,
    ];

    for (const pattern of mathPatterns) {
        if (pattern.test(lower)) {
            indicators.textMath = true;
            break;
        }
    }

    // Check for CAPTCHA images
    $("img").each((_, el) => {
        const alt = ($(el).attr("alt") || "").toLowerCase();
        if (/captcha|math|verify/.test(alt)) {
            indicators.imageMath = true;
        }
    });

    return indicators;
}

detectMathCaptcha("https://example.com/contact").then(console.log);

Meldet die Erkennung text_math, genügen Regex oder DOM-Parsing; bei image_math führt der Weg über OCR.


Bild-Mathe-CAPTCHAs mit OCR lösen

Steckt die Gleichung in einem Bild, extrahiert OCR den Text und ein kleiner Parser rechnet das Ergebnis aus. Bei CaptchaAI übermitteln Sie das Bild base64-kodiert und fragen das Ergebnis per Polling ab.

CaptchaAI für bildbasierte Mathe-CAPTCHAs einsetzen

import requests
import time
import re

API_KEY = "YOUR_API_KEY"
CAPTCHA_IMAGE_URL = "https://example.com/captcha.png"

# Download the CAPTCHA image
image_data = requests.get(CAPTCHA_IMAGE_URL).content

# Submit to CaptchaAI OCR
import base64
b64_image = base64.b64encode(image_data).decode()

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "base64",
    "body": b64_image,
    "json": 1,
})

task_id = submit.json().get("request")

# Poll for result
for _ in range(30):
    time.sleep(3)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    })
    data = result.json()
    if data.get("status") == 1:
        ocr_text = data["request"]  # e.g., "7 + 3"
        print(f"OCR result: {ocr_text}")

        # Parse and compute the answer
        match = re.match(r"(\d+)\s*([+\-*/×])\s*(\d+)", ocr_text)
        if match:
            a, op, b = int(match.group(1)), match.group(2), int(match.group(3))
            ops = {"+": a + b, "-": a - b, "*": a * b, "×": a * b, "/": a // b}
            answer = ops.get(op)
            print(f"Answer: {answer}")
        break
    elif "CAPCHA_NOT_READY" in str(data):
        continue

OCR liefert nur die Zeichenkette „7 + 3“, das Ausrechnen übernimmt Ihr eigener Parser – so lassen sich jederzeit weitere Operatoren ergänzen.


Mathe-CAPTCHAs im Vergleich zu anderen CAPTCHA-Typen

Merkmal Mathe-CAPTCHAs reCAPTCHA v2 hCaptcha Slider-CAPTCHAs
Nutzerreibung Niedrig (schnelles Kopfrechnen) Mittel (Bildauswahl) Mittel (Bildauswahl) Niedrig (einfaches Ziehen)
Bot-Resistenz Sehr niedrig Hoch Hoch Mittel
Barrierefreiheit Gut (textbasierte Varianten) Schwach (sehabhängig) Schwach (sehabhängig) Schwach (motorisch abhängig)
Kosten Kostenlos (selbst gehostet) Kostenloses Kontingent Kostenloses Kontingent Variiert
Typischer Einsatz WordPress, Kontaktformulare Login, Registrierung Login, Registrierung E-Commerce, Asien

Häufige Fragen

Woran erkenne ich, ob ein Mathe-CAPTCHA als Text oder als Bild ausgeliefert wird?

Prüfen Sie den Quelltext: Steht die Gleichung als lesbarer Text im DOM, ist es ein Text-CAPTCHA und Regex genügt. Sehen Sie stattdessen nur ein <img>-Tag mit einem alt-Attribut wie „captcha“ oder „math“, liegt die Aufgabe als Bild vor und Sie brauchen OCR. Die Erkennungsskripte oben automatisieren genau diese Unterscheidung.

Welche WordPress-Plugins liefern Mathe-CAPTCHAs aus?

Am häufigsten „Really Simple CAPTCHA“ (oft als Contact-Form-7-Erweiterung) und „Math Captcha“. Sie erzeugen serverseitig eine Zufallsgleichung und legen die Antwort in der Session ab. Beide rendern je nach Einstellung als Text oder als Bild – das entscheidet, ob Sie parsen oder OCR einsetzen.

Fallen für Bild-Mathe-CAPTCHAs zusätzliche Kosten pro Lösung an?

Nein. CaptchaAI rechnet Thread-basiert ab, nicht pro Lösung: Sie zahlen für gleichzeitige Threads, die enthaltenen Lösungen pro Thread sind unbegrenzt. Der Einstieg ist BASIC (15 $/Monat, 5 Threads); STANDARD kostet 30 $/Monat (15 Threads). Es gibt keine Aufpreise nach CAPTCHA-Typ und keine Tageslimits.

Reichen Mathe-CAPTCHAs als Bot-Schutz aus?

Nur gegen die einfachsten Spam-Bots. Klartext-Varianten liest jedes HTML-fähige Skript automatisch aus, Bild-Varianten fallen per OCR. Für ernsthaften Schutz führt der Weg zu einem verhaltensbasierten System wie Cloudflare Turnstile (läuft unsichtbar, keine Interaktion) oder reCAPTCHA v3 mit Score-Bewertung.


Fazit

Mathe- und Logik-CAPTCHAs sind der einfachste Abfragetyp und typisch für WordPress-Kontaktformulare und Alt-Systeme. Die eine Frage, die alles steuert, ist das Ausgabeformat: Textbasierte Varianten lesen Sie direkt aus dem HTML, bildbasierte Varianten erfordern OCR, um die Gleichung zurückzugewinnen, und danach simple Arithmetik. Für den Bild-Fall extrahiert die CaptchaAI Bild-OCR-API die Gleichung, das Ausrechnen bleibt in Ihrem Code. So einfach diese CAPTCHAs zu automatisieren sind – dank geringer Reibung und Barrierefreiheit bleiben sie im Einsatz.

Verwandte Artikel

Kommentare sind für diesen Artikel deaktiviert.