Périmètre sûr : Ce guide s'applique exclusivement à vos propres applications et environnements (QA, préproduction, production) ou à des sources pour lesquelles vous disposez d'une autorisation écrite. Il ne vise ni l'automatisation de sites tiers non autorisés, ni le franchissement de protections que vous ne contrôlez pas.
Oui, un job planifié qui extrait des données de registres d'entreprises peut traverser une étape protégée par CAPTCHA sans qu'un humain relance le formulaire : CaptchaAI renvoie un token que votre pipeline injecte, puis la collecte reprend. La vraie difficulté n'est pas de résoudre le défi une fois — c'est de tenir la charge nuit après nuit, malgré les déploiements et les aléas réseau. Ce guide montre comment intégrer CaptchaAI dans un flux d'extraction réel qui tient en production.
Pourquoi les registres d'entreprises déclenchent des CAPTCHA
Les portails de registres d'entreprises exposent souvent des données ouvertes, mais protègent leur formulaire de recherche par un CAPTCHA pour limiter le trafic automatisé. Vos jobs interrogent des sources comme Infogreffe ou le BODACC en France, la Banque-Carrefour des Entreprises (BCE/KBO) en Belgique, Zefix en Suisse ou le Registre des entreprises du Québec (REQ). Dès que la collecte tourne sans surveillance, ce défi CAPTCHA devient le point de rupture : le pipeline ne peut pas attendre qu'un opérateur ressaisisse le formulaire.
Côté conformité, des données publiques peuvent contenir des informations personnelles : minimisez les champs collectés et vérifiez vos obligations RGPD avant d'industrialiser l'extraction.
Architecture du pipeline d'extraction
L'orchestrateur pilote les étapes du job. La plupart sont de simples appels HTTP vers votre backend ou vers la source autorisée ; CaptchaAI n'intervient que là où un défi apparaît : il reçoit les paramètres du défi, renvoie un token, et votre code poursuit dans la même session. Cette séparation nette garde le pipeline lisible et facile à instrumenter.
Le déroulé recommandé, étape par étape
Le contrat de résolution est le même quelle que soit la famille de CAPTCHA :
- Capturez exactement ce que le solveur attend (sitekey, URL de la page, action, proxy éventuel). En stocker davantage crée de fausses pistes de débogage.
- Envoyez la tâche à l'API et traitez tout statut d'erreur comme un échec : journalisez la réponse et alertez.
- Interrogez le résultat régulièrement : attendez environ 15 s, puis toutes les 5 s, avec un plafond strict de 120 s par tâche.
- Appliquez le token dans la session qui a déclenché le défi — même navigateur, même client HTTP, même cookie jar. Une session dépareillée est la première cause de rejet.
- Mesurez la latence, les retries et l'acceptation en aval. Réussite du solveur et réussite du workflow sont deux métriques distinctes.
Exemple de code
L'extrait Node.js ci-dessous illustre l'envoi d'une tâche Turnstile depuis votre propre suite de tests. Le même schéma envoi/interrogation se transpose vers n'importe quel langage HTTP.
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 d'obtention du token, code retour HTTP, identifiant de tâche et taille de la file d'attente. Séparez les journaux par environnement et corrélez les identifiants à votre traçage distribué, par exemple via OpenTelemetry. Vous pourrez rejouer un scénario complet à partir d'un identifiant unique — en cas d'incident, ces journaux divisent par deux le temps de diagnostic.
Mesurer la réussite du pipeline
Câblez ces indicateurs dans votre tableau de bord existant pour repérer une régression avant vos utilisateurs. Les valeurs ci-dessous sont des objectifs opérationnels à adapter à votre environnement, pas des garanties : les temps réels varient selon l'infrastructure, le volume et le moment de la journée.
| Indicateur | Objectif à surveiller | Ce qu'il révèle |
|---|---|---|
| Latence de résolution (p50 / p95) | < 25 s / < 60 s pour les CAPTCHA à token | La médiane et la traîne restent maîtrisées. |
| Taux de réussite du solveur | seuil d'alerte à 95 % par famille | Vos paramètres correspondent au défi présenté. |
| Acceptation de bout en bout | 95 % après injection du token | Le backend accepte le token dans la bonne session. |
| Coût par résolution acceptée | stable sur la semaine | Ni retries ni mauvais paramètres n'érodent la marge. |
Dépannage
Les erreurs ci-dessous couvrent la majorité des tickets de support sur ce type d'intégration.
| Problème | Cause probable | Correctif |
|---|---|---|
ERROR_WRONG_USER_KEY |
Clé copiée avec un espace parasite ou mauvais compte. | Recopiez la clé et stockez-la comme secret CI. |
ERROR_ZERO_BALANCE |
Solde inférieur au minimum requis par tâche. | Rechargez le solde et ajoutez une alerte de seuil. |
ERROR_PAGEURL / ERROR_BAD_PARAMETERS |
Paramètre requis manquant ou mal formé. | Revalidez l'URL et le sitekey face au HTML réel. |
ERROR_CAPTCHA_UNSOLVABLE |
Le défi n'a pas pu être résolu de façon fiable. | Réessayez une fois, puis capturez le HTML et ouvrez un ticket. |
| Token refusé après résolution | Token appliqué dans une autre session que celle du défi. | Gardez résolution et envoi dans la même session HTTP. |
Liste de contrôle avant mise en production
- Le périmètre reste limité à vos propres applications ou à des sources autorisées.
- La clé CaptchaAI est stockée dans un secret CI ou un coffre, jamais dans le code.
- Les durées d'appel et les codes retour sont tracés, avec une stratégie de retry idempotent et des tests rejouables en CI.
FAQ
Les données de registres d'entreprises relèvent-elles du RGPD ?
Oui, dès qu'elles contiennent des informations sur des personnes physiques (dirigeants, associés, adresses), même issues de sources publiques. Documentez la base légale et vérifiez les conditions d'utilisation de chaque source avant d'automatiser.
Pourquoi mon token est-il refusé alors que la résolution a réussi ?
Presque toujours parce qu'il est appliqué dans une session différente de celle du défi. Si les cookies ou le contexte de navigateur changent entre la résolution et l'envoi du formulaire, le backend rejette le token. Gardez la résolution et la soumission dans le même client HTTP.
Comment dimensionner mes threads pour un job d'extraction nocturne ?
CaptchaAI facture au thread concurrent, résolutions illimitées par thread. Un thread traite un défi à la fois : dimensionnez selon votre pic de concurrence, pas selon le volume total. Le plan BASIC ($15/mois, 5 threads) suffit à un job séquentiel ; passez à STANDARD ($30/mois, 15 threads) ou ADVANCE ($90/mois, 50 threads) si plusieurs workers tournent en parallèle.
Que faire si le type de CAPTCHA du portail change ?
Vous changez le type de tâche (ou le paramètre method), gardez la même boucle envoi/interrogation, et redéployez. Le coût reste prévisible car la facturation dépend des threads, pas de l'intégration. Prévoyez une alerte sur le taux de réussite pour détecter le basculement.
Guides connexes
- Le démarrage rapide CaptchaAI
- La QA CAPTCHA en environnements autorisés
- Tester l'endpoint API sur vos propres formulaires
- Intégrer la résolution CAPTCHA en intégration continue
- Résoudre reCAPTCHA v2 via l'API
Passez d'un script fragile à un pipeline d'extraction supervisé. – Créez votre compte CaptchaAI.