reCAPTCHA v3
et CapMonster Cloud

Résolution de captcha, intégration sur le site et tests.

Tarifs de la solution reCAPTCHA v3

CAPTCHA
Prix (USD)
$ 0.90
1000 jetons
Vous avez hérité d’un site doté d’une captcha ou d’une autre couche de protection mais sans accès au code source ? Il est alors naturel de se demander quelle solution est installée, si elle est correctement configurée et comment la tester.

Dans cet article, nous avons essayé de répondre à toutes les questions essentielles. Pour commencer à résoudre le problème, il faut d’abord déterminer quel système de protection est utilisé. Pour cela, vous pouvez consulter la liste des captchas et systèmes de protection antibot les plus populaires, qui présente des exemples visuels et des caractéristiques clés permettant d’identifier rapidement avec quoi vous avez affaire.

Si vous constatez que votre site utilise reCAPTCHA v3, l’étape suivante consiste à étudier plus en détail ses propriétés et son fonctionnement. Dans cet article, vous pouvez également consulter le guide d’intégration de reCAPTCHA v3 afin de comprendre pleinement la façon dont il fonctionne sur votre site. Cela vous permettra non seulement de mieux connaître la protection en place, mais aussi de planifier correctement sa maintenance.

Qu’est-ce que Google reCAPTCHA v3
Qu’est-ce que Google reCAPTCHA v3
reCAPTCHA v3 est une protection invisible de Google qui distingue les vrais utilisateurs des bots sans nécessiter la case « Je ne suis pas un robot ». Un script caché s’exécute sur la page, analyse le comportement du visiteur du site et renvoie un score de confiance (score) compris entre 0,0 et 1,0. Le développeur définit un seuil en dessous duquel une vérification supplémentaire ou un blocage peut être exigé, ce qui permet d’assurer la protection sans actions inutiles du côté de l’utilisateur.

Comment résoudre reCAPTCHA v3 via CapMonster Cloud

Lors des tests de formulaires contenant reCAPTCHA v3, il est souvent nécessaire de vérifier que la captcha fonctionne et qu’elle est correctement intégrée.

Vous pouvez contrôler manuellement la captcha intégrée à votre site.

  • Ouvrez la page du formulaire et vérifiez que la captcha s’affiche.
  • Essayez d’envoyer le formulaire sans la résoudre — le serveur doit renvoyer une erreur.
  • Après une résolution réussie, l’envoi doit se faire sans problème.

Pour une résolution automatique, utilisez des outils comme CapMonster Cloud qui reçoivent les paramètres de la captcha, les traitent sur leurs serveurs et renvoient un jeton prêt à l’emploi. Insérez ce jeton dans le formulaire pour passer la vérification sans interaction utilisateur.

Travailler avec CapMonster Cloud via l’API comprend généralement les étapes suivantes :

Création de la tâcheCréation de la tâche
arrow
Envoyer une requête APIEnvoyer une requête API
arrow
Réception du résultatRéception du résultat
arrow
Insertion du jeton sur la pageInsertion du jeton sur la page
arrow
Reconnaissance de reCAPTCHA v3 avec des bibliothèques prêtes à l’emploi
Le service CapMonster Cloud fournit des bibliothèques prêtes à l’emploi pour travailler facilement avec les langages Python, JavaScript (Node.js) et C#.
Python
JavaScript
C#
Résolution, insertion du jeton et envoi du formulaire
Exemple en Node.js pour le cycle complet de reconnaissance du captcha sur votre page web. Approches possibles : utiliser des requêtes HTTP pour récupérer le HTML et les paramètres du captcha, envoyer la réponse et traiter le résultat ; ou, avec des outils d’automatisation (par exemple Playwright), ouvrir la page, attendre le chargement du captcha, envoyer les paramètres (pour les tests vous pouvez envoyer des données correctes ou incorrectes), récupérer le résultat via le client CapMonster Cloud, insérer le jeton dans le formulaire et observer le résultat.
const { chromium } = require('playwright');
const { 
  CapMonsterCloudClientFactory, 
  ClientOptions, 
  RecaptchaV3ProxylessRequest 
} = require('@zennolab_com/capmonstercloud-client');

