Périmètre sûr : Ce guide s'applique uniquement à vos propres applications et à vos environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous détenez une autorisation écrite. Il ne porte ni sur l'automatisation de sites tiers, ni sur la désactivation des protections anti-bot de services que vous ne contrôlez pas.
Un backend workflow Bubble.io s'exécute côté serveur, et c'est précisément là qu'un CAPTCHA peut interrompre une automatisation : un appel programmé bute sur un défi, et tout le workflow s'arrête. La réponse tient en trois briques — récupérer un token via l'API CaptchaAI, l'injecter dans la même session, puis mesurer le résultat.
En tant qu'agence ou intégrateur, vous livrez cette intégration à l'intérieur d'un projet client plus large. Elle doit survivre au transfert, tourner sous les runbooks d'une autre équipe et rester stable en production, pas seulement sur une démo au parcours idéal. Ce guide décrit une architecture qui tient dans ces conditions.
Où CaptchaAI s'insère dans un workflow d'API Bubble.io
Le principe est simple : votre backend workflow — ou un composant interne appelé via le plugin API Connector — contacte CaptchaAI en HTTPS pour obtenir un token, puis l'injecte dans le formulaire ou la route d'API de votre propre application. Chaque étape est tracée, ce qui rend les régressions visibles dès la moindre montée de version.
Côté coût, CaptchaAI facture au thread simultané, avec des résolutions illimitées par thread. L'offre BASIC ($15/mois, 5 threads) suffit à la plupart des intégrations Bubble à faible volume ; vous montez en threads quand la charge augmente, sans surcoût par CAPTCHA ni par type.
Le déroulé recommandé, étape par étape
- Capturez uniquement les paramètres utiles. Inspectez la page ou l'appel réseau et ne conservez que ce que la famille de CAPTCHA attend (sitekey, URL de la page, action, proxy éventuel). Stocker davantage crée de fausses pistes de débogage.
- Envoyez la tâche à
https://ocr.captchaai.com/in.phpavecjson=1. Tout statut différent de1est une erreur : journalisez la réponse complète et remontez-la vers votre canal de supervision. - Interrogez le résultat sur
https://ocr.captchaai.com/res.php. Attendez 15 secondes avant la première interrogation, puis toutes les 5 secondes, avec un plafond strict de 120 secondes par tâche. - Appliquez le token dans la même session que celle qui a déclenché le défi — même contexte de navigateur, même client HTTP, même cookie jar. Une session dépareillée est la première cause de rejet après résolution.
- Mesurez la latence, les retries et l'acceptation en aval. La réussite de la résolution et la réussite du workflow sont deux métriques distinctes : suivez les deux.
Configuration des secrets et de la clé API
Isoler la clé API
La clé API CaptchaAI vit dans un coffre (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault) ou dans un secret d'intégration continue, jamais dans le code source ni dans un champ Bubble exposé côté client. Au déploiement, montez-la en variable d'environnement au runtime.
Minimiser les données personnelles (RGPD)
Pensez RGPD dès cette étape : ne journalisez jamais la clé et minimisez les données personnelles qui transitent par le workflow. Un secret bien isolé est aussi ce qui rend le transfert au client propre et auditable.
Exemple de code côté serveur
Voici un appel HTTP côté serveur, tel que vous l'écririez dans votre propre service plutôt que directement dans Bubble :
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
Quel que soit le langage, instrumentez les appels CAPTCHA pour obtenir des métriques exploitables : durée totale d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file d'attente interne. Ces signaux alimentent vos tableaux de bord de QA et vos alertes.
Séparez les logs par environnement (développement, préproduction, production) et conservez les identifiants corrélés à votre traçage distribué, par exemple via OpenTelemetry. Vous rejouez ainsi un scénario complet à partir d'un seul identifiant, et en cas d'incident le temps de diagnostic fond.
Liste de contrôle avant la mise en production
- Le périmètre reste limité à vos propres applications ou à des sources explicitement autorisées.
- La clé API vit dans un coffre ou un secret CI, jamais en clair dans le projet Bubble.
- Les paramètres envoyés (sitekey, URL, action) correspondent exactement à la page réelle.
- Le token est appliqué dans la même session que celle qui a déclenché le défi.
- Une stratégie de retry idempotent avec backoff exponentiel borné (trois tentatives, plafond à 30 secondes) couvre les erreurs transitoires.
- Les durées d'appel et les codes retour sont tracés à chaque exécution.
- Les tests sont rejouables depuis votre intégration continue.
Dépannage
| Symptôme | Cause probable | Correctif |
|---|---|---|
ERROR_WRONG_USER_KEY |
Clé copiée avec un espace parasite, ou mauvais compte. | Recopiez la clé depuis le tableau de bord et stockez-la en secret CI. |
ERROR_ZERO_BALANCE |
Solde sous le minimum par tâche. | Rechargez avant de réessayer et ajoutez une alerte de solde. |
ERROR_PAGEURL / ERROR_BAD_PARAMETERS |
Paramètre requis manquant ou mal formé. | Revalidez l'URL, le sitekey et les champs spécifiques contre le HTML réel. |
| Token refusé après résolution | Token appliqué dans une session différente de celle du défi. | Gardez résolution et soumission dans le même contexte de navigateur ou la même session HTTP. |
FAQ
Peut-on appeler CaptchaAI directement depuis un backend workflow Bubble.io ?
Oui. Un backend workflow s'exécute côté serveur : vous pouvez y déclarer l'appel via le plugin API Connector, ou déporter la logique vers un service externe que Bubble invoque. Dans les deux cas, gardez la clé API hors de tout élément visible côté client.
Pourquoi un token valide est-il parfois refusé en aval ?
Presque toujours parce qu'il a été appliqué dans une autre session que celle qui a déclenché le défi. Conservez le même contexte de navigateur ou le même client HTTP entre la résolution et la soumission du formulaire, et vérifiez que le cookie jar est bien partagé.
Comment gérer les erreurs transitoires de l'API ?
Mettez en place un retry avec backoff exponentiel borné : trois tentatives, doublement du délai à chaque essai, plafond à 30 secondes. Tracez chaque échec avec son identifiant de tâche. Si l'erreur persiste, vérifiez le réseau (DNS, certificats) et les quotas de votre clé.
Le coût augmente-t-il quand le volume monte ?
Il progresse avec le nombre de résolutions réussies, pas avec le nombre d'intégrations : la facturation est au thread, avec des résolutions illimitées par thread. Les vrais postes de surcoût sont les boucles de mauvais paramètres et les tempêtes de retries — la liste de contrôle ci-dessus les élimine.
Guides connexes
- Démarrage rapide CaptchaAI
- Tests CAPTCHA en environnements autorisés
- Tester l'endpoint API sur vos formulaires
- Intégrer la résolution CAPTCHA à votre CI
- Résoudre reCAPTCHA v2 via l'API
Adoptez une approche méthodique et reproductible pour vos workflows CAPTCHA. – Créez votre clé API CaptchaAI.