Se o formulário que você testa passou a carregar gcaptcha4.geetest.com em vez de api.geetest.com, o site migrou para o GeeTest v4 — e a resposta rápida é: a CaptchaAI resolve o GeeTest v3, com alta taxa de sucesso. Ela não resolve o GeeTest v4.
Para quem mantém suíte de QA ou pipeline de automação, essa distinção importa mais do que parece: confundir as duas versões é a causa mais comum de ERROR_WRONG_CAPTCHA_ID. Este guia mostra o que muda tecnicamente entre v3 e v4, como identificar qual delas está rodando na sua página e onde a CaptchaAI se encaixa.
Diferenças entre GeeTest v3 e v4
A v4 muda inicialização, parâmetros, tipos de desafio, endpoint e até a escala de dificuldade. A mudança mais relevante para quem integra é a pontuação de risco adaptativa: em vez de um desafio fixo, a dificuldade que o usuário (ou o solver) enfrenta varia conforme o sinal de risco calculado pelo GeeTest naquela sessão.
| Recurso | GeeTest v3 | GeeTest v4 |
|---|---|---|
| Inicialização | gt + challenge vindos do servidor |
Apenas captcha_id |
| Parâmetro de desafio | Obrigatório na chamada da API | Gerado no lado do cliente |
| Tipos de desafio | Deslizar, clicar | Deslizar, clicar, selecionar ícone, raciocínio espacial |
| Validação | Servidor retorna challenge |
Usa lot_number + pass_token |
| Endpoint da API | api.geetest.com |
gcaptcha4.geetest.com |
| Escala de dificuldade | Fixa | Pontuação de risco adaptativa |
Na prática, isso significa que testes automatizados podem ver desafios de dificuldade diferente em execuções distintas, mesmo na mesma página — vale registrar o tipo de desafio recebido em cada execução de QA para comparar resultados de forma justa.
Tipos de desafio da v4
A v4 amplia o catálogo além do slide clássico da v3, com quatro formatos que podem aparecer para o mesmo captcha_id dependendo da pontuação de risco:
Quebra-cabeça de slides
O clássico desafio de arrastar: o usuário move uma peça do quebra-cabeça até a posição que completa a imagem.
Clique em seleção
O usuário clica em objetos específicos indicados na instrução (por exemplo, "clique em todos os rostos"), usando reconhecimento de ícone.
Raciocínio espacial
Novidade da v4 — o usuário organiza formas seguindo um padrão espacial. Mais complexo que qualquer desafio disponível na v3.
Correspondência de ícones
O usuário casa ícones mostrados em sequência, na ordem correta. Mais difícil de reproduzir manualmente do que o slide.
Seja qual for o formato que a página mostrar, é GeeTest v4, e a CaptchaAI não consegue resolvê-lo. A CaptchaAI resolve o GeeTest v3.
Como identificar se a página usa GeeTest v3 ou v4
Antes de qualquer solução automática, o primeiro passo é confirmar qual versão a página está servindo — muitos sites migram silenciosamente e sem aviso na changelog pública. O script abaixo abre a página, procura captcha_id no HTML renderizado e verifica a presença do script gcaptcha4 ou gt4.js, sinais exclusivos da v4:
# extract_geetest_v4.py
import re
from selenium import webdriver
def extract_geetest_v4_params(url):
"""Extract GeeTest v4 captcha_id from a page."""
driver = webdriver.Chrome()
driver.get(url)
page_source = driver.page_source
# GeeTest v4 uses captcha_id instead of gt
match = re.search(r'captcha_id["\']?\s*[:=]\s*["\']([a-f0-9]+)', page_source)
captcha_id = match.group(1) if match else None
# Check for v4-specific script
is_v4 = "gcaptcha4" in page_source or "gt4.js" in page_source
driver.quit()
return {
"captcha_id": captcha_id,
"is_v4": is_v4,
"pageurl": url,
}
# Usage
params = extract_geetest_v4_params("https://staging.example.com/qa-login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")
Se o worker de QA roda a partir da região sa-east-1 (São Paulo) contra um endpoint fora do país, dê uma folga extra ao timeout dessa checagem: a variação de RTT entre a região e o servidor do provedor pode somar alguns segundos ao ciclo de detecção, principalmente em suítes que rodam em lote contra vários domínios.
Onde a CaptchaAI se encaixa
A CaptchaAI resolve o GeeTest v3. Ela não resolve o GeeTest v4. O método geetest recebe os valores da v3 (gt, um challenge novo e pageurl) e retorna challenge, validate e seccode. Ele não tem parâmetros para a v4, então não envie um captcha_id da v4 como gt. Rode primeiro a checagem acima: se a página carrega gcaptcha4.geetest.com ou gt4.js, ela usa a v4 e a CaptchaAI não consegue resolvê-la. Se a página ainda usa a v3, o guia Como resolver GeeTest v3 usando API mostra o fluxo completo.
Como a validação muda na v4
Numa página com a v3, passar no desafio gera três valores, geetest_challenge, geetest_validate e geetest_seccode, que o backend do site confere com o GeeTest. Numa página com a v4, captchaObj.getValidate() retorna quatro valores no lugar deles: lot_number, captcha_output, pass_token e gen_time. O backend do site os envia ao endpoint /validate da v4 em gcaptcha4.geetest.com, junto com o seu captcha_id e um sign_token assinado com a sua chave privada (documentação do GeeTest v4: API web e API de servidor). Código que lê ou preenche os três campos da v3 não tem com o que trabalhar numa página com a v4.
Solução de problemas
| Problema | Causa | Correção |
|---|---|---|
A busca por gt / challenge não encontra nada numa página que funcionava antes |
O site migrou para o GeeTest v4, que não tem challenge emitido pelo servidor |
Procure gcaptcha4.geetest.com ou gt4.js na página; do GeeTest, a CaptchaAI resolve só a v3 |
ERROR_WRONG_CAPTCHA_ID da CaptchaAI |
gt ou challenge inválido, como um captcha_id da v4 enviado como gt |
Envie o gt da v3 da página e um challenge novo a cada requisição |
captcha_id não encontrado |
Elemento renderizado via JavaScript | Extraia com Selenium da página renderizada |
Como preparar a suíte de QA para sites com v4
Muitos sites migram sem aviso, então deixe a suíte pronta para reconhecer a v4:
- Isole a detecção de versão em uma função só (como
extract_geetest_v4_paramsneste guia) para não espalhar checagens degcaptcha4/gt4.jspelo código. - Trate v3 e v4 como caminhos separados atrás de um único ponto de decisão: só a v3 vai para a CaptchaAI, que não resolve o GeeTest v4. Não envie um
captcha_idda v4 comogt. - Registre a versão detectada e o tipo de desafio em cada execução de QA — isso facilita comparar taxa de sucesso e tempo de resolução entre execuções, já que a v4 varia a dificuldade por sessão.
Perguntas frequentes
A CaptchaAI consegue resolver o GeeTest v4?
Não. A CaptchaAI resolve o GeeTest v3, com alta taxa de sucesso. Ela não resolve o GeeTest v4, então não há taxa de sucesso da v4 para informar.
Como sei se um site já migrou do GeeTest v3 para a v4?
Veja o código-fonte: gcaptcha4.geetest.com ou gt4.js indicam v4; api.geetest.com com challenge ainda é v3.
O que muda na minha integração quando o site atualiza para v4?
A v4 não tem challenge emitido pelo servidor, e ao passar no desafio a página gera quatro valores (lot_number, captcha_output, pass_token e gen_time) em vez de três. O endpoint também sai de api.geetest.com para gcaptcha4.geetest.com. Por isso uma integração da v3 não pode simplesmente ser apontada para uma página com a v4, e a CaptchaAI não resolve o GeeTest v4.
Preciso de um plano diferente da CaptchaAI para resolver o GeeTest v3?
Não. A cobrança é por thread concorrente, com resoluções ilimitadas por thread — não por tipo de CAPTCHA. Para uma suíte de QA com volume baixo, o BASIC (US$ 15/mês, 5 threads) costuma bastar; suba para o ADVANCE (US$ 90/mês, 50 threads) se o paralelismo dos testes crescer.
Por que meu pipeline de v3 parou de funcionar depois que o site mudou para v4?
Provavelmente porque a integração ainda envia gt e challenge, parâmetros que a v4 não usa. Rode o script de detecção deste guia para confirmar a versão antes de depurar qualquer outra coisa. Se a página usa a v4, a CaptchaAI não consegue resolvê-la: ela resolve o GeeTest v3.
Guias relacionados
Resolva o GeeTest v3 — comece com a CaptchaAI. A CaptchaAI não resolve o GeeTest v4.