Périmètre sûr : ce guide s'applique uniquement à vos propres applications et environnements (QA, préproduction, production) ou à des systèmes pour lesquels vous détenez une autorisation écrite. Il ne couvre pas l'automatisation de sites tiers.
Près de huit heures par semaine : c'est ce qu'une équipe QA a cessé de perdre en arrêtant de relancer à la main des tests bloqués sur un défi CAPTCHA. Le gain ne tient pas à un clic magique, mais à une intégration traitée comme un workflow de navigateur reproductible. Voici comment l'obtenir dans votre propre pile, sans réécrire votre architecture.
Ce que vous devez stabiliser en priorité
Quatre points séparent une intégration fiable d'un test instable :
- l'état du compte et le stockage de la clé API ;
- le profil de navigateur et son extension ;
- le choix du gestionnaire de CAPTCHA selon la famille rencontrée ;
- le comportement de la page une fois le token appliqué.
Le scénario concret
La version que vous exécutez vraiment, c'est un job planifié ou un flux e2e qui franchit une étape protégée par un CAPTCHA. Le premier passage réussit en cinq minutes ; ensuite, il doit tenir malgré les déploiements, les aléas réseau et les changements de famille de CAPTCHA. CaptchaAI n'intervient que là où un défi apparaît ; le reste se limite à de simples appels HTTP.
Le déroulé, étape par étape
- Capturez le strict nécessaire. Ne gardez que les paramètres attendus (sitekey, URL, action, proxy optionnel) ; en stocker plus crée de fausses pistes de débogage.
- Envoyez la tâche à l'API et récupérez son identifiant. Traitez toute réponse non conforme comme une erreur.
- Interrogez le résultat. Attendez 15 s, puis toutes les 5 s, plafond 120 s par tâche.
- Appliquez le token dans la même session que celle du défi : même contexte de navigateur et mêmes cookies. Une session dépareillée est la première cause de rejet.
- Mesurez la latence, les retries et l'acceptation — résolution réussie et workflow réussi sont deux métriques distinctes.
Exemple de code
Exemple côté client, dans votre propre suite de tests :
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 identifiant de tâche. Séparez les journaux par environnement et corrélez les identifiants à votre traçage distribué (par exemple OpenTelemetry) : vous rejouez alors un scénario complet à partir d'un seul identifiant.
Checklist avant la mise en production
Relisez ces contrôles avant de fusionner l'intégration :
| Contrôle | Pourquoi | Réglage recommandé |
|---|---|---|
| Stockage de la clé | Une clé en clair fuit vite. | Secret CI ou coffre, jamais dans le code. |
| Traçabilité | Sans mesure, pas de diagnostic. | Durées d'appel et codes retour tracés. |
| Cadence d'interrogation | Trop interroger ajoute bruit et charge. | 15 s, puis toutes les 5 s, plafond 120 s. |
| Budget de retry | Des retries infinis masquent les défauts. | Trois tentatives, backoff borné, échecs journalisés. |
FAQ
Combien de temps faut-il pour brancher l'extension sur un workflow existant ?
L'intégration est volontairement petite : vous branchez la résolution là où un défi apparaît, le reste ne bouge pas. La plupart des équipes ont un premier passage vert le jour même.
Pourquoi mon token est-il refusé une fois le défi résolu ?
Presque toujours parce qu'il est appliqué dans une autre session que celle du défi. Gardez la résolution et l'envoi du formulaire dans le même contexte de navigateur, et vérifiez qu'il n'a pas expiré entre-temps.
Le coût augmente-t-il quand je multiplie les tests CAPTCHA en CI ?
Le modèle est facturé au thread, résolutions illimitées : dès l'offre BASIC ($15/mois, 5 threads), vous payez la concurrence, pas le nombre de défis. Les mauvais paramètres et les tempêtes de retry restent vos seuls vrais postes de coût.
Dépannage
| Symptôme | Cause probable | Correctif |
|---|---|---|
ERROR_WRONG_USER_KEY |
Espace parasite dans la clé ou mauvais compte. | Recopiez la clé et stockez-la comme secret CI. |
ERROR_ZERO_BALANCE |
Solde inférieur au minimum par tâche. | Rechargez et ajoutez une alerte de solde. |
ERROR_PAGEURL / ERROR_BAD_PARAMETERS |
Paramètre requis manquant ou mal formé. | Revalidez l'URL et le sitekey face au HTML réel. |
| Token refusé après résolution | Token appliqué dans une autre session que celle du défi. | Gardez résolution et envoi du formulaire dans le même contexte. |
Guides connexes
- Le démarrage rapide CaptchaAI
- La QA CAPTCHA en environnements autorisés
- Tester l'endpoint API sur vos formulaires
- Intégrer la résolution CAPTCHA dans votre CI
- Résoudre reCAPTCHA v2 via l'API
Passez d'un workflow instable à un pipeline mesurable. – Créez votre compte CaptchaAI.