Troubleshooting

Häufige reCAPTCHA Invisible-Fehler und Korrekturen

Unsichtbares reCAPTCHA entfernt das Kontrollkästchen – fügt jedoch neue Fehlermodi zur Automatisierung hinzu. Die größten Probleme sind das unsichtbare Widget überhaupt nicht zu erkennen, das Fehlen der Rückruffunktion, das Senden abgelaufener Token und die Verwendung von v2-Standardparametern, wenn unsichtbare Parameter erforderlich sind.

In diesem Leitfaden werden alle gängigen Fehlermuster mit der genauen Lösung behandelt. Wenn Sie Hintergrundinformationen zur Funktionsweise von unsichtbarem reCAPTCHA benötigen, lesen Sie Wie reCAPTCHA Invisible funktioniert und wie man es löst zuerst.


Schnelle Fehlerreferenz

Fehler Ursache Beheben
ERROR_WRONG_GOOGLEKEY Falscher Sitekey oder Sitekey von einer anderen Domain Extrahieren Sie den Sitekey aus dem unsichtbaren Widget-Div oder dem grecaptcha.render()-Aufruf
ERROR_PAGEURL URL-Konflikt – gesendete URL der übergeordneten Seite anstelle der Iframe-URL Verwenden Sie die genaue URL, unter der das unsichtbare Widget geladen wird
ERROR_CAPTCHA_UNSOLVABLE Google hat die Aufgabe als unmöglich gekennzeichnet Versuchen Sie es erneut mit einem neuen Proxy und neuen Cookies. Überprüfen Sie, ob die Website auf Version 3 umgestellt wurde
ERROR_BAD_TOKEN_OR_PAGEURL Token von der Zielseite abgelehnt Überprüfen Sie, ob die Seiten-URL genau übereinstimmt. Per Rückruf injizieren, nicht verstecktes Feld
CAPCHA_NOT_READY Die Aufgabe wird noch bearbeitet Führen Sie alle 5 Sekunden eine Abfrage durch. Unsichtbare Lösungen dauern 10–30 Sekunden
ERROR_KEY_DOES_NOT_EXIST Ungültiger CaptchaAI-API-Schlüssel Schlüssel prüfen untercaptchaai.com/account
Token akzeptiert, aber Formular schlägt fehl Rückruf nach Token-Injektion nicht ausgeführt Suchen Sie die Funktion data-callback mit dem Token und rufen Sie sie auf

Fehler 1: Unsichtbares reCAPTCHA wird auf der Seite nicht erkannt

Unsichtbares reCAPTCHA hat kein sichtbares Kontrollkästchen. Wenn Ihr Scraper dies nicht erkennt, scheitern Captcha-geschützte Anfragen stillschweigend mit Formularübermittlungsfehlern oder Weiterleitungen.

So erkennen Sie unsichtbares reCAPTCHA

Suchen Sie im HTML der Seite nach diesen Mustern:

<!-- Pattern 1: div with data-size="invisible" -->
<div class="g-recaptcha" data-sitekey="6LdKlZEU..."
     data-size="invisible"
     data-callback="onSubmit"></div>

<!-- Pattern 2: button with data-sitekey and invisible size -->
<button class="g-recaptcha"
        data-sitekey="6LdKlZEU..."
        data-callback="onSubmit"
        data-action="submit">Submit</button>

<!-- Pattern 3: programmatic render with size: invisible -->
<script>
  grecaptcha.render('submit-btn', {
    sitekey: '6LdKlZEU...',
    callback: onSubmit,
    size: 'invisible'
  });
</script>

Erkennungsskript (Python):

import requests
from bs4 import BeautifulSoup
import re

def detect_invisible_recaptcha(url):
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html.parser")

    # Check for data-size="invisible"
    widget = soup.find("div", {"data-size": "invisible", "class": "g-recaptcha"})
    if widget:
        return {
            "type": "invisible",
            "sitekey": widget.get("data-sitekey"),
            "callback": widget.get("data-callback")
        }

    # Check for programmatic render with invisible
    scripts = soup.find_all("script")
    for script in scripts:
        if script.string and "size" in str(script.string) and "invisible" in str(script.string):
            key_match = re.search(r"sitekey['\"]?\s*[:=]\s*['\"]([^'\"]+)", script.string)
            if key_match:
                return {
                    "type": "invisible-programmatic",
                    "sitekey": key_match.group(1),
                    "callback": "check grecaptcha.render() call"
                }

    return None

