ERROR_WRONG_GOOGLEKEY signifie que le paramètre googlekey n'est pas valide ou ne correspond pas à la page cible. Ce guide couvre toutes les causes et solutions.
Quelles sont les causes de cette erreur
| Parce que | Comment s'identifier |
|---|---|
| Clé de site incorrecte extraite | La clé ne correspond pas à la source de la page |
| Clé de site d'entreprise envoyée en standard | Besoin du paramètre enterprise=1 |
| Incompatibilité de clé reCAPTCHA invisible | Besoin du paramètre invisible=1 |
| Clé de site dynamique modifiée | Clé tournée depuis l'extraction |
| Mauvaise clé de site de la page | Extrait d'iframe ou d'un autre domaine |
| Clé de site obsolète codée en dur | La clé était valide auparavant |
Comment trouver la bonne clé de site
Méthode 1 : recherche de source de page
import re
import requests
def extract_sitekey(page_url):
"""Extract reCAPTCHA sitekey from page source."""
resp = requests.get(page_url, timeout=15)
html = resp.text
# Pattern 1: data-sitekey attribute
match = re.search(r'data-sitekey="([^"]+)"', html)
if match:
return match.group(1)
# Pattern 2: grecaptcha.render call
match = re.search(r"grecaptcha\.render\([^,]+,\s*\{[^}]*sitekey['\"]?\s*:\s*['\"]([^'\"]+)", html)
if match:
return match.group(1)
# Pattern 3: grecaptcha.execute call
match = re.search(r"grecaptcha\.execute\(['\"]([^'\"]+)", html)
if match:
return match.group(1)
# Pattern 4: reCAPTCHA script src
match = re.search(r"recaptcha/api\.js\?render=([^&\"]+)", html)
if match:
return match.group(1)
return None
sitekey = extract_sitekey("https://example.com/login")
print(f"Sitekey: {sitekey}")
Méthode 2 : outils de développement du navigateur
- Ouvrir la page cible dans Chrome
- Appuyez sur l'onglet F12 → Éléments.
- Appuyez sur Ctrl+F et recherchez
sitekey. - Rechercher l'attribut
data-sitekey="..." - Copiez la valeur (chaîne alphanumérique de 40 caractères)
Méthode 3 : onglet Réseau
- Ouvrez l'onglet F12 → Réseau.
- Filtrer par
recaptcha - Rechercher des demandes à
google.com/recaptcha/api2/anchor - Recherchez le paramètre
k=dans l'URL — c'est la clé du site
Validation avant soumission
import re
def validate_sitekey(sitekey):
"""Validate sitekey format before API call."""
if not sitekey:
raise ValueError("Sitekey is empty")
# Standard format: 40 alphanumeric + hyphens/underscores
if not re.match(r'^[a-zA-Z0-9_-]{20,60}$', sitekey):
raise ValueError(f"Invalid sitekey format: {sitekey}")
return True
# Use before solving
sitekey = extract_sitekey("https://example.com/login")
validate_sitekey(sitekey)
Gestion de reCAPTCHA Entreprise
Les clés de site d'entreprise se ressemblent mais nécessitent le paramètre enterprise :
import requests
# Standard reCAPTCHA — loads via recaptcha/api.js
# Enterprise reCAPTCHA — loads via recaptcha/enterprise.js
def detect_enterprise(page_url):
"""Detect if page uses reCAPTCHA Enterprise."""
resp = requests.get(page_url, timeout=15)
return "recaptcha/enterprise.js" in resp.text
# Submit with enterprise flag
is_enterprise = detect_enterprise("https://example.com")
data = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": "https://example.com",
"json": 1,
}
if is_enterprise:
data["enterprise"] = 1
resp = requests.post("https://ocr.captchaai.com/in.php", data=data)
Gestion du reCAPTCHA invisible
def detect_invisible(html):
"""Detect invisible reCAPTCHA."""
indicators = [
'data-size="invisible"',
"grecaptcha.execute(",
"recaptcha/api.js?render=",
]
return any(i in html for i in indicators)
# Submit with invisible flag
data = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": "https://example.com",
"invisible": 1,
"json": 1,
}
Extraction dynamique de clé de site
Certains sites chargent les clés de site via JavaScript. Utilisez un navigateur pour les extraire :
from selenium import webdriver
from selenium.webdriver.common.by import By
def extract_dynamic_sitekey(url):
"""Extract sitekey from JavaScript-rendered page."""
driver = webdriver.Chrome()
driver.get(url)
# Wait for reCAPTCHA to load
import time
time.sleep(3)
# Try data-sitekey attribute
elements = driver.find_elements(By.CSS_SELECTOR, "[data-sitekey]")
if elements:
sitekey = elements[0].get_attribute("data-sitekey")
driver.quit()
return sitekey
# Try iframe src parameter
iframes = driver.find_elements(By.CSS_SELECTOR, "iframe[src*='recaptcha']")
for iframe in iframes:
src = iframe.get_attribute("src")
import re
match = re.search(r'[?&]k=([^&]+)', src)
if match:
driver.quit()
return match.group(1)
driver.quit()
return None
Dépannage
| Problème | Parce que | Corriger |
|---|---|---|
| La clé semble correcte mais l'erreur persiste | Clé de site d'entreprise | Ajouter enterprise=1 |
| Changements clés entre les visites | Clé de site dynamique | Extraire une nouvelle clé à chaque fois |
| Plusieurs clés de site sur la page | Mauvaise sélection | Faire correspondre la clé au formulaire correct |
| Clé de l'iframe CDN | Mauvaise clé de domaine | Extrait de la page principale, pas de l'iframe |
| Clé de site vide extraite | Rendu JavaScript | Utilisez le sélénium pour extraire |
FAQ
À quoi ressemble une clé de site valide ?
Une clé de site reCAPTCHA comprend généralement 40 caractères alphanumériques plus des tirets. Exemple : 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-.
La même clé de site peut-elle fonctionner pour la version 2 et la version 3 ?
Les versions 2 et 3 utilisent des clés de site différentes. Vérifiez la source du script reCAPTCHA pour déterminer la version.
Dois-je mettre en cache la clé du site ?
Cache pour de courtes périodes (minutes à heures). Certains sites effectuent une rotation des clés. Si la résolution échoue, ré-extrayez la clé de site.
Guides connexes
Obtenez la bonne clé de site –résoudre avec CaptchaAI.