Tutoriels API

Comment résoudre reCAPTCHA v2 via l'API : guide pas à pas

reCAPTCHA v2 reste l'un des points de blocage les plus courants sur les flux de connexion, d'inscription, de paiement et de soumission de formulaire. Si votre automatisation tombe sur la case à cocher ou le défi image reCAPTCHA v2, vous pouvez le résoudre via l'API en quatre étapes : extraire le sitekey et le pageurl de la page, les envoyer au solveur reCAPTCHA v2 de CaptchaAI, récupérer le résultat puis injecter le token dans le flux protégé.

Ce guide est destiné aux développeurs qui cherchent une intégration qui fonctionne, pas un panorama théorique.

Pas sûr de la version de reCAPTCHA ? Lisez d'abord Comment identifier la version de reCAPTCHA.


Ce qu'il vous faut avant de commencer

Prérequis Détails
Clé API CaptchaAI Disponible sur captchaai.com/api.php. 32 caractères.
URL complète L'URL exacte où le widget reCAPTCHA v2 est chargé.
sitekey La clé publique liée à l'instance du widget sur cette page.
Client HTTP requests, axios, fetch, curl — au choix.
Threads actifs Votre compte doit disposer de threads disponibles.

Étape 1 : extraire sitekey et pageurl

pageurl est l'URL complète de la page où apparaît la reCAPTCHA. Toujours fournie avec https://.

Pour le sitekey, trois pistes :

1. Dans le HTML — cherchez <div class="g-recaptcha" data-sitekey="..."> :

<div class="g-recaptcha" data-sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"></div>

2. Dans l'URL de l'iframehttps://www.google.com/recaptcha/api2/anchor?ar=1&k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&... — le paramètre k= est le sitekey.

3. Dans le trafic réseau — DevTools → Network, filtrez par recaptcha, le paramètre k apparaît dans n'importe quelle requête.


Étape 2 : soumettre la tâche

import requests

API_KEY = "YOUR_API_KEY"
SITEKEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
PAGEURL = "https://example.com/login"

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": SITEKEY,
    "pageurl": PAGEURL,
    "json": 1,
}).json()

assert submit["status"] == 1, submit
task_id = submit["request"]
print("task id:", task_id)

Équivalent Node.js :

const r = await fetch("https://ocr.captchaai.com/in.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: API_KEY,
    method: "userrecaptcha",
    googlekey: SITEKEY,
    pageurl: PAGEURL,
    json: "1",
  }),
});
const { status, request: taskId } = await r.json();
if (status !== 1) throw new Error(taskId);

reCAPTCHA invisible ? Ajoutez invisible=1. Détails dans Comment fonctionne la reCAPTCHA invisible.


Étape 3 : interroger le résultat

reCAPTCHA v2 prend habituellement 15–60 secondes. Patientez 20 s, puis interrogez toutes les 5 s.

import time

time.sleep(20)
while True:
    res = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    }).json()

    if res.get("request") == "CAPCHA_NOT_READY":
        time.sleep(5)
        continue

    if res.get("status") == 1:
        token = res["request"]
        print("token:", token[:60], "…")
        break

    raise RuntimeError(res)

Le token renvoyé est une longue chaîne qui commence en général par 03AGdBq25....


Étape 4 : injecter le token dans la page

La méthode dépend du site. Le plus courant : le textarea g-recaptcha-response :

document.querySelector('textarea[name="g-recaptcha-response"]').value = token;
document.querySelector("form").submit();

Selenium :

driver.execute_script(
    "document.querySelector('[name=\"g-recaptcha-response\"]').value = arguments[0];",
    token,
)
driver.find_element(By.CSS_SELECTOR, "form").submit()

Playwright :

await page.evaluate((t) => {
  document.querySelector('[name="g-recaptcha-response"]').value = t;
}, token);
await page.click('button[type="submit"]');

Si le widget a un data-callback, appelez aussi cette fonction :

const callback = document.querySelector(".g-recaptcha").dataset.callback;
if (callback && window[callback]) window[callback](token);

Exemple complet (Python)

import time
import requests

API_KEY = "YOUR_API_KEY"
SITEKEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
PAGEURL = "https://example.com/login"

def solve_recaptcha_v2():
    submit = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY, "method": "userrecaptcha",
        "googlekey": SITEKEY, "pageurl": PAGEURL, "json": 1,
    }).json()
    if submit["status"] != 1:
        raise RuntimeError(submit)
    task_id = submit["request"]

    time.sleep(20)
    for _ in range(40):
        res = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": API_KEY, "action": "get", "id": task_id, "json": 1,
        }).json()
        if res.get("request") == "CAPCHA_NOT_READY":
            time.sleep(5)
            continue
        if res.get("status") == 1:
            return res["request"]
        raise RuntimeError(res)
    raise TimeoutError("solve timed out")

if __name__ == "__main__":
    token = solve_recaptcha_v2()
    print("token:", token[:80])

Erreurs fréquentes et solutions

Erreur Cause Action
ERROR_GOOGLEKEY sitekey vide ou invalide Réextraire le sitekey depuis la page actuelle
ERROR_PAGEURL pageurl manquant Envoyer l'URL complète avec schéma
ERROR_ZERO_BALANCE Aucun thread Recharger ou attendre
ERROR_CAPTCHA_UNSOLVABLE Le site a durci le défi Réessayer après quelques secondes ; voir erreurs courantes de résolution reCAPTCHA v2
Le site rejette le token Token périmé À utiliser dans les ~110 s suivant la réception

Quand ça ne fonctionne pas

  • Token reçu mais le site bloque toujours — le formulaire a son propre handler. Trouvez le callback et appelez-le au lieu de simplement remplir le textarea.
  • Il faut conserver la même empreinte — envoyez les mêmes cookies et User-Agent qu'au moment de la demande.
  • reCAPTCHA dépendante du proxy — ajoutez proxy et proxytype à la soumission pour que le solveur utilise votre pool d'IPs.

Étapes suivantes

  • Démarrage rapide CaptchaAI : votre première résolution de CAPTCHA en 5 minutes
  • How To Identify Recaptcha Version
  • Comment résoudre Cloudflare Turnstile via l'API
  • reCAPTCHA v2 courant, résolution des erreurs et correctifs
Les commentaires sont désactivés pour cet article.