Hintergründe

Unsichtbare CAPTCHA-Systeme erklärt: Wie sie funktionieren

Unsichtbare CAPTCHAs verifizieren Benutzer, ohne eine sichtbare Herausforderung anzuzeigen. Es gibt kein Kontrollkästchen zum Anklicken, kein Bildraster zum Lösen und keinen Text zum Eingeben. Die Überprüfung erfolgt vollständig im Hintergrund durch JavaScript, das das Browserverhalten, Gerätesignale und die Netzwerkreputation analysiert. Wenn Ihr Automatisierungsworkflow auf ein Formular stößt, das für einige Benutzer sauber übermittelt wird, andere jedoch blockiert – ohne sichtbares CAPTCHA auf der Seite – haben Sie es mit einem unsichtbaren CAPTCHA-System zu tun.

Kurzüberblick

Wenn Sie nur wissen wollen... Die kurze Antwort
Warum sehe ich kein CAPTCHA? Weil die Bewertung im Hintergrund läuft und nur bei höherem Risiko sichtbar wird
Brauche ich trotzdem ein Token? Ja, auch unsichtbare Systeme erzeugen Verifikationsdaten oder Tokens
Welche Systeme begegnen Ihnen am häufigsten? reCAPTCHA v3 und Cloudflare Turnstile
Was ist der wichtigste Diagnosehinweis? Unterschiedliche Nutzer oder Sessions sehen unterschiedlich viel Reibung

So funktionieren unsichtbare CAPTCHAs

Alle unsichtbaren CAPTCHAs folgen demselben Grundmuster:

Page loads → CAPTCHA JavaScript injected
    ↓
Script runs in background, collecting signals:
  ├─ Browser fingerprint (canvas, WebGL, fonts, plugins)
  ├─ Behavioral data (mouse, keyboard, scroll, timing)
  ├─ Network data (IP reputation, TLS fingerprint)
  ├─ Device data (screen, GPU, CPU cores, memory)
  └─ History data (cookies, previous CAPTCHA completions)
    ↓
Signals sent to CAPTCHA provider's risk engine
    ↓
Risk score computed
    ↓
Response varies by score:
  ├─ Low risk  → Token issued silently (user sees nothing)
  ├─ Medium    → Light challenge shown (checkbox, simple click)
  └─ High risk → Full challenge (image grid) or block

Der wesentliche Unterschied zu sichtbaren CAPTCHAs: Die Überprüfung läuft kontinuierlich ab dem Moment, in dem die Seite geladen wird, und nicht erst, wenn der Benutzer auf ein Kontrollkästchen klickt.


Wichtige unsichtbare CAPTCHA-Systeme

1. reCAPTCHA v3

Anbieter: Google Veröffentlichung: 2018 Marktanteil: Hoher unter den unsichtbaren CAPTCHAs

reCAPTCHA v3 gibt für jede Seitenaktion einen Gleitkommawert zwischen 0,0 und 1,0 zurück. Der Websitebesitzer entscheidet, was mit der Punktzahl geschehen soll.

Wie es Signale sammelt:

<!-- reCAPTCHA v3 integration -->
<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>
<script>
  grecaptcha.ready(function() {
    grecaptcha.execute('SITE_KEY', { action: 'login' }).then(function(token) {
      // Token sent to server for verification
      document.getElementById('captcha-token').value = token;
    });
  });
</script>

Der execute()-Aufruf löst die Signalerfassung bei Bedarf aus. Hinter den Kulissen sammelt reCAPTCHA seit dem Laden des Skripts Daten.

Score-Interpretation:

Punktzahl Bedeutung Typische Aktion
0,9 Sehr wahrscheinlich ein Mensch Erlauben
0,7 Wahrscheinlich ein Mensch Mit Überwachung zulassen
0,5 Unsicher Erfordern eine zusätzliche Überprüfung
0,3 Wahrscheinlich Bot reCAPTCHA v2 blockieren oder anzeigen
0,1 Sehr wahrscheinlich Bot Blockieren

