Périmètre sûr : ce guide s'applique exclusivement à vos propres applications, à vos environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni le contournement de protections, ni l'évasion d'anti-bot.
Deux réglages de l'extension CaptchaAI décident si Cloudflare Turnstile se résout proprement dans un workflow automatisé : l'auto-submit, qui envoie le formulaire dès que le token cf-turnstile-response est injecté, et le délai, qui laisse la page se stabiliser avant cet envoi. Mal calibrés, ils produisent des soumissions rejetées, des doubles envois ou des tokens expirés. Bien réglés, ils rendent le parcours reproductible d'une exécution à l'autre.
À quoi servent l'auto-submit et le délai
Ces deux réglages gouvernent le moment exact de la soumission :
- Auto-submit (soumission automatique) : envoie le formulaire dès que Turnstile a produit un token valide. Piège classique — si votre script soumet aussi le formulaire, vous obtenez un double envoi. Désignez un seul responsable de la soumission.
- Délai : la marge entre l'injection du token et l'envoi. La fenêtre de validité de Turnstile est courte, alors trop long expire le token et trop court envoie avant que le champ caché soit renseigné.
Architecture et secrets
Traitez l'extension comme un composant de navigateur reproductible, pas comme une case cochée une fois. Deux invariants tiennent le workflow :
- Même session : le token récupéré auprès de CaptchaAI est injecté dans le formulaire au sein de la session qui a déclenché le défi.
- Secret hors du code : la clé CaptchaAI vit dans un coffre ou un secret de CI ; le déploiement la monte en variable d'environnement au runtime.
Exemple côté client
Extrait de votre propre suite de tests, qui soumet une tâche Turnstile et récupère l'identifiant à interroger :
import fetch from 'node-fetch';
const API_KEY = process.env.CAPTCHAAI_KEY;
export async function createTurnstileTask(siteKey, pageUrl) {
const res = await fetch('https://api.captchaai.com/createTask', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientKey: API_KEY,
task: {
type: 'TurnstileTaskProxyless',
websiteURL: pageUrl,
websiteKey: siteKey,
},
}),
});
const data = await res.json();
return data.taskId;
}
Observabilité et journalisation
Instrumentez les appels CAPTCHA pour obtenir des métriques exploitables : durée d'obtention du token, code retour HTTP, et l'écart entre réussite du solveur et acceptation en aval. Corrélez les journaux à votre traçage distribué (par exemple OpenTelemetry) pour rejouer un scénario complet à partir d'un identifiant unique. Côté conformité, minimisez les données personnelles écrites dans les logs : un identifiant de corrélation suffit et allège vos obligations RGPD.
Dépannage
| Symptôme | Cause probable | Correctif |
|---|---|---|
| Token refusé après résolution | token appliqué dans une session différente de celle qui a déclenché le défi | gardez résolution et envoi du formulaire dans le même contexte navigateur |
| Formulaire envoyé deux fois | auto-submit et script soumettent tous les deux | désignez un seul responsable de la soumission |
| Token expiré | délai trop long entre injection et envoi | réduisez le délai ; la fenêtre de validité de Turnstile est courte |
ERROR_ZERO_BALANCE |
solde sous le minimum par tâche | rechargez et ajoutez une alerte de solde au tableau de bord |
Liste de contrôle avant mise en production
- Le périmètre est strictement limité à vos propres applications ou à des sources autorisées.
- Un seul acteur soumet le formulaire : l'auto-submit ou votre script, jamais les deux.
- Le délai avant envoi tient compte de la fenêtre de validité courte de Turnstile.
- La clé CaptchaAI est stockée dans un secret de CI ou un coffre, jamais dans le code source.
- Un retry idempotent, avec backoff exponentiel borné, gère les erreurs transitoires.
FAQ
Faut-il activer l'auto-submit dans l'extension CaptchaAI ?
Cela dépend de votre parcours. Si votre script gère déjà l'envoi du formulaire, laissez l'auto-submit désactivé pour éviter les doubles soumissions. Si l'extension est le seul acteur, activez-le et retirez tout envoi concurrent.
Quel délai régler avant la soumission de Turnstile ?
Choisissez le délai le plus court qui laisse le champ cf-turnstile-response se remplir avant l'envoi ; un délai trop long fait expirer le token. Mesurez la valeur sur vos propres pages, car elle dépend du temps de rendu de votre formulaire.
Pourquoi mon token Turnstile est-il refusé après résolution ?
Le plus souvent, le token a été appliqué dans une session différente de celle qui a déclenché le défi. Conservez résolution et soumission dans le même contexte navigateur, puis vérifiez que le délai n'a pas laissé le token expirer.
Combien coûte la résolution de Turnstile à grande échelle ?
La facturation est basée sur les threads, avec résolutions illimitées par thread, et non par résolution. L'offre d'entrée BASIC ($15/mois, 5 threads) suffit à valider un workflow ; montez en threads quand votre volume l'exige. Les tempêtes de retry restent le vrai poste de coût.
Guides connexes
- Le démarrage rapide CaptchaAI
- La QA CAPTCHA en environnements autorisés
- Tester l'endpoint API sur vos formulaires
- L'intégration CAPTCHA dans la CI
- Résoudre reCAPTCHA v2 via l'API
Fiabilisez vos workflows CAPTCHA avec une approche reproductible. – Obtenez votre clé CaptchaAI.