Guide de migration

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.

TTurnstileCurrent setup~10 minCaptchaLaDrop-in target

À quoi ressemble le changement de code

Avant — Turnstile
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
Après — CaptchaLa
<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>
Avant — vérification serveur Turnstile (Node)
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' })
Après — vérification serveur CaptchaLa (Node)
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. 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. 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. 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. 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. 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.

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.