Périmètre sûr : Ce guide s'applique exclusivement à 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, ni l'évasion d'anti-bot.
L'extension CaptchaAI fonctionne dans le Chrome d'un émulateur Android exactement comme sur un poste de bureau, à une condition : la traiter comme un profil persistant, pas comme une case cochée une fois. Sous BlueStacks, la difficulté n'est pas la résolution, mais la stabilité de l'ensemble — état du compte, profil Chrome et gestionnaire CAPTCHA sélectionné.
Pourquoi passer par un émulateur Android
Une équipe QA francophone qui teste la version web mobile de sa propre application doit souvent reproduire le rendu Android sans parc de téléphones physiques. BlueStacks fournit ce Chrome mobile sur un runner Windows — hébergé chez OVHcloud ou Scaleway, par exemple — et l'extension CaptchaAI s'y charge comme dans n'importe quel Chrome de bureau. L'écueil classique : le profil de l'émulateur est réinitialisé à chaque lancement, l'extension disparaît, et le scénario échoue sans profil persistant.
Charger l'extension étape par étape
- Isolez l'environnement : la clé CaptchaAI vit dans un coffre ou un secret de CI, jamais dans le dépôt.
- Créez un répertoire de profil dédié (
--user-data-dir) et un dossier d'extension stable ; l'émulateur pointera toujours vers ces deux chemins. - Lancez le Chrome de l'émulateur avec ce profil et cette extension, puis vérifiez que l'icône CaptchaAI est bien visible.
- Sélectionnez le type de CAPTCHA de votre page — reCAPTCHA v2, reCAPTCHA v3, Cloudflare Turnstile ou une image OCR.
- Rejouez le scénario : le même profil conserve l'état du compte entre les redémarrages. CaptchaAI expose une API unique pour ces familles ; vous changez le type de tâche, la boucle envoi/interrogation reste identique.
Exemple : créer une tâche Turnstile
Encapsulez l'appel à CaptchaAI dans une fonction réutilisable : elle prend le sitekey et l'URL de votre page, renvoie un identifiant de tâche, puis trace la durée et le code retour :
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;
}
Vérifier le token côté backend
Le token renvoyé doit être validé par votre backend avant toute opération métier, et appliqué dans la même session que celle qui a déclenché le défi CAPTCHA : même contexte de navigateur, même cookie jar. Une session dépareillée est la première cause de rejet après résolution. Journalisez chaque appel (durée, code retour, identifiant de tâche) et, côté RGPD, ne conservez aucune donnée personnelle dans ces traces.
Points de contrôle avant la production
| Contrôle | Pourquoi | Réglage recommandé |
|---|---|---|
| Profil persistant | Un profil temporaire fait disparaître l'extension au redémarrage. | Figez --user-data-dir et le dossier d'extension. |
| Clé en secret | Une clé dans le code fuit dans l'historique Git. | Stockez-la dans un secret de CI ou un coffre. |
| Même session | Un token appliqué hors contexte est rejeté. | Gardez résolution et soumission dans le même contexte. |
| Budget de retry | Des retries infinis masquent les vrais défauts. | Trois tentatives, backoff exponentiel, échecs tracés. |
Dépannage
| Symptôme | Cause probable | Correctif |
|---|---|---|
| L'extension disparaît au redémarrage | Profil temporaire. | Réutilisez le même --user-data-dir. |
ERROR_WRONG_USER_KEY |
Clé copiée avec un espace ou mauvais compte. | Recopiez la clé depuis le tableau de bord. |
ERROR_ZERO_BALANCE |
Solde sous le minimum par tâche. | Rechargez et ajoutez une alerte de solde. |
| Token refusé après résolution | Token appliqué dans une autre session. | Conservez le même contexte de navigateur. |
FAQ
L'extension survit-elle au redémarrage de l'émulateur ?
Oui, à condition de lancer Chrome avec le même --user-data-dir et le même dossier d'extension. Si elle disparaît après un redémarrage, c'est que l'émulateur repart sur un profil temporaire : figez les deux chemins.
Puis-je transposer cette méthode à ma propre pile technique ?
Oui. Le déroulé ne change pas selon le langage : isolez l'environnement, chargez l'extension dans un profil persistant, tracez les appels CAPTCHA, puis validez le token côté backend. Les exemples utilisent Node.js et Python, mais la logique vaut pour tout écosystème HTTP.
Le prix dépend-il du nombre de résolutions dans l'émulateur ?
Non. La facturation CaptchaAI se fait au thread concurrent, pas à la résolution : le plan BASIC ($15/mois, 5 threads) inclut un nombre illimité de résolutions par thread. Un émulateur qui enchaîne les tests ne fait pas gonfler la note dans votre allocation.
Que faire en cas d'erreur transitoire de l'API ?
Appliquez un retry avec backoff exponentiel borné (par exemple trois tentatives, doublement du délai, plafond à 30 s) et tracez chaque échec avec son identifiant de tâche. Si l'erreur persiste, contrôlez le réseau (DNS, certificats) et les quotas de votre clé.
Guides connexes
- Le guide de démarrage rapide CaptchaAI
- Faire de la QA CAPTCHA sur des environnements autorisés
- Tester l'endpoint API sur vos propres formulaires
- Intégrer la résolution CAPTCHA à votre CI
- Résoudre reCAPTCHA v2 via l'API
Fiabilisez vos workflows CAPTCHA avec une approche méthodique et reproductible. – Obtenez votre clé CaptchaAI.