Erkennungsskript (Node.js):

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

async function detectInvisibleRecaptcha(url) {
  const { data } = await axios.get(url);
  const $ = cheerio.load(data);

  // Check for data-size="invisible"
  const widget = $(".g-recaptcha[data-size='invisible']");
  if (widget.length) {
    return {
      type: "invisible",
      sitekey: widget.attr("data-sitekey"),
      callback: widget.attr("data-callback"),
    };
  }

  // Check script tags for programmatic invisible render
  const scriptContent = $("script")
    .map((_, el) => $(el).html())
    .get()
    .join("\n");
  if (scriptContent.includes("invisible")) {
    const keyMatch = scriptContent.match(/sitekey['"]?\s*[:=]\s*['"]([^'"]+)/);
    if (keyMatch) {
      return {
        type: "invisible-programmatic",
        sitekey: keyMatch[1],
        callback: "check grecaptcha.render() call",
      };
    }
  }

  return null;
}

Fehler 2: Falscher Sitekey – ERROR_WRONG_GOOGLEKEY

Dies geschieht, wenn Sie einen Sitekey senden, der nicht mit dem unsichtbaren reCAPTCHA-Widget auf der Zielseite übereinstimmt. Häufige Ursachen:

  • Der Sitekey wurde aus einem v2-Kontrollkästchen auf einer anderen Seite kopiert
  • Es wurde ein Sitekey von der Anker-URL einer anderen reCAPTCHA-Version verwendet
  • Die Seite enthält mehrere reCAPTCHA-Widgets und Sie haben das falsche ausgewählt

Fix: Extrahieren Sie den richtigen unsichtbaren Sitekey

import requests
from bs4 import BeautifulSoup

def get_invisible_sitekey(url):
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html.parser")

    # Priority 1: invisible widget
    widget = soup.find(attrs={"data-size": "invisible", "class": "g-recaptcha"})
    if widget:
        return widget["data-sitekey"]

    # Priority 2: any g-recaptcha div (may be invisible without data-size)
    widget = soup.find(class_="g-recaptcha")
    if widget and widget.get("data-sitekey"):
        return widget["data-sitekey"]

    return None

sitekey = get_invisible_sitekey("https://example.com/login")
print(f"Sitekey: {sitekey}")

Fehler 3: Rückruf nicht ausgeführt – Formular wird gesendet, aber es passiert nichts

Dies ist der häufigste unsichtbare reCAPTCHA-Fehler, den Entwickler übersehen. Im Gegensatz zum Kontrollkästchen v2, bei dem das Einfügen des Tokens in g-recaptcha-response ausreicht, verwendet unsichtbares reCAPTCHA fast immer eine JavaScript-Rückruffunktion. Wenn Sie das Token einfügen, aber den Rückruf nicht aufrufen, wird das Formular nie verarbeitet.

So funktioniert der Rückrufablauf

  1. grecaptcha.execute() löst die unsichtbare Herausforderung aus
  2. Nach der Lösung ruft Google die in data-callback angegebene Funktion auf
  3. Diese Rückruffunktion sendet das Formular oder führt den API-Aufruf durch

Fix: Suchen Sie den Rückruf und führen Sie ihn aus

Schritt 1 – Identifizieren Sie den Rückrufnamen:

# From HTML: data-callback="onSubmit"
# From JS: callback: onSubmit
# From grecaptcha.render: second argument with callback property

Schritt 2 – Token einfügen UND Rückruf aufrufen (Selenium):

from selenium import webdriver
import requests
import time

driver = webdriver.Chrome()
driver.get("https://example.com/form")

# Get sitekey
sitekey = driver.find_element("css selector", ".g-recaptcha").get_attribute("data-sitekey")
callback_name = driver.find_element("css selector", ".g-recaptcha").get_attribute("data-callback")

# Mit CaptchaAI lösen
task_id = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": driver.current_url,
    "invisible": 1
}).text.split("|")[1]

