Périmètre sûr : ce guide s'applique uniquement à vos propres applications, à vos environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni le contournement de protections.
Un CAPTCHA à empreinte canvas ne vous demande pas de cliquer sur des images : il mesure la façon dont votre navigateur dessine. L'anti-bot fait rendre un texte dans un élément <canvas> masqué, lit les pixels obtenus, puis en dérive une signature qui varie selon le GPU, le pilote, l'OS et les polices installées. Pour une équipe d'automatisation, tout l'enjeu est de garder ce flux stable en production.
Qu'est-ce que l'empreinte canvas ?
Le script lit le canvas rendu, le condense en un hachage et obtient un identifiant stable pour l'appareil, sans poser de cookie. Un environnement automatisé neuf renvoie une empreinte trop uniforme pour paraître humaine.
Pourquoi les anti-bot s'en servent
L'empreinte est rarement utilisée seule : elle rejoint un faisceau de signaux qu'un service comme reCAPTCHA v3 ou Cloudflare Turnstile agrège en un score :
- mouvements de souris et cadence de frappe ;
- cohérence WebGL et rendu graphique ;
- en-têtes réseau et attributs navigateur.
Un navigateur headless part avec un signal faible : un flux « marche en local » déclenche un défi en production. CaptchaAI couvre les familles concernées : reCAPTCHA v2 et v3, Cloudflare Turnstile et Challenge, GeeTest v3, et les CAPTCHA image/OCR et en grille.
Les trois acteurs du défi
- Le front affiche le widget et déclenche le défi.
- Le fournisseur CAPTCHA produit le token après résolution.
- Le backend vérifie le token côté serveur avant d'accorder l'accès.
Côté application, vous contrôlez trois leviers : configuration du widget, vérification du token, réponse selon le score.
Intégrer la résolution avec l'API CaptchaAI
Le déroulé est identique quelle que soit la famille :
- Capturez les paramètres — sitekey, URL, action, proxy éventuel ; le surplus crée de fausses pistes.
- Soumettez la tâche à
in.phpavecjson=1; traitez tout statut différent de1comme une erreur. - Interrogez le résultat sur
res.php: patientez 15 s, puis toutes les 5 s, plafond 120 s par tâche. - Appliquez le token dans la même session que celle qui a déclenché le défi — un décalage est la première cause d'un token refusé.
- Mesurez la latence, les retrys et l'acceptation en aval.
Avant un lot, vérifiez le solde pour éviter un échec sur solde nul :
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))
Le plan d'entrée est BASIC ($15/mois, 5 threads), facturé par thread concurrent, avec des résolutions illimitées.
Observabilité et RGPD
Instrumentez chaque appel : durée d'obtention du token, code HTTP, identifiant de tâche, taille de file. Si vous consignez des données personnelles, minimisez-les et vérifiez vos obligations RGPD. Suivez enfin l'acceptation de bout en bout séparément de la simple réussite du solveur : une tâche résolue n'est pas encore un workflow réussi.
Dépannage
| Symptôme | Cause probable | Correctif |
|---|---|---|
ERROR_WRONG_USER_KEY |
Clé mal copiée ou mauvais compte. | Recopiez-la en secret CI. |
ERROR_ZERO_BALANCE |
Solde sous le minimum par tâche. | Rechargez et alertez sur le solde. |
ERROR_BAD_PARAMETERS |
Paramètre requis absent ou mal formé. | Revalidez l'URL et le sitekey. |
| Token refusé après résolution | Token appliqué dans une autre session. | Gardez résolution et envoi dans le même contexte. |
FAQ
CaptchaAI prend-il en charge hCaptcha pour ce type de défi ?
Non — pas encore pris en charge. hCaptcha et FunCaptcha (Arkose Labs) ne sont pas pris en charge, et GeeTest v4 est annoncé comme à venir. CaptchaAI résout en revanche reCAPTCHA v2 et v3, Turnstile, Challenge et GeeTest v3.
Pourquoi mon token est-il refusé alors que la résolution a réussi ?
Presque toujours à cause d'une session incohérente : le token est appliqué dans un contexte différent de celui qui a déclenché le défi. Gardez la même session — navigateur, client HTTP, cookie jar — entre résolution et envoi.
Puis-je transposer cette méthode à ma pile technique ?
Oui. La séquence est la même quel que soit le langage : capturez, soumettez, interrogez le résultat, appliquez le token dans la même session, puis mesurez. Les exemples sont en Python et Node.js.
Guides connexes
- Le guide de démarrage rapide CaptchaAI
- La QA CAPTCHA en environnement autorisé
- Tester l'endpoint API sur vos formulaires
- Intégrer la résolution CAPTCHA en CI
- Résoudre reCAPTCHA v2 via l'API
Passez de la théorie à une intégration qui tient en production : démarrez sur une tranche réelle de votre charge et laissez les métriques décider. – Obtenez votre clé CaptchaAI.