Migre do GeeTest para o CaptchaLa
Preço self-service, documentação em inglês primeiro e um único token em vez de quatro campos ocultos. Troque em menos de 10 minutos.
Como fica a mudança de código
<div id="captcha"></div>
<script src="https://static.geetest.com/v4/gt4.js"></script>
<script>
initGeetest4({ captchaId: 'YOUR_CAPTCHA_ID' }, function(captcha) {
captcha.appendTo('#captcha')
captcha.onSuccess(function() {
var result = captcha.getValidate()
document.getElementById('lot_number').value = result.lot_number
document.getElementById('captcha_output').value = result.captcha_output
document.getElementById('pass_token').value = result.pass_token
document.getElementById('gen_time').value = result.gen_time
})
})
</script><button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
.onSuccess(res => onToken(res.token))
.bindTo('#login-btn'));
</script>const sign = crypto.createHmac('sha256', process.env.GEETEST_KEY)
.update(req.body.lot_number).digest('hex')
const res = await fetch(`https://gcaptcha4.geetest.com/validate?captcha_id=${process.env.GEETEST_ID}`, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
lot_number: req.body.lot_number,
captcha_output: req.body.captcha_output,
pass_token: req.body.pass_token,
gen_time: req.body.gen_time,
sign_token: sign,
}),
})
const data = await res.json()
if (data.result !== 'success') return res.status(400).json({ error: 'bot' })const res = await fetch('https://apiv1.captcha.la/v1/validate', {
method: 'POST',
headers: {
'X-App-Key': process.env.CAPTCHALA_APP_KEY,
'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
'Content-Type': 'application/json',
},
body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })Passos da migração
- 1
Cadastre-se e pegue sua App Key + Secret
Crie uma conta gratuita no CaptchaLa — sem chamada de vendas, sem formulário de contato. Adicione um site, copie a App Key (pública) e o App Secret (lado do servidor).
- 2
Remova o JS de inicialização do GeeTest
Apague a invocação initGeetest4 e seu callback onSuccess. Remova os quatro inputs ocultos (lot_number, captcha_output, pass_token, gen_time) que você populava.
- 3
Adicione a tag do widget do CaptchaLa
Substitua todo o bloco do GeeTest pela nossa div + script. Nenhuma configuração de JS necessária — o widget se autoinicializa a partir do data-app-key.
- 4
Simplifique a verificação no servidor
Substitua a verificação do GeeTest (com seu cálculo de sign_token via HMAC, corpo de quatro campos e checagem de string de resultado) por um único POST JSON para apiv1.captcha.la/v1/validate e uma flag valid (data.valid).
- 5
Faça o rollout gradualmente
Troque um formulário de cada vez. Observe a conversão e a taxa de desafio. Não há mínimo nem contrato, então um rollout em etapas é gratuito.
Perguntas frequentes
O CaptchaLa funciona igualmente bem na China continental?
Sim. Operamos endpoints nativos dentro da China continental — a mesma verificação de baixa latência que usuários reais recebem em outros lugares. Sem SDK diferente, sem cobrança separada.
E a UX de slider do GeeTest a que minha equipe está acostumada?
O CaptchaLa inclui o slider como um dos tipos de desafio no sistema adaptativo — não é o padrão, mas está disponível. A maioria das equipes descobre que o padrão (invisível para baixo risco + clique para risco maior) converte melhor do que slider-first.
Há diferenças na sensibilidade do scoring de risco?
O modelo de risco do GeeTest é ajustado para padrões de tráfego da APAC. O do CaptchaLa é global. Se seu tráfego é majoritariamente APAC, espere comportamento comparável. Se você está fora da APAC, pode ver uma queda significativa em falsos positivos.