reCAPTCHA v2 Enterprise fügt dem Standard-Kontrollkästchen „Ich bin kein Roboter“ eine Risikobewertung auf Unternehmensniveau hinzu. Das Widget sieht genauso aus wie Standard v2, die Token werden jedoch über das Enterprise-Backend von Google mit strengerer Validierung überprüft. Um das Problem mit CaptchaAI zu lösen, fügen Sie enterprise=1 zu Ihrer v2-Anfrage hinzu.
Dieser Leitfaden behandelt die vollständige Node.js-Implementierung – die Erkennung von Enterprise v2, die Übermittlung an CaptchaAI, die Abfrage des Ergebnisses und die Injektion des Tokens.
Was Sie brauchen
| Anforderung | Einzelheiten |
|---|---|
| CaptchaAI API-Schlüssel | captchaai.com |
| Node.js 14+ | Mit eingebautem fetch oder node-fetch |
| Sitekey | Von der Enterprise-Anker-URL (Parameter k=) |
| Seiten-URL | Vollständige URL, unter der das CAPTCHA erscheint |
| Aktion (optional) | Aus dem Parameter sa= in der Anker-URL |
Schritt 1: reCAPTCHA v2 Enterprise identifizieren
Öffnen Sie DevTools und suchen Sie auf der Registerkarte „Netzwerk“ nach der Enterprise-Ankeranforderung:
https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6LdxxXXxAAAAAAcX...&sa=LOGIN&...
Schlüsselindikatoren:
- Die Skriptquelle enthält
/recaptcha/enterprise.jsoder/enterprise/anchor - Der Parameter
k=ist der Sitekey - Der Parameter
sa=(falls vorhanden) ist die Aktion
Standard v2 verwendet /recaptcha/api2/anchor – fügen Sie enterprise=1 nicht für Standard v2 hinzu.
Schritt 2: Senden Sie die Aufgabe an CaptchaAI
const API_KEY = "YOUR_API_KEY";
async function submitTask(sitekey, pageurl, action) {
const params = new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: pageurl,
enterprise: "1",
json: "1",
});
if (action) {
params.set("action", action);
}
const response = await fetch(
`https://ocr.captchaai.com/in.php?${params}`
);
const data = await response.json();
if (data.status !== 1) {
throw new Error(`Submit failed: ${data.request}`);
}
console.log(`Task submitted. ID: ${data.request}`);
return data.request;
}
Schritt 3: Umfrage zum Ergebnis
Warten Sie 20 Sekunden vor der ersten Umfrage und überprüfen Sie dann alle 5 Sekunden:
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function pollResult(taskId) {
await delay(20000);
for (let attempt = 0; attempt < 30; attempt++) {
const params = new URLSearchParams({
key: API_KEY,
action: "get",
id: taskId,
json: "1",
});
const response = await fetch(
`https://ocr.captchaai.com/res.php?${params}`
);
const data = await response.json();
if (data.status === 1) {
console.log(`Solved. Token: ${data.request.substring(0, 60)}...`);
return {
token: data.request,
userAgent: data.user_agent || "",
};
}
if (data.request !== "CAPCHA_NOT_READY") {
throw new Error(`Solve failed: ${data.request}`);
}
console.log(`Attempt ${attempt + 1}: not ready, waiting 5s...`);
await delay(5000);
}
throw new Error("Solve timed out");
}
Schritt 4: Injizieren Sie das Token
Senden Sie das gelöste Token als g-recaptcha-response. Wenn die API ein user_agent zurückgegeben hat, verwenden Sie es in Ihren Anforderungsheadern:
async function submitForm(token, userAgent) {
const headers = { "Content-Type": "application/x-www-form-urlencoded" };
if (userAgent) {
headers["User-Agent"] = userAgent;
}
const response = await fetch("https://example.com/api/login", {
method: "POST",
headers,
body: new URLSearchParams({
username: "user",
password: "pass",
"g-recaptcha-response": token,
}),
});
console.log(`Response status: ${response.status}`);
return response;
}
Vollständiges Arbeitsskript
const API_KEY = "YOUR_API_KEY";
const SITE_KEY = "6LdxxXXxAAAAAAcXxxXxxX91xxxxxxxx8xxOx7A";
const PAGE_URL = "https://example.com/login";
const ACTION = "LOGIN"; // optional — omit if not in anchor URL
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function solveRecaptchaV2Enterprise() {
// Submit task
const submitParams = new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: SITE_KEY,
pageurl: PAGE_URL,
enterprise: "1",
action: ACTION,
json: "1",
});
const submitRes = await fetch(
`https://ocr.captchaai.com/in.php?${submitParams}`
);
const submitData = await submitRes.json();
if (submitData.status !== 1) {
throw new Error(`Submit error: ${submitData.request}`);
}
const taskId = submitData.request;
console.log(`Task ID: ${taskId}`);
// Poll for result
await delay(20000);
for (let i = 0; i < 30; i++) {
const pollParams = new URLSearchParams({
key: API_KEY,
action: "get",
id: taskId,
json: "1",
});
const pollRes = await fetch(
`https://ocr.captchaai.com/res.php?${pollParams}`
);
const pollData = await pollRes.json();
if (pollData.status === 1) {
return {
token: pollData.request,
userAgent: pollData.user_agent || "",
};
}
if (pollData.request !== "CAPCHA_NOT_READY") {
throw new Error(`Solve error: ${pollData.request}`);
}
await delay(5000);
}
throw new Error("Solve timed out");
}
(async () => {
const { token, userAgent } = await solveRecaptchaV2Enterprise();
console.log(`Token: ${token.substring(0, 60)}...`);
if (userAgent) console.log(`User-Agent: ${userAgent}`);
})();
Erwartete Ausgabe:
Task ID: 73849562810
Token: 03AGdBq24PBCqLmOx2V4pGHJjkR2xZ1r...
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
Fehlerbehebung
| Fehler | Ursache | Beheben |
|---|---|---|
ERROR_WRONG_USER_KEY |
Ungültiges API-Schlüsselformat | Der Prüfschlüssel aus Ihrem Dashboard besteht aus 32 Zeichen |
ERROR_KEY_DOES_NOT_EXIST |
Schlüssel nicht gefunden | Schlüssel verifizieren untercaptchaai.com |
ERROR_ZERO_BALANCE |
Unzureichendes Gleichgewicht | Laden Sie Ihr Konto auf |
ERROR_BAD_TOKEN_OR_PAGEURL |
Falscher Sitekey oder falsche URL | Extrahieren Sie den korrekten k=-Wert aus der Enterprise-Anker-URL |
ERROR_CAPTCHA_UNSOLVABLE |
Konnte nicht gelöst werden | Stellen Sie sicher, dass der Sitekey Enterprise v2 ist, und versuchen Sie es erneut |
| Token von der Website abgelehnt | Nichtübereinstimmung zwischen Benutzer und Agent | Verwenden Sie user_agent aus der Lösungsantwort |
FAQ
Wie erkenne ich Enterprise v2 im Vergleich zu Standard v2?
Enterprise v2 wird von /recaptcha/enterprise/ im Skript oder in der Anker-URL geladen. Standard v2 verwendet /recaptcha/api2/.
Ist der Aktionsparameter erforderlich?
Nur wenn die Anker-URL sa= enthält. Wenn nicht, lassen Sie es in Ihrer CaptchaAI-Anfrage weg.
Warum lehnt die Zielseite mein Token ab?
Am häufigsten: Nichtübereinstimmung zwischen Benutzer und Agent. Enterprise v2-Tokens sind an den User-Agent des Solvers gebunden. Verwenden Sie immer den in der Umfrageantwort zurückgegebenen user_agent-Wert.
Kann ich dies mit Puppeteer oder Playwright verwenden?
Ja. Extrahieren Sie den Sitekey von der Seite, lösen Sie ihn über die API und fügen Sie dann das Token in document.getElementById('g-recaptcha-response').innerHTML ein.
Was ist die typische Lösungszeit?
15–30 Sekunden, abhängig von der Serverauslastung.
Beginnen Sie mit der Lösung von reCAPTCHA v2 Enterprise
Holen Sie sich Ihren API-Schlüssel untercaptchaai.comund fügen Sie enterprise=1 zu Ihren v2-Anfragen hinzu.
Diskussionen (0)
Beteiligen Sie sich an der Unterhaltung
Melden Sie sich an, um Ihre Meinung zu teilen.
AnmeldenNoch keine Kommentare.