# reCAPTCHA v2

> Mit YesCaptcha ein reCAPTCHA-v2-Token (Standard, unsichtbar, Enterprise) erhalten: Aufgabentypen und Preise, Anfrageparameter, Beispiele in curl/Python/Node.js und Ergebnisformat.

Source: https://docs.yescaptcha.com/de/tasks/recaptcha-v2/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/recaptcha-v2/

Eine reCAPTCHA-v2-Aufgabe gibt ein Token (`gRecaptchaResponse`) zurück. Wenn Sie es an die Zielwebsite senden, bestehen Sie die Prüfung, ohne Bilder anzuklicken. Der am häufigsten genutzte Typ `NoCaptchaTaskProxyless` kostet 15 Punkte (≈ $2.25 / 1k) pro Aufgabe und arbeitet asynchron: Erstellen Sie die Aufgabe mit `createTask` und rufen Sie dann alle 5 Sekunden `getTaskResult` auf, um das Ergebnis abzuholen. Bei fehlgeschlagenen Aufgaben und Zeitüberschreitungen erfolgt automatisch eine Punkteerstattung.

- POST `https://api.yescaptcha.com/createTask` (Globaler Endpoint)
- POST `https://cn.yescaptcha.com/createTask` (China-Endpoint)

Der Anfragekörper ist JSON und wird mit Ihrem `clientKey` authentifiziert (kopieren Sie ihn im Dashboard auf [yescaptcha.com](https://yescaptcha.com/)). Fragen Sie das Ergebnis an dem Endpoint ab, an dem Sie die Aufgabe erstellt haben.

## Einsatzszenarien

-   Auf der Seite gibt es ein Kontrollkästchen „Ich bin kein Roboter“ (I’m not a robot): Standardversion.
-   Es gibt kein Kontrollkästchen, und die Bildaufgabe erscheint erst nach dem Klick auf den Senden-Button: unsichtbare Version. Fügen Sie `"isInvisible": true` hinzu.
-   Die Seite lädt `recaptcha/enterprise.js`, oder die Anfrageadressen enthalten `enterprise`: Enterprise-Version. Verwenden Sie einen Typ, dessen Name `Enterprise` enthält.

Wenn Sie nicht sicher sind, um welche Variante es sich handelt, lesen Sie [Captcha-Typ bestimmen](https://docs.yescaptcha.com/de/guides/identify-captcha.md). Wenn die Erfolgsquote per Token nicht ausreicht, können Sie stattdessen [reCAPTCHA-v2-Bilderkennung](https://docs.yescaptcha.com/de/tasks/recaptcha-classification.md) verwenden: Die API teilt Ihnen mit, welche Bilder anzuklicken sind, und Sie klicken im Browser selbst.

## Typen und Preise

| Aufgabentyp | Preis | Modus | Hinweise |
| --- | --- | --- | --- |
| `NoCaptchaTaskProxyless` | $2.25 / 1k; 15 Punkte/Aufgabe · ¥15 / 1k | Asynchron |  |
| `RecaptchaV2TaskProxyless` | $3.00 / 1k; 20 Punkte/Aufgabe · ¥20 / 1k | Asynchron | Gleiche Parameter wie NoCaptchaTaskProxyless, aber über eine andere Route; beide können als Fallback füreinander verwendet werden |
| `NoCaptchaTask` | $2.25 / 1k; 15 Punkte/Aufgabe · ¥15 / 1k | Asynchron | Eigener Proxy |
| `RecaptchaV2EnterpriseTaskProxyless` | $3.00 / 1k; 20 Punkte/Aufgabe · ¥20 / 1k | Asynchron |  |
| `RecaptchaV2EnterpriseTask` | $3.00 / 1k; 20 Punkte/Aufgabe · ¥20 / 1k | Asynchron | Eigener Proxy |

Die Preise in US-Dollar sind Schätzwerte bei 1 US$ ≈ ¥6.67; Aufgaben werden in Punkten berechnet.

-   `NoCaptchaTaskProxyless` und `RecaptchaV2TaskProxyless` haben dieselben Parameter, laufen aber über verschiedene Routen. Wenn einer davon eine unzureichende Erfolgsquote hat, versuchen Sie den anderen.
-   Typen ohne `Proxyless` im Namen (`NoCaptchaTask`, `RecaptchaV2EnterpriseTask`) laden das Captcha über Ihren eigenen Proxy. Dafür müssen Sie `proxyType`, `proxyAddress`, `proxyPort` und weitere Felder übergeben. Verwenden Sie sie, wenn die Zielwebsite Anforderungen an die IP-Adresse des Besuchers stellt.

## Anfrageparameter

Das `task`\-Objekt von `createTask`:

| Feld | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `type` | string | Ja | Aufgabentyp; siehe „Aufgabentypen und Preise“ auf dieser Seite |
| `websiteURL` | string | Ja | Vollständige URL der Seite, auf der das Captcha angezeigt wird. Verwenden Sie die Website, auf der Sie das Captcha sehen, nicht die Domain des Captcha-Anbieters |
| `websiteKey` | string | Ja | Der Website-Schlüssel (sitekey), zu finden im Quelltext der Seite oder in den Netzwerkanfragen; ändert sich in der Regel nicht |
| `isInvisible` | boolean | Nein | Auf true setzen für die unsichtbare Variante; sonst weglassen |
| `proxyType` | string | Einige Typen | Proxy-Protokoll: `http`, `https`, `socks4` oder `socks5` (Erforderlich für NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `proxyAddress` | string | Einige Typen | IP-Adresse oder Hostname des Proxys. Lokale oder private Adressen wie 127.0.0.1 oder 192.168.x.x funktionieren nicht, da unsere Server sie nicht erreichen können (Erforderlich für NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `proxyPort` | integer | Einige Typen | Proxy-Port (Erforderlich für NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `proxyLogin` | string | Nein | Proxy-Benutzername, falls der Proxy eine Authentifizierung erfordert (nur NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `proxyPassword` | string | Nein | Proxy-Passwort, falls der Proxy eine Authentifizierung erfordert (nur NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `userAgent` | string | Nein | User-Agent des Browsers. Enthält das Ergebnis einen `userAgent`, verwenden Sie diesen Wert, wenn Sie das Token senden (nur NoCaptchaTask, RecaptchaV2EnterpriseTask) |
| `enterprisePayload` | object | Nein | Zusätzliche Enterprise-Parameter, z. B. der `s`\-Wert von reCAPTCHA Enterprise: `{"s": "..."}`. Weglassen, wenn die Seite ihn nicht verwendet (nur RecaptchaV2EnterpriseTaskProxyless, RecaptchaV2EnterpriseTask) |

Wie Sie `websiteURL` und `websiteKey` finden, lesen Sie unter [reCAPTCHA-Parameter finden](https://docs.yescaptcha.com/de/guides/find-recaptcha-parameters.md).

## Anfragebeispiel

Am Beispiel der offiziellen Demoseite von Google:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  }
}
```

Vollständiger Code (Aufgabe erstellen, alle 5 Sekunden abfragen, Token ausgeben). Legen Sie vor dem Ausführen Ihren ClientKey in der Umgebungsvariable `YESCAPTCHA_CLIENT_KEY` ab:

**curl**

```bash
curl -s https://api.yescaptcha.com/createTask \
  -H 'Content-Type: application/json' \
  -d '{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  }
}'

# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:
curl -s https://api.yescaptcha.com/getTaskResult \
  -H 'Content-Type: application/json' \
  -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'
```

**Python**

solve.py

```python
import os
import time

import requests

API = "https://api.yescaptcha.com"
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]  # Read the clientKey from an environment variable

def call(method, payload):
    r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30)
    data = r.json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def solve(task):
    task_id = call("createTask", {"task": task})["taskId"]
    for _ in range(36):  # Poll every 5 seconds, for up to about 3 minutes
        time.sleep(5)
        result = call("getTaskResult", {"taskId": task_id})
        if result.get("status") == "ready":
            return result["solution"]
    raise TimeoutError(task_id)

solution = solve({
    "type": "NoCaptchaTaskProxyless",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})
print(solution["gRecaptchaResponse"])
```

**Node.js**

solve.mjs

```js
const API = 'https://api.yescaptcha.com';
const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable

async function call(method, payload) {
  const res = await fetch(`${API}/${method}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }),
  });
  const data = await res.json();
  if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`);
  return data;
}

async function solve(task) {
  const { taskId } = await call('createTask', { task });
  for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes
    await new Promise((r) => setTimeout(r, 5000));
    const result = await call('getTaskResult', { taskId });
    if (result.status === 'ready') return result.solution;
  }
  throw new Error(`timeout: ${taskId}`);
}

const solution = await solve({
  type: "NoCaptchaTaskProxyless",
  websiteURL: "https://www.google.com/recaptcha/api2/demo",
  websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
});
console.log(solution.gRecaptchaResponse);
```

Bei der Enterprise-Version: Wenn die Seite einen `s`\-Wert an reCAPTCHA übergibt, tragen Sie ihn in `enterprisePayload` ein:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "RecaptchaV2EnterpriseTaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "SITE_KEY_OF_THE_PAGE",
    "enterprisePayload": {
      "s": "S_VALUE_FROM_THE_PAGE"
    }
  }
}
```

Mit eigenem Proxy:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "NoCaptchaTask",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}
```

## Ergebnis

`createTask` gibt die Aufgaben-ID zurück:

```json
{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
```

Rufen Sie damit `getTaskResult` auf. Solange die Aufgabe noch bearbeitet wird, lautet die Antwort `{"errorId": 0, "status": "processing"}`; fragen Sie nach 5 Sekunden erneut ab. Ist die Aufgabe abgeschlossen, lautet die Antwort:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..."
  }
}
```

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `gRecaptchaResponse` | string | Das Token, das an die Zielwebsite gesendet wird. Einmalig verwendbar, ca. 120 Sekunden gültig; verwenden Sie es innerhalb von 60 Sekunden |

Eine Aufgabe wird höchstens etwa 110 Sekunden bearbeitet. Danach wird `ERROR_TASK_TIMEOUT` zurückgegeben und die Punkte werden erstattet. Bei Fehlern ist `errorId` gleich 1; behandeln Sie sie anhand von `errorCode`, siehe [Fehlercodes](https://docs.yescaptcha.com/de/api/errors.md). Wie Sie das Token nach dem Erhalt senden, lesen Sie unter [reCAPTCHA mit einem Token abschließen](https://docs.yescaptcha.com/de/guides/submit-recaptcha-token.md).

> **Tipp:** Ein Token ist nur einmal verwendbar und etwa 120 Sekunden gültig. Senden Sie es am besten innerhalb von 60 Sekunden nach Erhalt.

## Häufige Fragen

### Warum besteht das Token für dieselbe Website manchmal die Prüfung und manchmal nicht?

Ob ein Token besteht, entscheidet die Zielwebsite. Sie bewertet jede Verifizierung mit einem Score und legt einen Schwellenwert fest, der sich jederzeit ändern kann. Deshalb unterscheidet sich die Erfolgsquote von Website zu Website, und nicht jedes Token besteht. Sie können einen ähnlichen Aufgabentyp zum Vergleich der Erfolgsquote ausprobieren oder stattdessen die [Bilderkennung](https://docs.yescaptcha.com/de/tasks/recaptcha-classification.md) verwenden.

### Wie lange ist ein Token gültig?

Es ist nur einmal verwendbar und etwa 120 Sekunden gültig. Senden Sie es am besten innerhalb von 60 Sekunden nach Erhalt. Die Gültigkeitsdauer legt Google fest.

### Wird bei fehlgeschlagener Lösung ein Punkteabzug berechnet?

Nein. Aufgaben, die `ERROR_CAPTCHA_UNSOLVABLE` zurückgeben oder in eine Zeitüberschreitung laufen, werden automatisch mit einer Punkteerstattung abgeschlossen, siehe [Abrechnung und Punkteerstattung](https://docs.yescaptcha.com/de/getting-started/billing.md).

## Verwandte Anleitungen

-   [Captcha-Typ bestimmen](https://docs.yescaptcha.com/de/guides/identify-captcha.md)
-   [reCAPTCHA-Parameter finden](https://docs.yescaptcha.com/de/guides/find-recaptcha-parameters.md)
-   [reCAPTCHA mit einem Token abschließen](https://docs.yescaptcha.com/de/guides/submit-recaptcha-token.md)
-   [reCAPTCHA-v2-Bilderkennung mit simulierten Klicks (Selenium)](https://docs.yescaptcha.com/de/guides/recaptcha-click-selenium.md)
