Périmètre sûr : ce guide s'applique à vos propres applications, à vos environnements de QA ou de production, ou à des systèmes que vous êtes autorisé à tester. Il ne décrit ni l'automatisation de sites tiers, ni le contournement de protections.
Un token CAPTCHA valide peut être refusé si la session qui l'utilise ne ressemble pas à celle qui a déclenché le défi. En-têtes HTTP, cookies et empreinte TLS forment la signature de votre session : quand elle change entre la résolution et la soumission, le backend voit deux clients différents et rejette la requête. Maîtriser ces trois leviers rend l'intégration stable et mesurable.
Ce que révèlent vos en-têtes, cookies et empreinte TLS
Chaque appel expose une signature composite. Les en-têtes (User-Agent, Accept-Language, ordre des champs) annoncent quel client parle ; les cookies portent l'état de session, dont les jetons posés à l'affichage du CAPTCHA ; l'empreinte TLS identifie la bibliothèque réseau, indépendamment de vos en-têtes. L'enjeu est la cohérence : si un navigateur headless déclenche le défi mais qu'un client HTTP distinct soumet le token, les trois signatures divergent et l'acceptation chute. D'où la règle : résolvez et soumettez dans la même session.
Le modèle à trois acteurs
Trois acteurs suffisent à raisonner : le front affiche le widget et collecte le contexte, le fournisseur CAPTCHA émet le défi puis renvoie un token à durée de vie limitée, et le backend revérifie ce token côté serveur. CaptchaAI intervient à la production du token via une API unique, quelle que soit la famille de CAPTCHA.
Workflow de résolution CAPTCHA, étape par étape
- Capturez les paramètres attendus : ce que la famille de CAPTCHA réclame (sitekey, URL de page, action, proxy optionnel).
- Envoyez la tâche à l'endpoint
in.phpavecjson=1. Tout statut différent de1est une erreur à journaliser. - Interrogez le résultat sur
res.php: attendez 15 s, puis toutes les 5 s, avec un plafond de 120 s par tâche. - Appliquez le token dans la même session qui a déclenché le défi : même navigateur, même client HTTP, même stockage de cookies.
- Suivez la latence, les retries et l'acceptation en aval. L'écart entre réussite du solveur et acceptation finale signale un problème d'empreinte.
Exemple : vérifier le solde avant un lot de tests
Avant une suite de préproduction planifiée (par exemple sur Scaleway), vérifiez le solde pour éviter qu'un ERROR_ZERO_BALANCE n'interrompe l'exécution :
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
def get_balance() -> float:
resp = requests.post(
'https://api.captchaai.com/getBalance',
json={'clientKey': API_KEY},
timeout=15,
)
resp.raise_for_status()
return float(resp.json().get('balance', 0))
La facturation CaptchaAI se fait au thread (résolutions illimitées) : dès l'offre BASIC ($15/mois, 5 threads), le coût dépend de votre concurrence, pas du volume.
Observabilité et dépannage
Instrumentez les appels CAPTCHA : 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).
| Symptôme | Cause probable | Correctif |
|---|---|---|
ERROR_WRONG_USER_KEY |
Clé copiée avec des espaces ou mauvais compte. | Recopiez la clé et stockez-la en 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 manquant ou mal formé. | Revalidez l'URL, le sitekey et les champs contre le HTML. |
| Token refusé après résolution | Token appliqué dans une autre session. | Gardez résolution et soumission dans le même contexte. |
Liste de contrôle avant mise en production
- Le périmètre reste limité à vos applications ou à des sources autorisées.
- La clé CaptchaAI est stockée en secret CI ou en coffre, jamais dans le code.
- La résolution et la soumission partagent le même contexte de session.
- Un retry idempotent (trois tentatives, backoff exponentiel) est en place.
FAQ
Pourquoi un token CAPTCHA valide est-il parfois refusé ?
Le plus souvent parce que la session a changé entre résolution et soumission : si en-têtes, cookies ou empreinte TLS diffèrent, le backend voit un autre client et rejette le token. Rejouez-le dans la session d'origine.
Comment conserver la même session entre résolution et soumission ?
Réutilisez le même contexte de navigateur ou le même client HTTP, avec le même stockage de cookies. Ne résolvez pas dans un navigateur headless pour soumettre depuis un client distinct : c'est ce qui casse le plus souvent l'acceptation.
CaptchaAI prend-il en charge hCaptcha ?
Non — pas encore pris en charge. CaptchaAI résout reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3, l'image/OCR, les grilles et BLS, plus CaptchaFox (bêta), Friendly Captcha (bêta) et Lemin (bêta).
Guides connexes
- Le démarrage rapide CaptchaAI
- La QA CAPTCHA en environnements autorisés
- Tester l'endpoint API sur vos formulaires
- La résolution CAPTCHA en intégration continue
- Résoudre reCAPTCHA v2 via l'API
Fiabilisez vos workflows CAPTCHA de façon méthodique et reproductible. – Obtenez votre clé CaptchaAI.