# Poll for result
token = None
for _ in range(60):
    time.sleep(5)
    resp = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": task_id
    }).text
    if resp.startswith("OK|"):
        token = resp.split("|")[1]
        break

# Inject token into the response field
driver.execute_script(
    f'document.getElementById("g-recaptcha-response").value = "{token}";'
)

# CRITICAL: Call the callback function
driver.execute_script(f'{callback_name}("{token}");')

Schritt 2 – Token einfügen UND Rückruf aufrufen (Puppeteer):

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

(async () => {
  const browser = await puppeteer.launch({ headless: "new" });
  const page = await browser.newPage();
  await page.goto("https://example.com/form");

  // Get sitekey and callback
  const { sitekey, callback } = await page.evaluate(() => {
    const el = document.querySelector(".g-recaptcha[data-size='invisible']");
    return {
      sitekey: el?.getAttribute("data-sitekey"),
      callback: el?.getAttribute("data-callback"),
    };
  });

  // Submit to CaptchaAI
  const submitResp = await axios.get("https://ocr.captchaai.com/in.php", {
    params: {
      key: "YOUR_API_KEY",
      method: "userrecaptcha",
      googlekey: sitekey,
      pageurl: page.url(),
      invisible: 1,
    },
  });
  const taskId = submitResp.data.split("|")[1];

  // Poll for result
  let token;
  for (let i = 0; i < 60; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: "YOUR_API_KEY", action: "get", id: taskId },
    });
    if (result.data.startsWith("OK|")) {
      token = result.data.split("|")[1];
      break;
    }
  }

  // Inject token and fire callback
  await page.evaluate(
    (tok, cb) => {
      document.getElementById("g-recaptcha-response").value = tok;
      if (cb && typeof window[cb] === "function") {
        window[cb](tok);
      }
    },
    token,
    callback,
  );

  await browser.close();
})();

Fehler 4: Fehlender Parameter invisible=1

Wenn Sie unsichtbares reCAPTCHA über CaptchaAI lösen, müssen Sie invisible=1 in Ihre Anfrage aufnehmen. Ohne sie behandelt der Solver die Aufgabe als Standard-Kontrollkästchen-Herausforderung der Version 2, was zu ERROR_CAPTCHA_UNSOLVABLE oder Tokens führen kann, die von der Zielsite abgelehnt werden.

Falsche vs. richtige Anfrage

# WRONG — missing invisible=1
params = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url
}

# CORRECT — includes invisible=1
params = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url,
    "invisible": 1  # Required for invisible reCAPTCHA
}

response = requests.get("https://ocr.captchaai.com/in.php", params=params)

Fehler 5: Token ist vor der Übermittlung abgelaufen

Unsichtbare reCAPTCHA-Tokens verfallen in 120 Sekunden – genau wie beim v2-Standard. Bei unsichtbaren Arbeitsabläufen gibt es jedoch häufig zusätzliche Verarbeitungsschritte zwischen Lösung und Übermittlung, wodurch der Ablauf wahrscheinlicher wird.

Symptome

  • Das Formular gibt nach der Token-Injektion einen allgemeinen Fehler zurück
  • Serverseitig gibt siteverify timeout-or-duplicate zurück
  • Das Token war gültig, es dauerte jedoch zu lange, bis es den Absendeschritt erreichte

Fix: Just-in-Time-Lösung

Fordern Sie die Lösung erst an, wenn Sie bereit sind, sie sofort einzureichen:

import requests
import time

def solve_invisible_recaptcha(api_key, sitekey, page_url):
    # Submit task
    resp = requests.get("https://ocr.captchaai.com/in.php", params={
        "key": api_key,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": page_url,
        "invisible": 1
    })
    if not resp.text.startswith("OK|"):
        raise Exception(f"Submit failed: {resp.text}")
    task_id = resp.text.split("|")[1]

    # Poll for result
    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
        })
        if result.text.startswith("OK|"):
            return result.text.split("|")[1]
        if result.text != "CAPCHA_NOT_READY":
            raise Exception(f"Solve failed: {result.text}")

    raise Exception("Solve timed out after 5 minutes")

# Usage: solve JUST before you need to submit
# 1. Navigate to page and prepare form data first
# 2. THEN solve the captcha
# 3. Inject token and submit immediately
token = solve_invisible_recaptcha("YOUR_API_KEY", sitekey, page_url)
# Submit within 120 seconds of receiving the token