Erkennung in der Seitenquelle:

import requests
import re

def detect_recaptcha_v3(url):
    html = requests.get(url, timeout=10).text
    indicators = {
        "recaptcha_v3": False,
        "site_key": None,
        "actions": [],
    }

    # Check for v3 script
    if "recaptcha/api.js?render=" in html:
        indicators["recaptcha_v3"] = True
        match = re.search(r"render=([A-Za-z0-9_-]+)", html)
        if match:
            indicators["site_key"] = match.group(1)

    # Find action names
    actions = re.findall(r"action:\s*['\"](\w+)['\"]", html)
    indicators["actions"] = actions

    return indicators

print(detect_recaptcha_v3("https://example.com/login"))

2. Cloudflare Turnstile

Anbieter: Cloudflare Veröffentlichung: 2022 Marktanteil: Am schnellsten wachsend

Turnstile verwendet eine mehrstufige Verifizierungspipeline, ohne dass eine Benutzerdatenerfassung erforderlich ist.

Verifizierungsschritte:

  1. Überprüfung des privaten Zugriffstokens – Wenn der Browser Apple PAT unterstützt, wird die Überprüfung sofort abgeschlossen
  2. Nicht interaktive Herausforderung – Der Browser löst ein leichtes kryptografisches Proof-of-Work-Rätsel
  3. Bewältigte Herausforderung – Cloudflare entscheidet auf der Grundlage von Risikosignalen aus seinem Netzwerk zwischen nicht interaktiv und interaktiv (mehr als 20 % des Internetverkehrs fließen über Cloudflare).
  4. Interaktive Herausforderung – Wird nur angezeigt, wenn die Risikobewertung hoch ist; Zeigt ein Widget im Kontrollkästchen-Stil an

Integration:

<!-- Turnstile widget -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

Erkennung:

def detect_turnstile(url):
    html = requests.get(url, timeout=10).text
    indicators = {
        "turnstile": False,
        "site_key": None,
    }

    if "challenges.cloudflare.com/turnstile" in html or "cf-turnstile" in html:
        indicators["turnstile"] = True
        match = re.search(r'data-sitekey="([^"]+)"', html)
        if match:
            indicators["site_key"] = match.group(1)

    return indicators

3. reCAPTCHA v2 Unsichtbar

Anbieter: Google Veröffentlichung: 2017

Dies wird reCAPTCHA v2 programmgesteuert bei der Formularübermittlung ausgelöst. Es ist kein Kontrollkästchen sichtbar – der Benutzer klickt auf die Schaltfläche „Senden“ und reCAPTCHA wird im Hintergrund ausgeführt. Wenn die Risikobewertung hoch genug ist, wird eine sichtbare Bildherausforderung als Popup angezeigt.

Integration:

<button class="g-recaptcha"
        data-sitekey="SITE_KEY"
        data-callback="onSubmit"
        data-size="invisible">
    Submit
</button>

Hauptunterschied zu v3: v2 Invisible greift immer noch auf eine sichtbare Herausforderung für riskante Benutzer zurück. v3 zeigt nie eine sichtbare Herausforderung – die Website muss entscheiden, was mit der Punktzahl geschehen soll.

4. hCaptcha Passiv (Unternehmen)

Anbieter: Intuition Machines Verfügbarkeit: Nur Enterprise-Stufe

Der passive Modus von hCaptcha Enterprise wertet den Benutzer ohne sichtbares Widget aus. Es verwendet die gleichen Verhaltenssignale wie Standard-hCaptcha, stellt aber nur für die misstrauischsten Besucher eine visuelle Herausforderung dar.

5. Private Zugriffstoken von Apple

Anbieter: Apple Verfügbarkeit: iOS 16+, macOS Ventura+

Dies ist kein CAPTCHA-Anbieter, sondern ein CAPTCHA-Umgehungsmechanismus. Apple-Geräte beweisen ihre Legitimität durch einen Hardware-Nachweis, der es Websites ermöglicht, CAPTCHAs vollständig zu überspringen.

