Zum Inhalt springen
StatusDashboard

Anleitungen

Den Captcha-Typ bestimmen

Diese Seite wurde maschinell aus der chinesischen Version übersetzt und kann Fehler enthalten. Maßgeblich ist die chinesische Version.

Der erste Schritt zur Wahl des richtigen Aufgabentyps ist, das Captcha zu erkennen. Am zuverlässigsten öffnen Sie die Entwicklertools des Browsers (F12) und prüfen im Network-Panel (Netzwerk), welches Captcha-Skript die Seite lädt. Sie können es auch am Aussehen erkennen.

So sehen die einzelnen Captchas auf einer Webseite aus (animierte Darstellungen, keine Screenshots). Klicken Sie auf eine Karte, um die zugehörige Typseite zu öffnen. Wenn das Aussehen nicht eindeutig ist, bestätigen Sie es mit der Kurzübersicht und dem Network-Panel weiter unten.

Was Sie sehen Was es ist Welcher Aufgabentyp
Ein Kontrollkästchen „Ich bin kein Roboter“ / „I’m not a robot“ reCAPTCHA v2 reCAPTCHA v2
Kein Kontrollkästchen; erst nach dem Klick auf „Senden“ erscheint eine Bildaufgabe; unten rechts ein kleines reCAPTCHA-Logo reCAPTCHA v2 unsichtbar (oder v3) Siehe „reCAPTCHA-Versionen“ weiter unten
Keinerlei Interaktion; unten rechts nur das reCAPTCHA-Logo reCAPTCHA v3 reCAPTCHA v3
Ein Kontrollkästchen „Ich bin ein Mensch“; Bildaufgaben mit hCaptcha-Kennzeichnung hCaptcha hCaptcha
Ein Cloudflare-Prüffeld im Formular; nach dem Häkchen bleibt die Seite stehen Cloudflare Turnstile Turnstile
Die ganze Seite zeigt „Einen Moment bitte…“ / „Verbindung wird überprüft“ und leitet automatisch weiter Cloudflare-Prüfseite Cloudflare-Prüfseite
Puzzle- und Bildaufgaben von Arkose Labs (z. B. „Wählen Sie das richtig ausgerichtete Bild“) FunCaptcha FunCaptcha-Bilderkennung
Ein Bild mit verzerrten Buchstaben und Ziffern Zeichen-Captcha Bild zu Text

Suchen Sie im Network-Panel nach api.js oder enterprise.js:

Geladenes Skript Version
recaptcha/api.js ohne render-Parameter oder mit render=explicit v2 Standard
Wie oben, und die URL der anchor-Anfrage enthält size=invisible v2 unsichtbar: fügen Sie in der Aufgabe "isInvisible": true hinzu
recaptcha/api.js?render=WEBSITE_SCHLÜSSEL (render ist nicht explicit) v3 Standard
recaptcha/enterprise.js ohne render-Parameter oder mit render=explicit v2 Enterprise
recaptcha/enterprise.js?render=WEBSITE_SCHLÜSSEL v3 Enterprise

Beispiele:

https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit → v2
https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696 → v3
https://www.google.com/recaptcha/enterprise.js?render=explicit → v2 Enterprise

Das unsichtbare v2 lässt sich manchmal nur mit einem v3-Typ lösen. Probieren Sie beide aus.

Sie können auch den folgenden Code in der Konsole (Console) ausführen. Er listet alle reCAPTCHAs auf der Seite mit Version, Website-Schlüssel, Seiten-URL und Callback-Funktion auf:

find-recaptcha-clients.js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
if (typeof ___grecaptcha_cfg === 'undefined') return [];
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(
([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
);
if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
if (found) {
const [sublevelKey, sublevel] = found;
data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
findRecaptchaClients();

Beispielausgabe:

[
{
"id": "0",
"version": "V2",
"sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"function": "onSuccess",
"callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
"pageurl": "https://www.google.com/recaptcha/api2/demo"
}
]

Zum Vergleich eignen sich die offiziellen Demoseiten von Google: v2 Standard https://www.google.com/recaptcha/api2/demo, v2 unsichtbar https://www.google.com/recaptcha/api2/demo?invisible=true.

Beide stammen von Cloudflare, sind aber nicht dasselbe:

  • Turnstile ist ein Prüffeld, das in ein Formular der Seite eingebettet ist. Nach der Prüfung erscheint ein Häkchen, die Seite selbst wird nicht weitergeleitet. Die Seite lädt challenges.cloudflare.com/turnstile/v0/api.js. Verwenden Sie Turnstile.
  • Die Cloudflare-Prüfseite ersetzt die gesamte Seite durch die Prüfseite von Cloudflare mit „Einen Moment bitte…“ bzw. „xx.com muss zuerst die Sicherheit Ihrer Verbindung überprüfen“. Sie kann ebenfalls ein Prüffeld enthalten; nach bestandener Prüfung werden Sie automatisch auf die eigentliche Seite weitergeleitet. Im Quelltext stehen __cf_chl_rt_tk oder cdn-cgi/challenge-platform. Verwenden Sie Cloudflare-Prüfseite.

Wenn Ihr Programm bei der Anfrage 403 und „Just a moment…“ erhält, die Seite sich im Browser aber direkt öffnen lässt, wird meist nur der TLS-Fingerprint blockiert. Verwenden Sie dann eine Bibliothek, die den TLS-Fingerprint eines Browsers nachahmt (z. B. curl_cffi). Dann gelingt die Anfrage, und die Prüfseite muss nicht gelöst werden.