Aufgabentypen
Cloudflare Turnstile
Diese Seite wurde maschinell aus der chinesischen Version übersetzt und kann Fehler enthalten. Maßgeblich ist die chinesische Version.
Eine Cloudflare-Turnstile-Aufgabe gibt ein Token (token) zurück, das Sie an die Zielwebsite senden, um die Prüfung zu bestehen. TurnstileTaskProxyless kostet 25 Punkte (≈ $3.75 / 1k) pro Aufgabe und arbeitet asynchron: zuerst createTask, dann alle 5 Sekunden getTaskResult. Bei fehlgeschlagenen Aufgaben und Zeitüberschreitung erfolgt automatisch eine Punkteerstattung.
https://api.yescaptcha.com/createTaskGlobaler Endpointhttps://cn.yescaptcha.com/createTaskChina-EndpointDer Request-Body ist JSON und wird mit clientKey authentifiziert. Fragen Sie das Ergebnis an demselben Endpoint ab, an dem Sie die Aufgabe erstellt haben.
Einsatzszenarien
Abschnitt betitelt „Einsatzszenarien“In einem Formular der Seite ist ein Cloudflare-Prüffeld (“Bestätigen Sie, dass Sie ein Mensch sind”) eingebettet, und die Seite lädt ein Skript von challenges.cloudflare.com/turnstile.
Wenn Cloudflare die gesamte Seite abfängt und “Einen Moment bitte…” bzw. “Ihr Browser wird überprüft” anzeigt, handelt es sich um die Cloudflare-Prüfseite und nicht um Turnstile. Verwenden Sie dafür Cloudflare-Prüfseite. Den Unterschied erklärt Captcha-Typ bestimmen.
Aufgabentypen und Preise
Abschnitt betitelt „Aufgabentypen und Preise“| Aufgabentyp | Preis | Modus | Hinweise |
|---|---|---|---|
TurnstileTaskProxyless | $3.75 / 1k; 25 Punkte/Aufgabe · ¥25 / 1k | Asynchron | |
TurnstileTaskProxylessM1 | $4.50 / 1k; 30 Punkte/Aufgabe · ¥30 / 1k | Asynchron | |
TurnstileTask | $3.75 / 1k; 25 Punkte/Aufgabe · ¥25 / 1k | Asynchron | Eigener Proxy |
Die Preise in US-Dollar sind Schätzwerte bei 1 US$ ≈ ¥6.67; Aufgaben werden in Punkten berechnet.
TurnstileTaskProxylessundTurnstileTaskProxylessM1haben dieselben Parameter, nutzen aber unterschiedliche Routen und können sich gegenseitig als Ersatz dienen.TurnstileTasklädt das Captcha über Ihren eigenen Proxy; die Proxy-Felder müssen angegeben werden.
Request-Parameter
Abschnitt betitelt „Request-Parameter“| 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 Turnstile-Website-Schlüssel (sitekey), beginnt in der Regel mit 0x |
pageAction | string | Nein | Die action, die die Seite an Turnstile übergibt (eine Option von turnstile.render oder data-action am Widget-Element), z. B. login. In den meisten Fällen nicht nötig; fügen Sie sie nur hinzu, wenn Aufgaben weiterhin fehlschlagen |
data | string | Nein | Die cData, die die Seite an Turnstile übergibt (eine Option von turnstile.render oder data-cdata am Widget-Element), z. B. c0bd4b36-7419-4e18-83c6-378699f2a9a2. In den meisten Fällen nicht nötig; fügen Sie sie nur hinzu, wenn Aufgaben weiterhin fehlschlagen |
proxyType | string | Einige Typen | Proxy-Protokoll: http, https, socks4 oder socks5 (Erforderlich für TurnstileTask) |
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 TurnstileTask) |
proxyPort | integer | Einige Typen | Proxy-Port (Erforderlich für TurnstileTask) |
proxyLogin | string | Nein | Proxy-Benutzername, falls der Proxy eine Authentifizierung erfordert (nur TurnstileTask) |
proxyPassword | string | Nein | Proxy-Passwort, falls der Proxy eine Authentifizierung erfordert (nur TurnstileTask) |
userAgent | string | Nein | User-Agent des Browsers. Enthält das Ergebnis einen userAgent, verwenden Sie diesen Wert, wenn Sie das Token senden (nur TurnstileTask) |
websiteKey beginnt in der Regel mit 0x. Wie Sie ihn finden, steht unter Turnstile-Parameter finden.
Wenn Aufgaben nicht bestanden werden: pageAction und data
Abschnitt betitelt „Wenn Aufgaben nicht bestanden werden: pageAction und data“In den meisten Fällen genügen websiteURL und websiteKey; diese beiden Parameter sind nicht nötig. Wenn Sie sicher sind, dass websiteURL und websiteKey stimmen, die Aufgabe aber trotzdem nicht bestanden wird, prüfen Sie, ob die Seite beim Aufruf von Turnstile action und cData übergibt (Parameter von turnstile.render oder data-action und data-cdata am Element des Prüffelds). Falls ja, übernehmen Sie die Werte unverändert:
pageAction: deraction-Wert der Seite, z. B.logindata: dercData-Wert der Seite, z. B.c0bd4b36-7419-4e18-83c6-378699f2a9a2
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY", "pageAction": "login", "data": "c0bd4b36-7419-4e18-83c6-378699f2a9a2" }}Request-Beispiel
Abschnitt betitelt „Request-Beispiel“{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" }}'
# 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"}'import osimport 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": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY",})print(solution["token"])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: "TurnstileTaskProxyless", websiteURL: "https://example.com/login", websiteKey: "0x4AAAAAAA_SITE_KEY",});console.log(solution.token);Ersetzen Sie websiteURL und websiteKey durch die Werte der Zielwebsite.
Ergebnis
Abschnitt betitelt „Ergebnis“{ "errorId": 0, "status": "ready", "solution": { "token": "0.ufq5RgSVZd11DPSX1brdrxnEs28KcVlKj2ORchqxSy2q9yAW6ciq3hriXDF4x...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36" }}| Feld | Typ | Beschreibung |
|---|---|---|
token | string | Das Token, das an die Zielwebsite gesendet wird. Einmalig verwendbar; senden Sie es so schnell wie möglich |
userAgent | string | Der User-Agent, mit dem das Token erzeugt wurde. Verwenden Sie diesen Wert beim Senden des Tokens, auch wenn er von dem abweicht, den Sie übergeben haben |
Tragen Sie das token in das Feld cf-turnstile-response der Seite (oder in das Feld, das die Schnittstelle der Zielwebsite verlangt) ein und senden Sie es ab. Verwenden Sie dabei als User-Agent der Anfrage den zurückgegebenen userAgent.
Solange die Aufgabe läuft, lautet die Antwort {"errorId": 0, "status": "processing"}; fragen Sie nach 5 Sekunden erneut ab. Bei Fehlern gehen Sie nach errorCode vor, siehe Fehlercodes.
Häufige Fragen
Abschnitt betitelt „Häufige Fragen“Wie lange ist ein Token gültig?
Abschnitt betitelt „Wie lange ist ein Token gültig?“Es ist nur einmal verwendbar. Senden Sie es nach Erhalt möglichst schnell ab (Turnstile-Tokens laufen in der Regel innerhalb weniger Minuten ab; das legt Cloudflare fest).
Die Website lehnt die Übermittlung trotzdem ab
Abschnitt betitelt „Die Website lehnt die Übermittlung trotzdem ab“Prüfen Sie, ob websiteURL die Seite mit dem Prüffeld ist und websiteKey stimmt, und verwenden Sie beim Absenden den zurückgegebenen userAgent. Wenn die Seite action und cData übergibt, geben Sie diese als pageAction und data mit an, siehe oben Wenn Aufgaben nicht bestanden werden. Prüft die Website zusätzlich die IP, verwenden Sie TurnstileTask und senden Sie über denselben Proxy ab.