Tutorials

Résoudre le CAPTCHA d'un flux 2FA avec l'extension CaptchaAI

Périmètre sûr : ce guide s'applique uniquement à vos propres applications ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni l'évasion d'un anti-bot.

Un flux d'authentification à deux facteurs qui affiche aussi un CAPTCHA se stabilise dès que vous traitez l'extension CaptchaAI comme une étape reproductible de votre workflow navigateur, et non comme un clic ponctuel. Ce qui casse en production, ce n'est presque jamais la résolution, mais le profil du navigateur, la session et l'usage du token juste après. Fixez un profil persistant, chargez l'extension au démarrage du contexte et laissez le même contexte consommer le token : ce guide détaille cette approche sur une page que vous contrôlez.

L'extension CaptchaAI dans un flux 2FA, étape par étape

Chacune de ces étapes ferme une cause de panne courante.

  1. Isolez l'environnement. Séparez la QA de la production et rangez la clé CaptchaAI dans un secret CI ou un coffre, jamais dans le code. Pour une équipe hébergée en Europe (OVHcloud, Scaleway), mesurez la latence depuis la région de vos workers.
  2. Détectez le défi, puis capturez ses paramètres. Sur un flux 2FA, le CAPTCHA ne s'affiche pas à chaque tentative. Ne récupérez que ce qu'attend la famille concernée : sitekey, URL de la page et, le cas échéant, l'action ou le proxy.
  3. Envoyez la tâche, puis interrogez le résultat jusqu'à récupérer le token, avec un plafond de tentatives borné.
  4. Appliquez le token dans la même session que celle qui a déclenché le défi : même contexte de navigateur, même client HTTP, même cookie jar.
  5. Vérifiez le token côté serveur avant de franchir l'étape 2FA : aucune requête ne doit être acceptée sur la base d'un token périmé, rejoué ou contrefait.

Encapsuler l'appel à l'API CaptchaAI

Isolez l'appel à CaptchaAI dans une fonction réutilisable qui prend la sitekey et l'URL de votre page, renvoie un token et trace la durée et le code retour. L'exemple ci-dessous crée une tâche Turnstile et renvoie son identifiant :

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;
}

Interrogez ensuite le résultat jusqu'à récupérer le token, avec un plafond de tentatives borné. Le même contrat s'applique quelle que soit la famille de CAPTCHA : vous changez le type de tâche, la logique reste identique, et le portage vers Python, Go ou Java devient mécanique.

Journalisation et conformité RGPD

Instrumentez chaque appel CAPTCHA : durée d'obtention du token, code retour HTTP et identifiant de tâche, corrélés à votre traçage distribué (par exemple OpenTelemetry). Comme un flux 2FA manipule des identifiants, minimisez les données personnelles dans les logs : ne journalisez ni le mot de passe, ni le code 2FA, ni le token en clair. Vous gardez le diagnostic possible tout en restant aligné sur vos obligations RGPD.

Dépannage

Symptôme Cause probable Correctif
Token refusé après résolution Token appliqué dans une autre session que le défi Gardez résolution et soumission dans le même contexte.
Le CAPTCHA ne s'affiche pas Le flux 2FA ne déclenche le défi que parfois Détectez sa présence avant d'envoyer une tâche.
Clé rejetée Clé copiée avec un espace parasite ou mauvais compte Recopiez la clé depuis le tableau de bord, en secret CI.
Solde insuffisant Le solde du compte est passé sous le minimum Rechargez et ajoutez une alerte de solde.

Liste de contrôle avant la 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 source.
  • Le token est appliqué dans la même session que le défi, puis vérifié côté serveur.
  • Les durées et les codes retour sont tracés, sans données personnelles dans les logs.
  • Un retry idempotent avec backoff exponentiel borné couvre les erreurs transitoires.

Questions fréquentes

Comment appliquer le token dans la même session que le défi 2FA ?

Gardez la résolution et la soumission du formulaire dans le même contexte de navigateur ou la même session HTTP. Si vous obtenez le token dans un contexte et le rejouez dans un autre, les cookies ne correspondent plus et la page rejette la requête, même après une résolution réussie.

Faut-il vérifier le token côté serveur avant de valider la 2FA ?

Oui, toujours. La résolution côté client n'est qu'une étape ; votre backend doit valider le token avant d'autoriser l'étape 2FA. Sans cette vérification, une requête forgée peut franchir le défi sans token légitime.

Que faire si le CAPTCHA n'apparaît pas à chaque connexion ?

C'est normal sur beaucoup de flux 2FA : le défi ne se déclenche que dans certains cas. Détectez sa présence dans le DOM ou l'appel réseau avant d'envoyer une tâche, et prévoyez le chemin sans CAPTCHA.

Guides connexes

Fiabilisez vos flux 2FA protégés par CAPTCHA avec une approche méthodique et reproductible. – Obtenez votre clé CaptchaAI.

Les commentaires sont désactivés pour cet article.