Migrer de Turnstile vers CaptchaLa
Remplacement prêt à l'emploi en moins de 10 minutes. Gardez vos formulaires, abandonnez la dépendance à Cloudflare, gagnez un repli par challenge et des points de présence en Chine continentale.
À quoi ressemble le changement de code
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></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 res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
secret: process.env.TURNSTILE_SECRET,
response: req.body['cf-turnstile-response'],
}),
})
const data = await res.json()
if (!data.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' })Étapes de migration
- 1
Inscrivez-vous et récupérez votre App Key + Secret
Créez un compte CaptchaLa gratuit, ajoutez un site, et copiez l'App Key (publique) et l'App Secret (côté serveur). Aucun compte Cloudflare requis.
- 2
Remplacez la balise du widget
Remplacez cf-turnstile par captchala et data-sitekey par data-app-key. Changez le script src vers notre CDN. La forme du widget (un div d'emplacement + une balise script) reste identique.
- 3
Mettez à jour le nom du champ caché
Turnstile injecte cf-turnstile-response ; CaptchaLa injecte captchala-token. La plupart des gestionnaires de formulaire ne lisent pas le champ par son nom, mais si le vôtre le fait, renommez la constante à un seul endroit.
- 4
Mettez à jour l'appel de vérification serveur
Changez l'endpoint pour apiv1.captcha.la/v1/validate. Nous acceptons du JSON (Turnstile attend du form-urlencoded), mettez donc à jour le Content-Type et la forme du corps. La réponse renvoie toujours un indicateur valid (data.valid) pour votre logique de branchement.
- 5
Déployez progressivement
Gardez Turnstile sur la plupart des formulaires, déployez d'abord CaptchaLa sur un seul formulaire à faible trafic. Surveillez la conversion et le taux de challenge pendant une journée. Étendez une fois satisfait — aucun minimum, aucun contrat.
Plus rapide : utilisez un plugin
WordPress + WooCommerce
Si vous utilisiez un plugin Turnstile communautaire sur WordPress, remplacez-le par notre plugin officiel. Connexion, inscription, commentaires, paiement WooCommerce, CF7 / Gravity / WPForms — tout est couvert en une seule installation.
View integration →Flarum
Installez l'extension CaptchaLa via Composer, activez-la dans l'admin, et les formulaires Flarum (inscription, connexion, réinitialisation de mot de passe, réponses aux messages) passent tous par CaptchaLa.
View integration →Questions fréquentes
Puis-je conserver mon CDN Cloudflare et utiliser CaptchaLa ?
Oui. CaptchaLa est indépendant de tout CDN — la plupart de nos clients gardent Cloudflare pour le CDN et utilisent CaptchaLa pour la vérification. Les deux couches n'entrent pas en conflit.
Mes règles de détection de bots Cloudflare s'appliqueront-elles toujours ?
Oui — ce sont des fonctionnalités WAF / Bot Management de Cloudflare, distinctes de Turnstile. Retirer le widget Turnstile n'a aucun effet sur la configuration de votre zone Cloudflare.
Et si j'utilise Turnstile via Cloudflare Workers ?
La migration est identique côté Worker. Remplacez le fetch Turnstile par le fetch CaptchaLa. Nous avons dans la documentation un extrait compatible avec le runtime Workers.