Fehler 6: Token abgelehnt – ERROR_BAD_TOKEN_OR_PAGEURL

Die Zielseite hat das Token bei Google überprüft und ist fehlgeschlagen. Häufige Ursachen:

Ursache So identifizieren Sie sich Beheben
Falsches pageurl Die URL stimmt nicht mit der Domain in der Sitekey-Registrierung überein Verwenden Sie die genaue URL, unter der das Widget geladen wird
Token, der auf einer anderen Domäne verwendet wird Domainübergreifende Wiederverwendung von Token Lösen Sie das Problem mit dem pageurl der richtigen Domäne
Token bereits verwendet Das gleiche Token zweimal einreichen Fordern Sie für jede Einreichung eine neue Lösung an
IP-Nichtübereinstimmung Ihre IP unterscheidet sich von der IP des Solvers Fügen Sie Ihren proxy-Parameter hinzu, damit er mit der Sitzungs-IP übereinstimmt
Unsichtbare Flagge fehlt Als v2-Standard gelöst, auf unsichtbarer Seite verwendet Fügen Sie invisible=1 zur Lösungsanforderung hinzu

Debug-Checkliste

def debug_invisible_solve(api_key, sitekey, page_url, proxy=None):
    """Run a diagnostic solve with detailed logging."""
    print(f"Sitekey: {sitekey}")
    print(f"Page URL: {page_url}")
    print(f"Proxy: {proxy or 'none'}")

    params = {
        "key": api_key,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": page_url,
        "invisible": 1
    }
    if proxy:
        params["proxy"] = proxy
        params["proxytype"] = "HTTP"

    # Submit
    resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
    print(f"Submit response: {resp.text}")
    if not resp.text.startswith("OK|"):
        return None

    task_id = resp.text.split("|")[1]
    print(f"Task ID: {task_id}")

    # Poll with timing
    start = time.time()
    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
        })
        elapsed = time.time() - start
        print(f"  [{elapsed:.0f}s] {result.text[:50]}")
        if result.text.startswith("OK|"):
            token = result.text.split("|")[1]
            print(f"Token received after {elapsed:.0f}s")
            print(f"Token length: {len(token)} characters")
            print(f"Token starts with: {token[:30]}...")
            return token
        if result.text != "CAPCHA_NOT_READY":
            print(f"FAILED: {result.text}")
            return None

    print("TIMEOUT after 5 minutes")
    return None

Fehler 7: Mehrere reCAPTCHA-Widgets auf einer Seite

Einige Seiten verfügen sowohl über ein sichtbares v2-Kontrollkästchen als auch über ein unsichtbares reCAPTCHA. Wenn Sie das falsche Problem lösen, ist das Token gültig, stimmt aber nicht mit dem Widget überein, das die von Ihnen benötigte Aktion schützt.

Fix: Zielen Sie auf das richtige Widget

from bs4 import BeautifulSoup

def find_all_recaptcha_widgets(html):
    soup = BeautifulSoup(html, "html.parser")
    widgets = []

    for el in soup.find_all(class_="g-recaptcha"):
        widgets.append({
            "sitekey": el.get("data-sitekey"),
            "size": el.get("data-size", "normal"),
            "callback": el.get("data-callback"),
            "tag": el.name,
            "id": el.get("id")
        })

    return widgets

# Example output:
# [
#   {"sitekey": "6LdA...", "size": "normal", "callback": None, "tag": "div", "id": "recaptcha-login"},
#   {"sitekey": "6LdB...", "size": "invisible", "callback": "onRegister", "tag": "div", "id": "recaptcha-register"}
# ]
# Use the widget with size="invisible" for the invisible solve

Vollständiger unsichtbarer reCAPTCHA-Löser mit Fehlerbehandlung

Dieser produktionsbereite Wrapper behandelt alle oben genannten Fehler:

import requests
import time
import logging

logger = logging.getLogger(__name__)

