Explainers

GeeTest v3 vs v4: o que mudou e como resolver

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_params neste guia) para não espalhar checagens de gcaptcha4/gt4.js pelo 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_id da v4 como gt.
  • 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.

Os comentários estão desativados para este artigo.