Beide Versionen laufen unsichtbar und geben einen Risiko-Score (0,0 bis 1,0) zurück. Enterprise fügt Ursachencodes, adaptive Schwellenwerte und Google Cloud-Projektmanagement hinzu – aber aus Sicht der CaptchaAI-Lösung ist der einzige Parameterunterschied enterprise=1. Die Herausforderung besteht darin, herauszufinden, welche Version eine Website verwendet, da beide unsichtbar sind.
Funktionsvergleich
| Funktion | Standard v3 | Enterprise v3 |
|---|---|---|
| Unsichtbare Operation | Ja | Ja |
| Punktzahl (0,0–1,0) | Ja | Ja |
| Aktionsparameter | Erforderlich | Erforderlich |
| JS-Datei | api.js?render=KEY |
enterprise.js?render=KEY |
| Funktion ausführen | grecaptcha.execute() |
grecaptcha.enterprise.execute() |
| Ursachencodes | Nein | Ja (AUTOMATION, TOO_MUCH_TRAFFIC usw.) |
| Benutzerdefinierte Schwellenwerte pro Aktion | Nein | Ja (über Cloud Console) |
| Erkennung von Passwortlecks | Nein | Ja |
| Kontoverteidiger | Nein | Ja |
| Verifizierungsendpunkt | siteverify (kostenlos) |
recaptchaenterprise.googleapis.com (bezahlt) |
| CaptchaAI-Parameter | version=v3 |
version=v3 + enterprise=1 |
| Typische Lösungszeit | 10-20 Sekunden | 10-20 Sekunden |
So erkennen Sie, welche Version eine Site verwendet
Da beide Versionen unsichtbar sind (kein sichtbares Widget), muss die Erkennung auf JavaScript basieren:
Python-Erkennung:
import requests
import re
def detect_v3_type(url):
resp = requests.get(url)
html = resp.text
# Check for enterprise.js
if "enterprise.js" in html:
version = "enterprise_v3"
execute_fn = "grecaptcha.enterprise.execute"
elif "recaptcha/api.js" in html and "render=" in html:
version = "standard_v3"
execute_fn = "grecaptcha.execute"
else:
return None
# Extract sitekey from render parameter
key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
sitekey = key_match.group(1) if key_match else None
# Extract action parameter
action_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
action = action_match.group(1) if action_match else "unknown"
return {
"version": version,
"sitekey": sitekey,
"action": action,
"execute_fn": execute_fn
}
info = detect_v3_type("https://example.com/login")
print(info)
Node.js-Erkennung:
const axios = require("axios");
async function detectV3Type(url) {
const { data: html } = await axios.get(url);
let version, executeFn;
if (html.includes("enterprise.js")) {
version = "enterprise_v3";
executeFn = "grecaptcha.enterprise.execute";
} else if (html.includes("recaptcha/api.js") && html.includes("render=")) {
version = "standard_v3";
executeFn = "grecaptcha.execute";
} else {
return null;
}
const keyMatch = html.match(/render[=:]\s*['"]?([A-Za-z0-9_-]{40})/);
const actionMatch = html.match(/action['"]?\s*[:=]\s*['"](\w+)/);
return {
version,
sitekey: keyMatch?.[1] || null,
action: actionMatch?.[1] || "unknown",
executeFn,
};
}
Schnellcheck der Browserkonsole:
// Paste in DevTools console
if (document.querySelector('script[src*="enterprise.js"]')) {
console.log("Enterprise v3");
console.log("Execute:", typeof grecaptcha?.enterprise?.execute);
} else if (document.querySelector('script[src*="api.js"][src*="render="]')) {
console.log("Standard v3");
console.log("Execute:", typeof grecaptcha?.execute);
}
Lösung mit CaptchaAI
Standard v3
import requests
import time
# Submit
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"googlekey": sitekey,
"action": "login",
"pageurl": page_url
})
task_id = resp.text.split("|")[1]
# Poll
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id
})
if result.text.startswith("OK|"):
token = result.text.split("|")[1]
break
Enterprise v3
import requests
import time
# Submit — add enterprise=1
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"enterprise": 1, # Required for Enterprise
"googlekey": sitekey,
"action": "login",
"pageurl": page_url
})
task_id = resp.text.split("|")[1]
# Polling is identical to standard
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id
})
if result.text.startswith("OK|"):
token = result.text.split("|")[1]
break
Universeller Löser mit automatischer Erkennung
import requests
import time
import re
class RecaptchaV3Solver:
def __init__(self, api_key):
self.api_key = api_key
def detect_and_solve(self, page_url, action=None):
"""Auto-detect standard vs enterprise and solve."""
html = requests.get(page_url).text
is_enterprise = "enterprise.js" in html
key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
if not key_match:
raise Exception("No v3 sitekey found")
sitekey = key_match.group(1)
if not action:
action_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
action = action_match.group(1) if action_match else "verify"
params = {
"key": self.api_key,
"method": "userrecaptcha",
"version": "v3",
"googlekey": sitekey,
"action": action,
"pageurl": page_url
}
if is_enterprise:
params["enterprise"] = 1
resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
if not resp.text.startswith("OK|"):
raise Exception(f"Submit failed: {resp.text}")
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/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":
raise Exception(f"Solve failed: {result.text}")
raise Exception("Timed out")
solver = RecaptchaV3Solver("YOUR_API_KEY")
token = solver.detect_and_solve("https://example.com/login", action="login")
print(f"Token: {token[:40]}...")
Häufige Fehler
| Fehler | Ergebnis | Beheben |
|---|---|---|
Verwendung von enterprise=1 auf Standard v3 |
Token ist möglicherweise ungültig | Suchen Sie nach enterprise.js, bevor Sie das Flag hinzufügen |
Weglassen von enterprise=1 auf Enterprise v3 |
Token vom Backend abgelehnt | Immer hinzufügen, wenn enterprise.js vorhanden ist |
Falscher action-Parameter |
Niedrige Punktzahl, Token abgelehnt | Extrahieren Sie die genaue Aktionszeichenfolge aus dem Seiten-JavaScript |
Weglassen von version=v3 |
Solver behandelt es als v2 | Geben Sie für punktebasiertes reCAPTCHA immer version=v3 an |
| Verwenden von v2-Sitekey für v3-Lösung | ERROR_WRONG_GOOGLEKEY |
v3-Sitekeys stammen vom Parameter render=KEY |
Extrahieren des Aktionsparameters
Der Parameter action ist für Version 3 von entscheidender Bedeutung – sowohl für Standard als auch für Unternehmen. Wenn Sie die falsche Aktion senden, ist die Punktzahl niedrig und der Token wird möglicherweise abgelehnt.
import re
def find_v3_actions(html):
"""Extract all action parameters from page JavaScript."""
# Look for grecaptcha.execute(key, {action: '...'})
pattern = r"(?:grecaptcha\.(?:enterprise\.)?execute|action)\s*[(:]\s*['\"](\w+)"
actions = re.findall(pattern, html)
return list(set(actions))
# Common actions: "login", "submit", "register", "checkout", "homepage"
Token-Injektion
Gleicher Ansatz für beide Versionen:
# For browser-based workflows (Selenium)
driver.execute_script(
f'document.getElementById("g-recaptcha-response").value = "{token}";'
)
# For pure HTTP workflows
requests.post(page_url, data={
"g-recaptcha-response": token,
"username": "user",
"password": "pass"
})
// Puppeteer
await page.evaluate((tok) => {
document.getElementById("g-recaptcha-response").value = tok;
}, token);
// Pure HTTP (axios)
await axios.post(pageUrl, new URLSearchParams({
"g-recaptcha-response": token,
username: "user",
password: "pass",
}));
FAQ
Gibt Enterprise v3 unterschiedliche Bewertungen?
Das Bewertungsmodell ist ähnlich, Enterprise kann jedoch zusätzliche Signale und benutzerdefinierte Schwellenwerte verwenden. CaptchaAI behandelt beide identisch – das zurückgegebene Token funktioniert unabhängig davon, welches Modell Google verwendet.
Wie erkenne ich Enterprise v3 auf einer Seite?
Suchen Sie im Skript-Tag nach enterprise.js anstelle von api.js und im JavaScript nach grecaptcha.enterprise.execute(). Beide sind unsichtbar, sodass optisch kein Unterschied besteht.
Ist die Lösung von Enterprise v3 teurer?
Überprüfen Sie die aktuellen Preise von CaptchaAI. Enterprise-Lösungen haben möglicherweise einen anderen Preis, aber der Aufwand für die API-Integration ist identisch mit dem Standard.
Was passiert, wenn ich den Aktionsparameter nicht finden kann?
Probieren Sie gängige Werte aus: "verify", "submit", "homepage", "login". Wenn das Token immer noch abgelehnt wird, verwenden Sie die DevTools des Browsers, um in den Seitenskripten nach execute( zu suchen und die genaue Aktionszeichenfolge zu finden.
Kann eine Site ohne Vorankündigung zwischen Standard und Enterprise wechseln?
Ja. Websites können jederzeit zu Enterprise migrieren. Erstellen Sie Ihre Erkennung so, dass sie bei jedem Seitenladevorgang ausgeführt wird, anstatt die Version fest zu codieren.
Verwandte Leitfäden
- reCAPTCHA v3 Enterprise vs. Standard— alternativer Vergleichswinkel
- reCAPTCHA Enterprise vs. Standard – Vollständiger Leitfaden
- So lösen Sie reCAPTCHA v3 mithilfe der API– Standard-v3-Tutorial
- So lösen Sie reCAPTCHA v3 Enterprise mithilfe der API– Enterprise v3-Tutorial
- Erläuterung des Aktionsparameters reCAPTCHA v3
FAQ
Führt die Verwendung des falschen Enterprise-Flags zu Fehlern?
Oft ja. Websites, die Enterprise-Token verwenden, überprüfen die Enterprise-API, die Enterprise-Tokens erwartet. Bei Standard-Tokens kann die Verifizierung fehlschlagen und umgekehrt.
Wie erkenne ich Enterprise v3 programmgesteuert?
Durchsuchen Sie die Seitenquelle nach enterprise.js:
page_source = driver.page_source
is_enterprise = "enterprise.js" in page_source
Gibt es einen Leistungsunterschied?
Nein. Lösungszeit und Erfolgsquote sind bei beiden Versionen ähnlich.
Verwandte Leitfäden
- reCAPTCHA v3 Enterprise vs. Standard
- reCAPTCHA Enterprise vs. Standard – Vollständiger Leitfaden
- So lösen Sie reCAPTCHA v3 Enterprise mithilfe der API