(async () => {
  const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // URL de votre page avec le captcha
  const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
  const API_KEY = 'your_capmonster_cloud_api_key'; // Indiquez votre clé API CapMonster Cloud

  // Création du client CapMonster
  const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

  // Ouverture du navigateur
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });

  // Configuration de la tâche reCAPTCHA v3
  const recaptchaRequest = new RecaptchaV3ProxylessRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    minScore: 0.6,
    pageAction: 'myverify', // correspondance avec l’action sur la page
  });

  // Résolution du captcha
  const solution = await cmcClient.Solve(recaptchaRequest);
  const token = solution.solution?.gRecaptchaResponse;

  if (!token) {
    console.error('Le jeton est vide, vérifiez la sitekey et l’URL');
    await browser.close();
    return;
  }

  console.log('Jeton obtenu :', token);

  // Insertion du jeton dans un champ caché et simulation du clic sur le bouton 
  // Remplacez par les sélecteurs nécessaires
  await page.evaluate((t) => {
    const input = document.querySelector('#v3_token');
    if (input) input.value = t;

    const form = document.querySelector('#v3_form');
    if (form) form.submit();
  }, token);

  console.log('Le jeton a été inséré et le formulaire a été envoyé');

  await page.waitForTimeout(5000);
  await browser.close();
})();
Comment connecter reCAPTCHA v3 à votre site
Pour bien comprendre le fonctionnement du captcha sur votre site, la logique de sa vérification, et pouvoir le reconnecter ou le reconfigurer, nous vous recommandons d’étudier cette section. Le processus d’activation de la protection y est décrit — cela vous aidera à vous familiariser rapidement avec tous les détails.

1. Accédez à la page du panneau d’administration reCAPTCHA.

2. Enregistrez un nouveau site et choisissez le type de captcha — reCAPTCHA v3

HowTo Connect image 1

3. Récupérez deux clés :

  • Site key — clé publique (utilisée côté frontend) ;
  • Secret key — clé privée (utilisée côté serveur pour la vérification)

HowTo Connect image 2

Vous pouvez ouvrir les paramètres où, par exemple, vous pouvez indiquer des domaines supplémentaires autorisés à utiliser reCAPTCHA ou configurer des notifications concernant des problèmes sur le site ou une augmentation du trafic suspect.

4. Exemples de code pour la partie cliente

La façon la plus simple d’utiliser reCAPTCHA v3 consiste à connecter l’API JavaScript et à ajouter des attributs au bouton.

Connexion de l’API :

<script src="https://www.google.com/recaptcha/api.js"></script>

Fonction de rappel (callback) pour le formulaire :

<script>
  function onSubmit(token) {
    document.getElementById("form").submit();
  }
</script>

Bouton avec les attributs reCAPTCHA :

<button class="g-recaptcha" 
        data-sitekey="reCAPTCHA_sitekey" 
        data-callback='onSubmit' 
        data-action='submit'>Submit</button>

Pour un contrôle complet, utilisez grecaptcha.execute avec le paramètre render:

Connexion de l’API avec la clé :

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>

Appel programmatique :

<script>
  function onClick(e) {
    e.preventDefault();
    grecaptcha.ready(function() {
      grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
          // Envoyez le jeton au serveur pour vérification
      });
    });
  }
</script>

Le jeton doit être envoyé immédiatement au serveur pour vérification.

Remarques importantes :

  • Durée de validité du jeton : le jeton reçu de reCAPTCHA v3 est valable pendant 2 minutes. Assurez-vous de l’envoyer au serveur dans ce délai.
  • Vérification côté serveur : après avoir reçu le jeton, le serveur doit envoyer une requête POST à https://www.google.com/recaptcha/api/siteverify avec les paramètres suivants :
    – secret : votre clé secrète
    – response : le jeton reçu du client
    – remoteip (facultatif) : l’adresse IP de l’utilisateur
  • Le serveur de Google renverra une réponse JSON contenant des informations sur le résultat de la vérification.

5. Effectuez maintenant la vérification de la réponse côté serveur

Exemple en PHPExemple en PHP
arrow

Remarques :

  • Assurez-vous que, côté client, le jeton est envoyé dans un champ caché du formulaire nommé recaptcha-token :
    • <input type="hidden" name="recaptcha-token" id="recaptcha-token">

      • Le seuil score peut être ajusté en fonction du niveau de sévérité souhaité (par exemple 0,3–0,7).
      • La vérification action === 'submit' augmente la sécurité et permet de s’assurer que le jeton est destiné à l’action spécifique sur la page.
Background
Erreurs possibles et débogage
Bug Icon
Site ou clé incorrects
Le captcha ne se charge pas ou renvoie invalid-input-secret.
Bug Icon
Dépassement du délai de résolution
Le serveur n’a pas reçu de réponse à temps, augmentez le délai d’attente.
Bug Icon
Jeton vide
Erreur lors de la transmission du résultat à la page.
Bug Icon
Réponse success=false
Le jeton est expiré, réutilisé ou falsifié. Pour le diagnostic, activez la journalisation des requêtes et vérifiez le champ error-codes dans la réponse de Google.
Bug Icon
Score faible (par exemple <0.5)
Peut entraîner un refus même avec success=true, car Google évalue le niveau de confiance envers l’utilisateur en fonction du score.
Bug Icon
Vérifiez le champ action
Afin de vous assurer que le jeton est destiné à une action précise sur la page
Tests de robustesse de la protection
Après l’intégration, vérifiez que le système protège réellement le site contre les actions automatisées.
Conseils de sécurité et d’optimisation
Conservez la <span class="font-bold">Secret Key</span> uniquement côté serveur, ne la transmettez pas à la partie cliente.
Journalisez les codes d’erreur (<span class="font-bold">error-codes</span>) et la valeur de <span class="font-bold">score</span> afin de comprendre les raisons des refus.
<span class="font-bold">Vérifiez le champ action</span> dans la réponse de Google pour vous assurer que le jeton est destiné à l’action appropriée sur la page.
Ajoutez au bas du formulaire des liens vers la <span class="font-bold">Politique de confidentialité</span> et les <span class="font-bold">Conditions d’utilisation de Google</span>, comme l’exige la licence.
Conclusion