class InvisibleRecaptchaSolver:
    def __init__(self, api_key, max_retries=3):
        self.api_key = api_key
        self.max_retries = max_retries
        self.base_url = "https://ocr.captchaai.com"

    def solve(self, sitekey, page_url, proxy=None):
        """Solve invisible reCAPTCHA with automatic retry on transient errors."""
        for attempt in range(1, self.max_retries + 1):
            try:
                token = self._attempt_solve(sitekey, page_url, proxy)
                if token:
                    return token
            except Exception as e:
                logger.warning(f"Attempt {attempt} failed: {e}")
                if attempt < self.max_retries:
                    time.sleep(2 ** attempt)
        raise Exception(f"Failed to solve after {self.max_retries} attempts")

    def _attempt_solve(self, sitekey, page_url, proxy):
        params = {
            "key": self.api_key,
            "method": "userrecaptcha",
            "googlekey": sitekey,
            "pageurl": page_url,
            "invisible": 1
        }
        if proxy:
            params["proxy"] = proxy
            params["proxytype"] = "HTTP"

        # Submit task
        resp = requests.get(f"{self.base_url}/in.php", params=params)

        if "ERROR" in resp.text:
            error = resp.text.strip()
            if error in ("ERROR_WRONG_GOOGLEKEY", "ERROR_KEY_DOES_NOT_EXIST"):
                raise Exception(f"Configuration error (do not retry): {error}")
            if error == "ERROR_ZERO_BALANCE":
                raise Exception("Account balance is zero — add funds")
            raise Exception(f"Submit error: {error}")

        if not resp.text.startswith("OK|"):
            raise Exception(f"Unexpected submit response: {resp.text}")

        task_id = resp.text.split("|")[1]

        # Poll for result
        for _ in range(60):
            time.sleep(5)
            result = requests.get(f"{self.base_url}/res.php", params={
                "key": self.api_key,
                "action": "get",
                "id": task_id
            })

            if result.text.startswith("OK|"):
                return result.text.split("|")[1]

            if result.text == "CAPCHA_NOT_READY":
                continue

            if result.text == "ERROR_CAPTCHA_UNSOLVABLE":
                logger.warning("Captcha unsolvable — will retry with new task")
                return None

            raise Exception(f"Poll error: {result.text}")

        raise Exception("Solve timed out after 5 minutes")


# Usage
solver = InvisibleRecaptchaSolver("YOUR_API_KEY")
token = solver.solve(
    sitekey="6LdKlZEU...",
    page_url="https://example.com/login"
)
print(f"Token: {token[:50]}...")
const axios = require("axios");

class InvisibleRecaptchaSolver {
  constructor(apiKey, maxRetries = 3) {
    this.apiKey = apiKey;
    this.maxRetries = maxRetries;
    this.baseUrl = "https://ocr.captchaai.com";
  }

  async solve(sitekey, pageUrl, proxy) {
    for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
      try {
        const token = await this._attemptSolve(sitekey, pageUrl, proxy);
        if (token) return token;
      } catch (err) {
        console.warn(`Attempt ${attempt} failed: ${err.message}`);
        if (attempt < this.maxRetries) {
          await new Promise((r) => setTimeout(r, 2 ** attempt * 1000));
        }
      }
    }
    throw new Error(`Failed to solve after ${this.maxRetries} attempts`);
  }

  async _attemptSolve(sitekey, pageUrl, proxy) {
    const params = {
      key: this.apiKey,
      method: "userrecaptcha",
      googlekey: sitekey,
      pageurl: pageUrl,
      invisible: 1,
    };
    if (proxy) {
      params.proxy = proxy;
      params.proxytype = "HTTP";
    }

    // Submit task
    const submitResp = await axios.get(`${this.baseUrl}/in.php`, { params });
    if (submitResp.data.includes("ERROR")) {
      const error = submitResp.data.trim();
      if (["ERROR_WRONG_GOOGLEKEY", "ERROR_KEY_DOES_NOT_EXIST"].includes(error)) {
        throw new Error(`Configuration error (do not retry): ${error}`);
      }
      throw new Error(`Submit error: ${error}`);
    }

    const taskId = submitResp.data.split("|")[1];

    // Poll for result
    for (let i = 0; i < 60; i++) {
      await new Promise((r) => setTimeout(r, 5000));
      const result = await axios.get(`${this.baseUrl}/res.php`, {
        params: { key: this.apiKey, action: "get", id: taskId },
      });

      if (result.data.startsWith("OK|")) {
        return result.data.split("|")[1];
      }
      if (result.data === "CAPCHA_NOT_READY") continue;
      if (result.data === "ERROR_CAPTCHA_UNSOLVABLE") return null;
      throw new Error(`Poll error: ${result.data}`);
    }
    throw new Error("Solve timed out after 5 minutes");
  }
}