Device attestation:

  1. Website requests a challenge from a token issuer
  2. Device proves it is genuine without revealing identity
  3. Token issuer generates a blind-signed token
  4. Website verifies token → CAPTCHA skipped

Unterstützt von Cloudflare, Fastly und anderen CDN-Anbietern.


Unsichtbare CAPTCHAs mit CaptchaAI lösen

Unsichtbare CAPTCHAs generieren weiterhin Token, die mit Formularen übermittelt werden müssen. API-basierte Solver generieren diese Token extern.

Lösung von reCAPTCHA v3

import requests
import time

API_KEY = "YOUR_API_KEY"

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9",
    "pageurl": "https://example.com/login",
    "version": "v3",
    "action": "login",
    "json": 1,
})

task_id = submit.json()["request"]

for _ in range(60):
    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:
        token = result["request"]
        print(f"reCAPTCHA v3 token received (score ≥ 0.9)")
        break

Lösung von Cloudflare Turnstile

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
    "pageurl": "https://example.com/signup",
    "json": 1,
})

task_id = submit.json()["request"]

for _ in range(60):
    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:
        turnstile_token = result["request"]
        print(f"Turnstile token received (100% success rate)")
        break

Node.js – Lösung von reCAPTCHA v3

const axios = require("axios");

async function solveRecaptchaV3(siteKey, pageUrl, action) {
    const API_KEY = "YOUR_API_KEY";

    // Submit
    const { data: submit } = await axios.post(
        "https://ocr.captchaai.com/in.php",
        new URLSearchParams({
            key: API_KEY,
            method: "userrecaptcha",
            googlekey: siteKey,
            pageurl: pageUrl,
            version: "v3",
            action: action,
            json: 1,
        })
    );

    const taskId = submit.request;

    // Poll
    for (let i = 0; i < 60; i++) {
        await new Promise((r) => setTimeout(r, 5000));
        const { data: result } = await axios.get(
            "https://ocr.captchaai.com/res.php",
            {
                params: {
                    key: API_KEY,
                    action: "get",
                    id: taskId,
                    json: 1,
                },
            }
        );

        if (result.status === 1) {
            return result.request;
        }
    }

    throw new Error("Solve timeout");
}

solveRecaptchaV3("SITE_KEY", "https://example.com/login", "login")
    .then((token) => console.log("Token:", token.substring(0, 50) + "..."));

Unsichtbare CAPTCHAs erkennen: umfassender Prüfer

import requests
import re

def detect_invisible_captcha(url):
    """Detect all invisible CAPTCHA types on a page."""
    html = requests.get(url, timeout=10).text

    results = []

    # reCAPTCHA v3
    if "recaptcha/api.js?render=" in html:
        key = re.search(r"render=([A-Za-z0-9_-]+)", html)
        results.append({
            "type": "reCAPTCHA v3",
            "site_key": key.group(1) if key else "unknown",
            "solver_method": "userrecaptcha (version=v3)",
        })

    # reCAPTCHA v2 invisible
    if 'data-size="invisible"' in html and "g-recaptcha" in html:
        key = re.search(r'data-sitekey="([^"]+)"', html)
        results.append({
            "type": "reCAPTCHA v2 Invisible",
            "site_key": key.group(1) if key else "unknown",
            "solver_method": "userrecaptcha (invisible=1)",
        })

    # Cloudflare Turnstile
    if "challenges.cloudflare.com/turnstile" in html:
        key = re.search(r'data-sitekey="([^"]+)"', html)
        results.append({
            "type": "Cloudflare Turnstile",
            "site_key": key.group(1) if key else "unknown",
            "solver_method": "turnstile",
        })

    # hCaptcha (passive mode detected by script without visible widget)
    if "hcaptcha.com/1/api.js" in html and 'data-size="invisible"' in html:
        results.append({
            "type": "hCaptcha Passive",
            "solver_method": "hcaptcha",
        })

    if not results:
        results.append({"type": "none detected"})

    return results