Si vous avez récupéré un site avec un captcha ou un autre système de protection déjà installé, mais sans accès au code, pas de panique ! Il est assez simple d’identifier quelle technologie est utilisée. Pour vérifier que tout fonctionne correctement, vous pouvez utiliser le service de reconnaissance CapMonster Cloud dans un environnement de test isolé, afin de vous assurer que le mécanisme de traitement des jetons et la logique de vérification fonctionnent correctement.

Dans le cas de reCAPTCHA v3, il suffit d’identifier le système, d’étudier son comportement et de vérifier que la protection fonctionne correctement. Dans cet article, nous avons montré comment reconnaître reCAPTCHA v3 et où trouver les instructions pour son intégration ou sa reconfiguration, afin de maintenir la protection en toute confiance et de garder son fonctionnement sous contrôle.

Conclusion

Questions fréquentes sur reCAPTCHA v3

CapMonster Cloud fournit des bibliothèques client officielles pour Python, JavaScript (Node.js) et C#. Ces bibliothèques simplifient l'intégration de reCAPTCHA v3 et évitent d'implémenter manuellement les requêtes HTTP.

Par exemple, en Node.js vous pouvez utiliser le package @zennolab_com/capmonstercloud-client, qui permet d'obtenir un jeton et de l'injecter dans un formulaire en quelques lignes de code.

S'il n'existe pas de bibliothèque dédiée pour votre langage, utilisez l'API REST universelle (createTask / getTaskResult). Elle fonctionne avec n'importe quel client HTTP, y compris curl, requests, axios et autres.

La structure complète de la requête est disponible dans la documentation API.

Le paramètre minScore accepte des valeurs de 0.1 à 0.9 et indique à CapMonster Cloud le score de confiance minimum que le jeton retourné doit porter. 0.7 est un point de départ raisonnable. Une valeur trop élevée (par ex. 0.9) augmente le risque d'échecs de résolution ; une valeur trop basse peut renvoyer des jetons dont le score serait de toute façon rejeté par votre seuil côté serveur. Ajustez la valeur selon les taux de rejet réels dans votre environnement de test.

Un jeton reçu de reCAPTCHA v3 est valide environ 2 minutes. Votre pipeline d'automatisation doit soumettre le jeton au serveur dans ce délai ; après expiration, l'endpoint siteverify de Google renvoie success: false. Gardez l'étape de résolution aussi proche que possible de l'envoi du formulaire et évitez de mettre en cache les jetons entre les requêtes.

Pour injecter un jeton reCAPTCHA v3, trouvez le champ de réponse caché (généralement un textarea ou input avec l'ID g-recaptcha-response) et insérez-y le jeton obtenu auprès de votre service de résolution CAPTCHA. Voici comment procéder dans les trois frameworks d'automatisation.

Playwright / Puppeteer (Node.js)

const token = "YOUR_TOKEN";
await page.evaluate((t) => {
  document.getElementById('g-recaptcha-response').value = t;
}, token);
await page.click('#submit-btn');

Selenium (Python)

token = "YOUR_TOKEN"
driver.execute_script(f"document.getElementById('g-recaptcha-response').value = '{token}';")
driver.find_element("id", "submit-btn").click()

Certaines sites utilisent des fonctions callback pour valider le jeton. Si le formulaire ne s'envoie pas, trouvez le nom de la fonction via la console (___grecaptcha_cfg.clients) et appelez-la manuellement :

// Example of calling a callback in Playwright/Puppeteer
await page.evaluate((t) => { window.onSuccessCallback(t); }, token);

Une réponse success: true de Google signifie seulement que le jeton est valide. Votre backend peut tout de même rejeter la requête si le score du jeton est inférieur à votre seuil configuré.

Un autre problème fréquent est une discordance d'action. Le jeton doit être vérifié avec la même valeur action que celle utilisée lors de la création de la tâche.

Pour diagnostiquer le problème :

  • vérifiez le champ score dans la réponse siteverify ;
  • assurez-vous que la valeur action correspond ;
  • inspectez error-codes lorsque success est false.

Si success est true, le tableau error-codes est généralement vide — score et action sont alors les champs principaux à examiner.