Périmètre sûr : ce guide s'applique uniquement à vos propres applications, à vos environnements de QA et de préproduction, ou à des systèmes pour lesquels vous détenez une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni la neutralisation de protections anti-automatisation.
Un parcours de renouvellement de passeport est un formulaire long, à état, protégé exactement là où votre suite de tests doit passer : la prise de rendez-vous. Si vous exploitez un tel portail, la réponse tient en trois décisions : cadrer le périmètre autorisé, résoudre le défi CAPTCHA via une API dans la même session, puis mesurer séparément la résolution et l'acceptation en aval. Le BLS CAPTCHA sert de famille de référence : c'est celle qu'affichent le plus souvent les portails de démarches consulaires.
Portail de passeport : quel périmètre de test est autorisé
Cadrez le périmètre avant d'écrire la moindre ligne de code. Trois configurations sont défendables : vous éditez le portail, vous l'exploitez pour un client qui a autorisé l'intégration par écrit, ou vous opérez sous convention signée. Archivez la preuve d'autorisation à côté du dépôt de tests.
Côté données, appliquez le réflexe RGPD : un parcours de renouvellement manipule des identités et des numéros de titre. Travaillez sur des dossiers synthétiques, purgez les captures d'écran de vos artefacts d'intégration continue et limitez la conservation des journaux.
Pourquoi le BLS CAPTCHA fait échouer vos tests de bout en bout
Le défi n'est pas difficile en soi : il est instable dans le temps. Le premier essai passe en cinq minutes sur un poste de développement, puis la suite tombe la nuit suivante — fenêtre de rendez-vous décalée, portail redéployé, famille de CAPTCHA remplacée. Trois causes expliquent l'essentiel des échecs :
- Paramètres capturés approximativement. Un sitekey ou une URL recopiés à la main créent de fausses pistes de diagnostic avant même que vous regardiez le solveur.
- Session dissociée. La réponse est appliquée dans un contexte de navigateur autre que celui qui a déclenché le défi : première cause de rejet après une résolution réussie.
- Retry non borné. Une boucle sans plafond masque un défaut réel et consomme vos threads.
CaptchaAI prend en charge le BLS CAPTCHA en disponibilité générale, avec une résolution mesurée sous la seconde, ainsi que les CAPTCHA image et les grilles d'images, reCAPTCHA v2 et v3, Cloudflare Turnstile, Cloudflare Challenge et GeeTest v3. hCaptcha et FunCaptcha ne sont pas pris en charge, et GeeTest v4 est annoncé à venir : vérifiez la famille réellement affichée avant de câbler quoi que ce soit.
Architecture d'un test CAPTCHA sur un portail de passeport
L'orchestrateur — runner de tests ou worker interne — pilote la séquence. CaptchaAI n'intervient qu'aux étapes où un défi apparaît ; les autres restent des appels HTTP vers votre backend.
- Capturez sur la page vivante les seuls paramètres attendus par la famille de CAPTCHA.
- Envoyez la tâche et traitez tout statut différent de
1comme une erreur journalisée. - Interrogez le résultat à rythme fixe : première interrogation après 15 s, puis toutes les 5 s, plafond dur de 120 s.
- Appliquez la réponse dans la même session : même contexte de navigateur, même client HTTP, même jar de cookies.
- Poursuivez le parcours et enregistrez le code HTTP en aval, indépendamment du succès de la résolution.
C'est la séquence décrite dans le guide de résolution de reCAPTCHA v2 via l'API ; seuls les paramètres changent.
Scénario : un centre de dépôt à Bruxelles teste ses créneaux
Un prestataire belge exploite le portail de rendez-vous d'un centre de dépôt et vérifie chaque matin que le formulaire reste franchissable. Sa suite nocturne rejoue quinze parcours en préproduction : sélection du consulat, dossier fictif, défi CAPTCHA, confirmation du créneau. Depuis le câblage de la résolution, la suite tourne sur un worker hébergé en Europe et l'équipe suit un seul indicateur de tête : l'écart entre taux de résolution et taux d'acceptation.
Exemple de code côté client
Extrait d'une suite de tests maison. La logique de création de tâche reste la même quelle que soit la famille ; seul le type change.
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;
}
La clé se lit depuis l'environnement, jamais depuis le code source : un secret d'intégration continue ou un coffre, avec rotation documentée. Pour le premier appel, voyez le démarrage rapide CaptchaAI.
Observabilité : les métriques à instrumenter
Quatre signaux suffisent : durée d'obtention de la réponse, code retour HTTP, identifiant de tâche et profondeur de la file d'attente. Corrélez chaque identifiant à votre traçage distribué, par exemple via OpenTelemetry, pour rejouer un parcours complet.
Suivez ensuite deux courbes distinctes : le taux de réussite du solveur et le taux d'acceptation en aval. Les confondre revient à ne mesurer ni l'un ni l'autre. Côté fiabilité, bornez le retry à trois essais avec un backoff exponentiel plafonné à 30 s et rendez chaque étape idempotente — un parcours rejoué ne doit jamais créer deux réservations.
Budget et threads : dimensionner votre plan
La facturation se fait au thread simultané, avec un nombre de résolutions illimité par thread. Pour quelques dizaines de parcours exécutés en série, le plan BASIC ($15/mois, 5 threads) suffit ; une équipe qui parallélise sur plusieurs consulats de test passe à STANDARD ($30/mois, 15 threads). Facturation en dollars US. Ce qui fait dériver le coût, ce sont les boucles de retry et les paramètres mal capturés.
Liste de contrôle avant la mise en production
- Périmètre limité à vos applications ou à des sources autorisées, preuve archivée.
- Jeux de données synthétiques, artefacts personnels purgés.
- Clé API dans un secret d'intégration continue ou un coffre, jamais en clair.
- Durées d'appel, codes retour et identifiants de tâche tracés à chaque exécution.
- Retry borné à trois tentatives, étapes idempotentes, alerte sur écart durable.
FAQ
CaptchaAI prend-il en charge le BLS CAPTCHA ?
Oui, en disponibilité générale, avec une résolution mesurée sous la seconde. hCaptcha et FunCaptcha ne sont pas pris en charge ; GeeTest v4 est annoncé à venir.
Quelle autorisation faut-il réunir avant de lancer ces tests ?
Un accord écrit de l'entité qui exploite le portail, précisant les environnements et la fenêtre d'exécution. Un ticket interne ne suffit pas si le portail appartient à un tiers.
Comment le RGPD s'applique-t-il à une suite de tests de ce type ?
Dès qu'un parcours manipule des identités réelles, vous traitez des données personnelles, même en préproduction. Utilisez des dossiers fictifs, limitez la conservation des journaux et validez vos obligations en interne.
Comment savoir si l'échec vient du portail ou du solveur ?
Comparez les deux courbes. Une résolution stable avec une acceptation qui chute désigne un changement côté portail : formulaire modifié, session invalidée, créneau expiré. Une résolution qui chute pointe vers les paramètres envoyés.
Guides connexes
- Le démarrage rapide CaptchaAI
- La QA CAPTCHA en environnement autorisé
- Tester l'endpoint de l'API sur vos formulaires
- La résolution CAPTCHA en intégration continue
- Résoudre reCAPTCHA v2 via l'API
Cadrez, mesurez, puis automatisez : c'est dans cet ordre qu'une suite CAPTCHA devient exploitable. – Obtenez votre clé CaptchaAI.