Périmètre sûr : ce guide s'applique exclusivement à vos propres applications et à vos environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne vise pas l'automatisation de sites tiers.
Les Server Islands d'Astro rendent une partie de la page à la demande, côté serveur, pendant que le reste reste statique et mis en cache. C'est le bon endroit pour appeler CaptchaAI : la clé API ne quitte jamais le serveur, le token est obtenu dans un contexte contrôlé, puis injecté dans votre formulaire ou votre route d'API. Ce guide montre comment industrialiser cette résolution pour qu'elle tienne en CI et en production.
Pourquoi le côté serveur d'Astro simplifie la résolution
Logé dans un Server Island, l'appel CAPTCHA offre trois avantages : la clé reste hors du navigateur, la latence se mesure avec vos autres appels serveur, et le token part dans la session qui a déclenché le défi.
CaptchaAI expose une seule API pour reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3 et les CAPTCHA image/OCR et en grille. La facturation est par thread, avec des résolutions illimitées par thread : le tarif d'entrée est BASIC ($15/mois, 5 threads). Le coût reste donc prévisible quand le volume augmente.
Architecture : où placer l'appel CaptchaAI
Votre composant d'island appelle CaptchaAI via HTTPS pour récupérer un token, puis l'injecte dans votre formulaire ou votre route d'API. Tracez chaque étape pour repérer les régressions dès une montée de version d'Astro. Pour un déploiement européen, un worker sur OVHcloud ou Scaleway rapproche la résolution de vos utilisateurs — une illustration d'hébergement, pas une contrainte produit.
Sécuriser la clé API CaptchaAI
La clé vit dans un coffre (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault) ou dans un secret d'intégration continue, monté en variable d'environnement au runtime — jamais dans le code. Côté RGPD, ne journalisez aucune donnée personnelle liée aux requêtes : l'identifiant de tâche et le code retour suffisent.
Le flux de résolution, étape par étape
Le déroulé est identique quel que soit le type de CAPTCHA. Respectez l'ordre :
- Capturez uniquement les paramètres attendus (sitekey, URL de page, action, proxy optionnel). En stocker plus crée de fausses pistes de débogage.
- Soumettez la tâche à l'API et traitez tout statut non conforme comme une erreur : journalisez la réponse et remontez-la à votre supervision.
- Interrogez le résultat (polling) : attendez environ 15 s, puis toutes les 5 s, avec un plafond de 120 s par tâche.
- Appliquez le token dans la même session que celle qui a déclenché le défi (même contexte serveur, même client HTTP, même jar de cookies). Une session dissociée est la première cause de rejet.
- Suivez la latence, les retries et l'acceptation en aval : réussite de la résolution et réussite du workflow sont deux métriques distinctes.
Exemple de code : créer une tâche Turnstile
Appel HTTP côté serveur, dans votre propre service :
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;
}
Le contrat est le même ailleurs : soumettre, interroger, appliquer le token — transposable vers Python, Go ou Java.
Observabilité et journalisation
Instrumentez chaque appel CAPTCHA pour obtenir des métriques exploitables : durée d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file d'attente. Séparez les logs par environnement et corrélez les identifiants à votre traçage distribué (OpenTelemetry). Vous rejouez alors un scénario complet depuis un seul identifiant, ce qui divise par deux le temps de diagnostic.
Mesurer la réussite
Les chiffres ci-dessous reposent sur des mesures observées et des retours d'utilisateurs. Ils varient selon l'environnement, le volume et l'heure.
| Indicateur | Objectif | Ce qu'il révèle |
|---|---|---|
| Latence de première résolution (p50) | < 25 s pour les CAPTCHA à token, < 8 s pour l'OCR image | L'intégration est saine et n'attend pas de retries. |
| Latence de première résolution (p95) | < 60 s pour les CAPTCHA à token | La traîne est contenue et vos timeouts bien dimensionnés. |
| Taux de réussite de résolution | ≥ 95 % par famille de CAPTCHA | Vos paramètres sont corrects et la résolution correspond au défi réel. |
| Acceptation de bout en bout | ≥ 95 % après application du token | La vérification en aval accepte le token dans la même session. |
Liste de contrôle avant la mise en production
- Le périmètre reste limité à vos applications ou à des sources autorisées.
- La clé CaptchaAI est dans un secret CI ou un coffre, jamais dans le code.
- Les durées d'appel et les codes retour sont tracés à chaque exécution.
- Un retry idempotent avec backoff exponentiel borné gère les erreurs transitoires.
- Le token est appliqué dans la session qui a déclenché le défi.
- 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 comme secret CI. |
ERROR_ZERO_BALANCE |
Solde sous le minimum requis par tâche. | Rechargez le solde et ajoutez une alerte de solde dans votre tableau de bord. |
ERROR_PAGEURL / ERROR_BAD_PARAMETERS |
Paramètre requis manquant ou mal formé. | Revérifiez l'URL de page et le sitekey face au HTML réel. |
| Token refusé après résolution | Token appliqué dans une session différente de celle qui a déclenché le défi. | Gardez la résolution et l'envoi du formulaire dans le même contexte serveur ou HTTP. |
FAQ
Faut-il appeler CaptchaAI depuis le Server Island ou depuis une route d'API dédiée ?
Les deux fonctionnent tant que l'appel reste côté serveur. Le Server Island convient quand la résolution nourrit le rendu du composant ; une route d'API dédiée est préférable si plusieurs pages partagent la même logique.
Le token reste-t-il valide si le Server Island est servi depuis le cache ?
Non : un token est lié à la session qui a déclenché le défi et il expire. Ne mettez jamais en cache la réponse qui le contient. Mettez en cache le rendu statique si besoin, mais obtenez un token frais à chaque soumission.
CaptchaAI résout-il hCaptcha dans ce type d'intégration ?
Non — hCaptcha n'est pas pris en charge, pas plus que FunCaptcha (Arkose Labs). CaptchaAI couvre reCAPTCHA v2/v3, Cloudflare Turnstile et Challenge, GeeTest v3 et les CAPTCHA image/OCR et en grille. GeeTest v4 est annoncé « à venir ».
Comment maîtriser le coût quand le volume augmente ?
La facturation est par thread : le coût suit votre parallélisme, pas le nombre brut de résolutions. Les vrais postes de dépense sont les paramètres erronés et les tempêtes de retries, que la liste de contrôle ci-dessus élimine.
Guides connexes
- Le démarrage rapide CaptchaAI
- Tester vos environnements CAPTCHA de façon autorisée
- Tester l'endpoint API sur vos formulaires
- Intégrer la résolution CAPTCHA en CI
- Résoudre reCAPTCHA v2 via l'API
Fiabilisez vos workflows CAPTCHA avec une approche méthodique. — Obtenez votre clé CaptchaAI.