Migra de GeeTest a CaptchaLa
Precio autogestionado, documentación en inglés primero y un solo token en lugar de cuatro campos ocultos. Cambia en menos de 10 minutos.
Cómo es el cambio 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' })Pasos de migración
- 1
Regístrate y obtén tu App Key + Secret
Crea una cuenta gratuita en CaptchaLa — sin llamada de ventas, sin formulario de contacto. Añade un sitio y copia la App Key (pública) y el App Secret (lado servidor).
- 2
Elimina el JS de inicialización de GeeTest
Borra la invocación de initGeetest4 y su callback onSuccess. Quita los cuatro inputs ocultos (lot_number, captcha_output, pass_token, gen_time) que estabas rellenando.
- 3
Añade la etiqueta del widget de CaptchaLa
Reemplaza todo el bloque de GeeTest por nuestro div + script. No se necesita configuración de JS — el widget se autoinicializa a partir de data-app-key.
- 4
Simplifica la verificación del servidor
Reemplaza la verificación de GeeTest (con su cálculo HMAC de sign_token, cuerpo de cuatro campos y comprobación de cadena de resultado) por un único POST JSON a apiv1.captcha.la/v1/validate y un flag valid (data.valid).
- 5
Despliega de forma gradual
Cambia un formulario a la vez. Observa la conversión y la tasa de desafíos. No hay mínimo ni contrato, así que un despliegue escalonado es gratis.
Preguntas frecuentes
¿Funcionará CaptchaLa igual de bien en China continental?
Sí. Operamos endpoints nativos dentro de China continental — la misma verificación de baja latencia que reciben los usuarios reales en cualquier otro lugar. Sin SDK distinto, sin facturación separada.
¿Y la experiencia de deslizador de GeeTest a la que mi equipo está acostumbrado?
CaptchaLa incluye el deslizador como uno de los tipos de desafío en el sistema adaptativo — no es el predeterminado, pero está disponible. La mayoría de los equipos descubren que el predeterminado (invisible para bajo riesgo + clic para mayor riesgo) convierte mejor que empezar con el deslizador.
¿Hay diferencias en la sensibilidad de la puntuación de riesgo?
El modelo de riesgo de GeeTest está ajustado para patrones de tráfico de APAC. El de CaptchaLa es global. Si tu tráfico es mayoritariamente de APAC, espera un comportamiento comparable. Si estás fuera de APAC, podrías ver una caída significativa en los falsos positivos.