// Usage
const solver = new InvisibleRecaptchaSolver("YOUR_API_KEY");
solver.solve("6LdKlZEU...", "https://example.com/login").then((token) => {
  console.log(`Token: ${token.substring(0, 50)}...`);
});

Checkliste zur Fehlerbehebung

Gehen Sie diese Checkliste durch, wenn die unsichtbare reCAPTCHA-Lösung fehlschlägt:

Schritt Überprüfen Befehl/Action
1 Bestätigen Sie, dass es unsichtbar und nicht v2-Standard ist Suchen Sie im Renderaufruf nach data-size="invisible" oder size: 'invisible'
2 Überprüfen Sie, ob der Sitekey korrekt ist Vergleichen Sie mit data-sitekey speziell das unsichtbare Widget
3 Bestätigen Sie invisible=1 in der API-Anfrage Überprüfen Sie Ihre in.php-Parameter
4 Überprüfen Sie, ob pageurl genau übereinstimmt Verwenden Sie die DevTools-URL des Browsers, keine Weiterleitungs-URL
5 Suchen Sie den Namen der Rückruffunktion Suchen Sie nach dem Attribut data-callback oder callback in grecaptcha.render()
6 Überprüfen Sie die Token-Injektion und den Rückruf Beide Schritte sind erforderlich – ein Token allein reicht nicht aus
7 Überprüfen Sie die Aktualität des Tokens Der Token muss innerhalb von 120 Sekunden verwendet werden
8 Testen Sie mit einem Proxy, ob die IP wichtig ist Fügen Sie die Parameter proxy und proxytype hinzu

FAQ

Wie unterscheidet sich das unsichtbare reCAPTCHA beim Lösen vom v2-Standard?

Die API-Methode ist dieselbe (method=userrecaptcha), Sie müssen jedoch invisible=1 zu Ihrer Anfrage hinzufügen. Der entscheidende Unterschied liegt auf der Injektionsseite: Unsichtbares reCAPTCHA erfordert fast immer den Aufruf einer JavaScript-Rückruffunktion nach der Injektion des Tokens, während v2-Standard normalerweise nur mit dem versteckten Feld funktioniert.

Warum funktioniert mein Token beim Testen, schlägt jedoch in der Produktion fehl?

Wahrscheinlich liegt eine IP-Nichtübereinstimmung vor. Beim Testen teilen sich der Solver und Ihr Browser möglicherweise ähnliche IPs. In der Produktion unterscheiden sich die IP des Solvers und die IP Ihres Servers. Fügen Sie einen Proxy-Parameter hinzu, der Ihrer Sitzungs-IP entspricht, um dieses Problem zu beheben.

Wie lange dauert die Lösung des unsichtbaren reCAPTCHA?

Typische Lösungszeiten betragen 10–30 Sekunden bis CaptchaAI. Unsichtbare Herausforderungen sind im Allgemeinen schneller als v2-Checkbox-Herausforderungen, da sie keine Bilderkennung erfordern – sie basieren auf einer Risikoanalyse.

Kann ich unsichtbares reCAPTCHA ohne Browser lösen?

Ja. Da die Lösung serverseitig über die API erfolgt, benötigen Sie nur den Sitekey und die Pageurl. Der Browser wird nur benötigt, wenn Sie die Callback-Funktion auf der tatsächlichen Seite ausführen müssen. Extrahieren Sie für reine API-Workflows den Sitekey, lösen Sie ihn über CaptchaAI und senden Sie das Token mit Ihrer HTTP-Anfrage.


Verwandte Leitfäden

  • Unsichtbares reCAPTCHA per API lösen
  • Unsichtbares reCAPTCHA: Trigger und Erkennung
  • Häufige reCAPTCHA v2 Fehler und Korrekturen
Kommentare sind für diesen Artikel deaktiviert.

Verwandte Beiträge