Explainers

Comment fonctionne le modèle multi-facteur (MFA) de reCAPTCHA

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

Le « modèle multi-facteur (MFA) » de reCAPTCHA n'est pas un second facteur d'authentification au sens strict : c'est un signal de risque que vous combinez à vos autres contrôles pour autoriser, renforcer ou bloquer une action.

Comprendre ce schéma revient à savoir qui déclenche le défi, qui produit le token et qui le vérifie. Cet article pose ce modèle mental à trois acteurs, puis l'automatise avec l'API CaptchaAI sur vos flux reCAPTCHA Enterprise.

Le schéma multi-facteur à trois acteurs

Commencez par le modèle mental : il couvre la quasi-totalité des intégrations.

  • Le front (widget reCAPTCHA) affiche le défi et récolte la réponse.
  • Le fournisseur CAPTCHA (Google, ou l'API CaptchaAI en contexte automatisé) émet un token à durée de vie courte.
  • Le backend vérifie ce token côté serveur, lit le score et applique la décision métier.

reCAPTCHA n'est ici qu'un facteur : votre backend recoupe son score avec la session, la réputation d'IP ou l'historique du compte. C'est cette combinaison qui fait le facteur.

Ce que vous maîtrisez côté application

Trois leviers déterminent la qualité de l'intégration :

  1. La configuration du widget : sitekey, type de reCAPTCHA (v2, v3, Enterprise) et action, cohérente entre front et serveur.
  2. La vérification serveur du token, toujours côté backend : un contrôle côté navigateur seul n'a aucune valeur de sécurité.
  3. La réponse selon le score : au-dessus du seuil vous laissez passer, en zone grise vous renforcez, en dessous vous bloquez.

Soumettre le défi et interroger le token

Pour un flux automatisé sur une étape protégée de votre application, la séquence reste identique quel que soit le langage :

  1. Capturez uniquement les paramètres utiles : sitekey, URL, action, proxy optionnel.
  2. Soumettez la tâche et récupérez son identifiant ; journalisez toute réponse anormale.
  3. Interrogez le résultat par son taskId : attendez environ 15 s, puis toutes les 5 s, avec un plafond de 120 s par tâche.
  4. Appliquez le token dans la même session que celle du défi (même contexte navigateur, même client HTTP) : une session dépareillée provoque le rejet.
  5. Mesurez latence, retries et acceptation en aval, distincts de la simple résolution.
import os
import requests

API_KEY = os.environ['CAPTCHAAI_KEY']

def submit_recaptcha_v2(sitekey: str, page_url: str) -> str:
    payload = {
        'clientKey': API_KEY,
        'task': {
            'type': 'NoCaptchaTaskProxyless',
            'websiteURL': page_url,
            'websiteKey': sitekey,
        },
    }
    resp = requests.post('https://api.captchaai.com/createTask', json=payload, timeout=30)
    resp.raise_for_status()
    return resp.json()['taskId']

CaptchaAI facture par thread simultané, résolutions illimitées par thread : la formule BASIC ($15/mois, 5 threads) suffit à valider un premier flux.

Observabilité, journalisation et RGPD

Instrumentez chaque appel : 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é (OpenTelemetry) pour rejouer un scénario depuis un identifiant unique.

Comme un flux reCAPTCHA touche des données d'utilisateurs, appliquez le principe RGPD de minimisation : ne journalisez ni le token complet ni d'identifiants personnels superflus, et fixez une durée de rétention. Pour un public francophone, OVHcloud, Scaleway ou une région AWS eu-west-3 (Paris) rapprochent vos workers de vos obligations de conformité.

Dépannage

Symptôme Cause probable Correctif
ERROR_WRONG_USER_KEY Clé copiée avec un espace parasite ou mauvais compte. Recopiez la clé 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 requis manquant ou mal formé. Revalidez URL et sitekey face au HTML réel.
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.

Avant la mise en production, gardez la clé CaptchaAI dans un secret CI, tracez durées d'appel et codes retour, et encadrez les retries par un backoff borné (trois tentatives, plafond 30 s).

FAQ

reCAPTCHA remplace-t-il un vrai second facteur d'authentification ?

Non. reCAPTCHA est un signal de risque, pas un facteur de possession comme un code TOTP ou une clé matérielle. Il aide à décider quand exiger un vrai second facteur, sans le remplacer.

Où doit se faire la vérification du token dans le schéma à trois acteurs ?

Toujours côté backend, en lisant le score et l'action attendue. Un token vérifié côté navigateur seul peut être rejoué ou falsifié.

Comment garder l'intégration stable en production ?

Tracez la latence, plafonnez les retries à trois avec backoff, et alertez sur l'écart entre résolution et acceptation en aval.

Guides connexes

Passez du schéma à une intégration reCAPTCHA fiable en quelques minutes. — Créez votre compte CaptchaAI.

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