reCAPTCHA v2 Invisible hat kein sichtbares Kontrollkästchen. Es wird automatisch aktiviert, wenn ein Benutzer ein Formular absendet oder auf eine Schaltfläche klickt, und zeigt nur dann eine Herausforderung an, wenn die Risikoanalyse von Google verdächtiges Verhalten erkennt. Dies erschwert die Erkennung in der Automatisierung – Sie bemerken möglicherweise erst dann, dass ein CAPTCHA vorhanden ist, wenn Ihre Formularübermittlung fehlschlägt.
Wie sich Invisible reCAPTCHA von Standard v2 unterscheidet
| Funktion | reCAPTCHA v2 Standard | reCAPTCHA v2 Unsichtbar |
|---|---|---|
| Sichtbares Widget | Ja (Kontrollkästchen) | Nein (nur Abzeichen) |
| Benutzerinteraktion | Klicken Sie auf das Kontrollkästchen | Automatisch beim Absenden des Formulars |
data-size |
normal oder compact |
invisible |
| Herausforderungs-Popup | Immer möglich | Nur für verdächtige Benutzer |
| DOM-Element | .g-recaptcha div |
.g-recaptcha div oder programmatisch |
Unsichtbares reCAPTCHA erkennen
Methode 1: Überprüfen Sie das Datengrößenattribut
// Browser console
const widgets = document.querySelectorAll('.g-recaptcha');
widgets.forEach((el, i) => {
const size = el.getAttribute('data-size');
const sitekey = el.getAttribute('data-sitekey');
console.log(`Widget ${i}: size=${size}, sitekey=${sitekey}`);
if (size === 'invisible') {
console.log(' → This is Invisible reCAPTCHA');
}
});
Methode 2: Suchen Sie nach dem Abzeichen
Unsichtbares reCAPTCHA zeigt ein kleines Abzeichen in der Ecke:
const badge = document.querySelector('.grecaptcha-badge');
if (badge) {
console.log('reCAPTCHA badge found — likely Invisible reCAPTCHA');
console.log('Badge visibility:', getComputedStyle(badge).visibility);
}
Methode 3: Überprüfen Sie die Aufrufe von grecaptcha.execute
Wenn die Seite einen programmgesteuerten Aufruf verwendet (kein .g-recaptcha-Div):
// Look for grecaptcha.execute in page scripts
document.querySelectorAll('script:not([src])').forEach(s => {
if (s.textContent.includes('grecaptcha.execute')) {
console.log('Found grecaptcha.execute — Invisible reCAPTCHA');
const match = s.textContent.match(/grecaptcha\.execute\s*\(\s*['"]?([^'",\s)]+)/);
if (match) console.log('Sitekey:', match[1]);
}
});
Methode 4: Überprüfen Sie den Renderparameter des Skript-Tags
document.querySelectorAll('script[src*="recaptcha"]').forEach(s => {
if (s.src.includes('render=') && !s.src.includes('render=explicit')) {
console.log('Invisible/v3 reCAPTCHA detected in script:', s.src);
}
});
Lösung mit CaptchaAI
Der Hauptunterschied: Übergeben Sie invisible=1 an CaptchaAI, damit der Solver weiß, dass es sich um eine unsichtbare Variante handelt.
Python
import requests
import time
API_KEY = "YOUR_API_KEY"
# Submit with invisible flag
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-SITEKEY",
"pageurl": "https://example.com/login",
"invisible": "1", # critical for Invisible reCAPTCHA
"json": "1",
}).json()
if resp["status"] != 1:
raise Exception(f"Submit error: {resp['request']}")
task_id = resp["request"]
print(f"Submitted: {task_id}")
# Poll for result
for _ in range(24):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": "1"
}).json()
if result["status"] == 1:
print(f"Token: {result['request'][:50]}...")
break
if result["request"] != "CAPCHA_NOT_READY":
raise Exception(f"Error: {result['request']}")
JavaScript
const axios = require('axios');
const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: 'YOUR_API_KEY',
method: 'userrecaptcha',
googlekey: '6Le-SITEKEY',
pageurl: 'https://example.com/login',
invisible: 1,
json: 1,
}
});
const taskId = resp.data.request;
console.log(`Submitted: ${taskId}`);
Token-Injection für Invisible reCAPTCHA
Unsichtbares reCAPTCHA ist normalerweise an eine Schaltfläche oder ein Formular zum Senden gebunden. Nach der Injektion müssen Sie den Rückruf auslösen oder das Formular abschicken:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/login")
# After solving, inject and trigger
driver.execute_script("""
// Set the token
document.querySelector('textarea[name="g-recaptcha-response"]').value = arguments[0];
// Find and trigger the callback
var widget = document.querySelector('.g-recaptcha');
var callbackName = widget ? widget.getAttribute('data-callback') : null;
if (callbackName && typeof window[callbackName] === 'function') {
window[callbackName](arguments[0]);
}
""", token)
# Submit the form
driver.find_element(By.CSS_SELECTOR, "form#login").submit()
Identifizieren des Auslöseelements
Unsichtbares reCAPTCHA kann an eine bestimmte Schaltfläche gebunden werden:
<button class="g-recaptcha"
data-sitekey="6Le-SITEKEY"
data-callback="onSubmit"
data-size="invisible">
Submit
</button>
Oder programmgesteuert aktiviert:
// Site's code
document.getElementById('submit-btn').addEventListener('click', function() {
grecaptcha.execute();
});
Überprüfen Sie beide Muster:
// Find elements with g-recaptcha class that are buttons
document.querySelectorAll('button.g-recaptcha, input.g-recaptcha').forEach(el => {
console.log('Trigger element:', el.tagName, el.textContent.trim());
console.log(' data-sitekey:', el.getAttribute('data-sitekey'));
console.log(' data-callback:', el.getAttribute('data-callback'));
});
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Token abgelehnt | invisible=1 fehlt in der Übermittlung |
Fügen Sie invisible: "1" zur CaptchaAI-Anfrage hinzu |
| Sitekey kann nicht gefunden werden | Kein .g-recaptcha div |
Suchen Sie nach programmatischen grecaptcha.render()- oder grecaptcha.execute()-Aufrufen |
| Das Formular wird gesendet, schlägt jedoch fehl | Rückruf nicht ausgelöst | Suchen Sie die Funktion data-callback und rufen Sie sie auf |
| CAPTCHA nicht erkannt | Wird nur bei verdächtigem Datenverkehr angezeigt | Suchen Sie nach grecaptcha-badge-Element- oder Recaptcha-Skript-Tags |
FAQ
Wie kann ich Invisible v2 von v3 unterscheiden?
Invisible v2 verwendet grecaptcha.execute() ohne einen action-Parameter. v3 verwendet grecaptcha.execute(sitekey, {action: 'submit'}) mit einer Aktion. Außerdem verwendet Version 3 render=SITEKEY in der Skript-URL.
Ist es wichtig, die unsichtbare Flagge zu vergessen?
Ja. Ohne invisible=1 versucht der Solver möglicherweise einen anderen Lösungsansatz, der von der Site abgelehnte Token erzeugt.
Kann ich Invisible reCAPTCHA ohne Browser lösen?
Ja – Sie benötigen nur den Sitekey und die Seiten-URL. Der Browser wird nur benötigt, um das Token einzuschleusen und den Rückruf auszulösen.
Lösen Sie reCAPTCHA v2 Invisible nahtlos mit CaptchaAI
Holen Sie sich Ihren API-Schlüssel untercaptchaai.com.
Verwandte Leitfäden
- reCAPTCHA v2-Rückrufmechanismus
- Extrahieren von reCAPTCHA-Parametern aus der Seitenquelle
- CAPTCHA-Erkennung der Browserkonsole