Migración desde Cloudflare Turnstile
Esta guía le ayuda a migrar de Cloudflare Turnstile a MTCaptcha sustituyendo el widget cliente y reemplazando el flujo siteverify por CheckToken de MTCaptcha.
Por qué los equipos migran de Cloudflare Turnstile
- Estandarice las operaciones CAPTCHA en un único proveedor entre varios productos o unidades de negocio.
- Use el manejo de datos orientado a la privacidad de MTCaptcha y su conjunto de funciones específicas para CAPTCHA.
- Mantenga un flujo de desafíos accesible y modos opcionales de validación de baja fricción.
- Conserve una entrega global predecible del servicio, incluyendo China continental.
Resumen de migración
| Cloudflare Turnstile | MTCaptcha | |
|---|---|---|
| Script cliente | https://challenges.cloudflare.com/turnstile/v0/api.js | https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js |
| Clase del widget | .cf-turnstile (contenedor <div class="cf-turnstile" data-sitekey="…"></div>) | .mtcaptcha (use <div class="mtcaptcha"></div>) |
| Nombre del token | cf-turnstile-response (input oculto / campo de formulario) | mtcaptcha-verifiedtoken (nombre del input oculto) |
| API backend | POST https://challenges.cloudflare.com/turnstile/v0/siteverify (secret + response) | GET https://service.mtcaptcha.com/mtcv1/api/checktoken (privatekey + token) |
Mantenga el PrivateKey de MTCaptcha en el servidor. El navegador solo debe conocer el SiteKey dentro de mtcaptchaConfig.
Paso 1: Reemplazar el script y el widget del lado cliente
<!-- Remove [Cloudflare Turnstile] -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<div class="cf-turnstile" data-sitekey="YOUR_TURNSTILE_SITE_KEY"></div>
<!-- Add [MTCaptcha] -->
<script>
var mtcaptchaConfig = { "sitekey": "YOUR_SITEKEY" };
</script>
<script src="https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js" async defer></script>
<div class="mtcaptcha"></div>
Defina mtcaptchaConfig (con "sitekey") antes de cargar mtcaptcha.min.js.
Si usaba opciones de Turnstile como appearance, callback o refresh-expired, traslade ese comportamiento a MTCaptcha con APIs de JavaScript y JS Callbacks.
Paso 2: Actualizar la verificación del lado del servidor
Reemplace las llamadas de verificación de Turnstile por el CheckToken de MTCaptcha:
GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=YOUR_PRIVATEKEY&token=VERIFIED_TOKEN
Pase el valor enviado de mtcaptcha-verifiedtoken como token.
Trate cada token como de vida corta. Valide justo después del envío y evite reutilizar el mismo token en múltiples llamadas CheckToken salvo configuración intencional. Vea Validar Token (Con Clave Privada).
Solución de problemas
| Síntoma | Qué revisar |
|---|---|
| Widget en blanco / script 403 | Dominio no permitido para su SiteKey en Admin Portal. |
| Errores CSP | Permita https://service.mtcaptcha.com (y service2 si se usa). |
Aún se lee cf-turnstile-response | Actualice toda la lógica de formularios a mtcaptcha-verifiedtoken (incluyendo tests). |
token-expired | El usuario envió tarde; regenere token con nueva resolución. |
| Firewall saliente estricto | Cambie el host CheckToken a service2.mtcaptcha.com. |
Lecturas adicionales
- MTCaptcha inicio rápido
- Validar Token (Con Clave Privada)
- Low Friction Invisible Captcha
- Funciona en China
Post-Migration Checklist
- Script, contenedor y
siteverifyde Turnstile eliminados. -
mtcaptchaConfigcon"sitekey": "YOUR_SITEKEY"definido antes demtcaptcha.min.js. - El servidor verifica
mtcaptcha-verifiedtokenvíahttps://service.mtcaptcha.com/mtcv1/api/checktoken. - Comportamientos callback/refresh de Turnstile migrados a MTCaptcha.
- Hostnames de producción y staging validados contra Admin Portal.
- CSP/red permite recursos y API de MTCaptcha.