for item in detect_invisible_captcha("https://example.com"):
    print(item)

Vergleich der unsichtbaren CAPTCHAs

Funktion reCAPTCHA v3 Drehkreuz reCAPTCHA v2 Unsichtbar hCaptcha Passiv
Sichtbare Herausforderung Niemals Selten Manchmal (Fallback) Selten
Datenschutz Sammelt Browserdaten Keine personenbezogenen Daten Sammelt Browserdaten Sammelt Interaktionsdaten
Kosten Kostenlos (1M/month) Kostenlos (unbegrenzt) Kostenlos (1M/month) Nur für Unternehmen
Punktzahl zurückgegeben Ja (0,0-1,0) Nein (pass/fail) Nein (pass/fail) Ja (Unternehmen)
Sichtbare Fallback-Herausforderung Website entscheidet Verwaltet von Cloudflare Bildraster-Popup Bildraster-Popup
CaptchaAI-Unterstützung Ja (v3-Token) Ja (100 % Erfolg) Ja (Token) Kontaktieren Sie den Support

Häufig gestellte Fragen

Wie kann ich feststellen, ob eine Seite ein unsichtbares CAPTCHA hat?

Überprüfen Sie die Seitenquelle auf CAPTCHA-Anbieterskripts. Suchen Sie nach recaptcha/api.js?render= (reCAPTCHA v3), challenges.cloudflare.com/turnstile (Drehkreuz) oder hcaptcha.com/1/api.js mit data-size="invisible" (hCaptcha passiv). Das CAPTCHA-Widget ist auf der Seite nicht sichtbar, daher müssen Sie die HTML- oder Netzwerkanfragen überprüfen.

Erzeugt ein unsichtbares CAPTCHA trotzdem ein Token?

Ja. Unsichtbare CAPTCHAs generieren Token, die in Formularübermittlungen enthalten sein müssen. Der Token wird in einem versteckten Formularfeld platziert oder als Anfrageparameter gesendet. API-basierte Solver generieren diese Token extern.

Können unsichtbare CAPTCHAs meine Automatisierung blockieren, ohne dass ein Fehler angezeigt wird?

Ja. Wenn Ihre Automatisierung kein gültiges CAPTCHA-Token in die Formularübermittlung einschließt, lehnt der Server die Anfrage stillschweigend ab oder gibt einen allgemeinen Fehler zurück. Es gibt keine sichtbare CAPTCHA-Aufforderung – die Anfrage schlägt einfach fehl, weil das Token fehlt oder ungültig ist.

Ist reCAPTCHA v3 sicherer als reCAPTCHA v2?

reCAPTCHA v3 ist visuell schwerer zu erkennen (kein Widget auf der Seite), aber nicht unbedingt sicherer. v3 gibt einen Score zurück, auf den die Website reagieren muss – wenn der Schwellenwert zu niedrig eingestellt ist, passieren Bots problemlos. v2 erzwingt eine definitive Herausforderung/response. In der Praxis bietet v3 mit einem strengen Schwellenwert (0,7+) plus v2 als Fallback die beste Sicherheit.


Zusammenfassung

Unsichtbare CAPTCHAs verifizieren Benutzer durch eine JavaScript-Hintergrundanalyse des Browserverhaltens, der Gerätefingerabdrücke und der Netzwerkreputation – ohne sichtbare Interaktion. reCAPTCHA v3 und Cloudflare Turnstile sind die dominierenden Implementierungen, wobei Turnstile aufgrund seiner kostenlosen Preisgestaltung und seines datenschutzorientierten Designs am schnellsten wächst. Für die Automatisierung benötigen unsichtbare CAPTCHAs weiterhin gültige Token. VerwendenCaptchaAIum diese Token zu generieren: reCAPTCHA v3 über die Methode userrecaptcha mit version=v3 und Cloudflare Turnstile über die Methode turnstile mit einer Erfolgsquote von 100 %.

Verwandte Artikel

Kommentare sind für diesen Artikel deaktiviert.