# Identifier le type de captcha

> Comment savoir quel captcha utilise une page (reCAPTCHA v2, v2 invisible, v3, Enterprise, hCaptcha, différence entre Cloudflare Turnstile et la page de vérification Cloudflare) et quel type de tâche YesCaptcha utiliser.

Source: https://docs.yescaptcha.com/fr/guides/identify-captcha/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/identify-captcha/

Pour choisir le bon type de tâche, il faut d’abord reconnaître le captcha. Le moyen le plus fiable est d’ouvrir les outils de développement du navigateur (F12) et de regarder, dans l’onglet Network (Réseau), quel script de captcha la page charge ; vous pouvez aussi vous fier à l’apparence.

## Identifier par l’apparence

Voici l’aspect de chaque captcha sur une page web (animations illustratives, pas des captures d’écran) ; cliquez sur une carte pour ouvrir la page du type correspondant. Si l’apparence ne suffit pas, confirmez avec l’aide-mémoire ci-dessous et l’onglet Network.

-   [reCAPTCHA v2: Case à cocher · Invisible](https://docs.yescaptcha.com/fr/tasks/recaptcha-v2.md)
-   [reCAPTCHA v3](https://docs.yescaptcha.com/fr/tasks/recaptcha-v3.md)
-   [Reconnaissance d'images reCAPTCHA v2: Grille 3×3 · Grille 4×4 · Image unique 1×1](https://docs.yescaptcha.com/fr/tasks/recaptcha-classification.md)
-   [hCaptcha](https://docs.yescaptcha.com/fr/tasks/hcaptcha.md)
-   [Reconnaissance d'images hCaptcha: Grille d'images · Clic sur un point · Glisser-déposer · Animé](https://docs.yescaptcha.com/fr/tasks/hcaptcha-classification.md)
-   [Cloudflare Turnstile: Automatique · Case à cocher](https://docs.yescaptcha.com/fr/tasks/turnstile.md)
-   [Page de vérification Cloudflare: Automatique · Case à cocher](https://docs.yescaptcha.com/fr/tasks/cloudflare-challenge.md)
-   [Reconnaissance d'images FunCaptcha: Flèches · Grille de 6 images](https://docs.yescaptcha.com/fr/tasks/funcaptcha-classification.md)
-   [Reconnaissance d'images AWS WAF / bCaptcha: AWS WAF · bCaptcha](https://docs.yescaptcha.com/fr/tasks/aws-bcaptcha-classification.md)
-   [Reconnaissance de texte dans une image: Bruité · Lignes parasites · Calcul](https://docs.yescaptcha.com/fr/tasks/image-to-text.md)

## Aide-mémoire

| Ce que vous voyez | De quoi il s’agit | Type de tâche à utiliser |
| --- | --- | --- |
| Une case « Je ne suis pas un robot » | reCAPTCHA v2 | [reCAPTCHA v2](https://docs.yescaptcha.com/fr/tasks/recaptcha-v2.md) |
| Pas de case à cocher ; une épreuve d’images apparaît après le clic sur « Envoyer » ; un petit badge reCAPTCHA en bas à droite | reCAPTCHA v2 invisible (ou v3) | Voir « Versions de reCAPTCHA » ci-dessous |
| Aucune interaction ; seulement le badge reCAPTCHA en bas à droite | reCAPTCHA v3 | [reCAPTCHA v3](https://docs.yescaptcha.com/fr/tasks/recaptcha-v3.md) |
| Une case « Je suis humain » ; épreuves d’images marquées hCaptcha | hCaptcha | [hCaptcha](https://docs.yescaptcha.com/fr/tasks/hcaptcha.md) |
| Un widget Cloudflare dans un formulaire ; la page ne change pas après la validation | Cloudflare Turnstile | [Turnstile](https://docs.yescaptcha.com/fr/tasks/turnstile.md) |
| Toute la page affiche « Veuillez patienter… » / « Vérification de votre connexion », puis redirige automatiquement | Page de vérification Cloudflare | [Page de vérification Cloudflare](https://docs.yescaptcha.com/fr/tasks/cloudflare-challenge.md) |
| Puzzles ou épreuves d’images d’Arkose Labs (par exemple « Choisissez l’image dans le bon sens ») | FunCaptcha | [Reconnaissance d’images FunCaptcha](https://docs.yescaptcha.com/fr/tasks/funcaptcha-classification.md) |
| Une image de lettres et de chiffres déformés | Captcha de caractères | [Reconnaissance de texte dans une image](https://docs.yescaptcha.com/fr/tasks/image-to-text.md) |

## Versions de reCAPTCHA

Dans l’onglet Network, cherchez `api.js` ou `enterprise.js` :

| Script chargé | Version |
| --- | --- |
| `recaptcha/api.js`, sans paramètre `render` ou avec `render=explicit` | v2 standard |
| Idem, et l’adresse de la requête `anchor` contient `size=invisible` | v2 invisible : ajoutez `"isInvisible": true` à la tâche |
| `recaptcha/api.js?render=CLÉ_DU_SITE` (`render` différent de `explicit`) | v3 standard |
| `recaptcha/enterprise.js`, sans paramètre `render` ou avec `render=explicit` | v2 Enterprise |
| `recaptcha/enterprise.js?render=CLÉ_DU_SITE` | v3 Enterprise |

Exemples :

```text
https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit   → v2
https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696   → v3
https://www.google.com/recaptcha/enterprise.js?render=explicit   → v2 Enterprise
```

La v2 invisible ne passe parfois qu’avec un type v3 ; essayez les deux.

Vous pouvez aussi exécuter le code ci-dessous dans la console (Console) du navigateur. Il liste tous les reCAPTCHA de la page avec leur version, leur clé de site, l’adresse de la page et leur fonction de rappel :

find-recaptcha-clients.js

```js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
  if (typeof ___grecaptcha_cfg === 'undefined') return [];
  return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
    const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
    const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
    objects.forEach(([toplevelKey, toplevel]) => {
      const found = Object.entries(toplevel).find(
        ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
      );
      if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
      if (found) {
        const [sublevelKey, sublevel] = found;
        data.sitekey = sublevel.sitekey;
        const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
        const callback = sublevel[callbackKey];
        if (!callback) {
          data.callback = null;
          data.function = null;
        } else {
          data.function = callback;
          const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
          data.callback = `___grecaptcha_cfg.clients${keys}`;
        }
      }
    });
    return data;
  });
}

findRecaptchaClients();
```

Exemple de résultat :

```json
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "https://www.google.com/recaptcha/api2/demo"
  }
]
```

Les pages de démonstration de Google permettent de comparer : v2 standard `https://www.google.com/recaptcha/api2/demo`, v2 invisible `https://www.google.com/recaptcha/api2/demo?invisible=true`.

## Turnstile et page de vérification Cloudflare

Les deux viennent de Cloudflare, mais ce ne sont pas la même chose :

-   **Turnstile** est un widget intégré au formulaire d’une page. Une fois la vérification terminée, une coche s’affiche et la page ne change pas. La page charge `challenges.cloudflare.com/turnstile/v0/api.js`. Utilisez [Turnstile](https://docs.yescaptcha.com/fr/tasks/turnstile.md).
-   **La page de vérification Cloudflare** remplace toute la page par l’écran de contrôle de Cloudflare (« Veuillez patienter… », « xx.com doit d’abord vérifier la sécurité de votre connexion »), qui peut aussi contenir un widget ; une fois la vérification réussie, elle redirige vers la vraie page. Le code source contient `__cf_chl_rt_tk` ou `cdn-cgi/challenge-platform`. Utilisez [Page de vérification Cloudflare](https://docs.yescaptcha.com/fr/tasks/cloudflare-challenge.md).

Si votre programme reçoit un 403 avec « Just a moment… » alors qu’un navigateur ouvre la page directement, vous êtes probablement bloqué uniquement par l’empreinte TLS. Une bibliothèque qui imite l’empreinte TLS d’un navigateur (par exemple curl\_cffi) suffit généralement à passer, sans rien résoudre.
