ERROR_WRONG_GOOGLEKEY significa que o parâmetro googlekey é inválido ou não corresponde à página de destino. Este guia cobre todas as causas e soluções.
O que causa esse erro
| Causa | Como identificar |
|---|---|
| Chave de site incorreta extraída | A chave não corresponde à origem da página |
| Chave do site empresarial enviada como padrão | Precisa do parâmetro enterprise=1 |
| Incompatibilidade de chave reCAPTCHA invisível | Precisa do parâmetro invisible=1 |
| Chave de site dinâmica alterada | Chave girada desde a extração |
| Sitekey da página errada | Extraído de iframe ou domínio diferente |
| Chave de site desatualizada codificada | A chave era válida anteriormente |
Como encontrar a chave do site correta
Método 1: pesquisa na fonte da página
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://staging.example.com/qa-login")
print(f"Sitekey: {sitekey}")
Método 2: DevTools do navegador
- Abra a página de destino no Chrome
- Pressione F12 → guia Elementos
- Pressione Ctrl+F e procure por
sitekey - Encontre o atributo
data-sitekey="..." - Copie o valor (sequência alfanumérica de 40 caracteres)
Método 3: guia Rede
- Abra a guia F12 → Rede
- Filtrar por
recaptcha - Procure solicitações para
google.com/recaptcha/api2/anchor - Encontre o parâmetro
k=no URL – esse é o sitekey
Validação antes de enviar
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://staging.example.com/qa-login")
validate_sitekey(sitekey)
Manipulação do reCAPTCHA Enterprise
As chaves de site corporativas têm a mesma aparência, mas exigem o parâmetro 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)
Lidando com reCAPTCHA invisível
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,
}
Extração dinâmica de Sitekey
Alguns sites carregam sitekeys via JavaScript. Use um navegador para extraí-los:
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
Solução de problemas
| Problema | Causa | Correção |
|---|---|---|
| A chave parece correta, mas o erro persiste | Chave do site empresarial | Adicionar enterprise=1 |
| Principais mudanças entre visitas | Chave de site dinâmica | Extraia uma chave nova a cada vez |
| Várias chaves de site na página | Selecionado errado | Combine a chave com o formato correto |
| Chave do iframe CDN | Chave do domínio errada | Extrair da página principal, não do iframe |
| Chave de site vazia extraída | Renderizado em JavaScript | Use Selênio para extrair |
Perguntas frequentes
Qual é a aparência de uma chave de site válida?
Uma chave de site reCAPTCHA normalmente contém 40 caracteres de texto alfanumérico mais hifens. Exemplo: 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-.
A mesma chave de site pode funcionar para v2 e v3?
Não. v2 e v3 usam chaves de site diferentes. Verifique a origem do script reCAPTCHA para determinar a versão.
Devo armazenar em cache a chave do site?
Cache por curtos períodos (minutos a horas). Alguns sites alternam chaves. Se a solução começar a falhar, extraia novamente a chave do site.
Guias Relacionados
Obtenha a chave do site correta —resolver com CaptchaAI.