MTCaptcha
et CapMonster Cloud

Solution de captcha, installation sur le site et tests.

Tarifs de la solution MTCaptcha

CAPTCHA
Prix (USD)
$ 1.50
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 MTCaptcha, 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 MTCaptcha 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 MTCaptcha
Qu'est-ce que MTCaptcha
MTCaptcha est un système de protection des sites web contre les actions automatisées, utilisant une vérification intelligente et des captchas. Tout d'abord, le service analyse le trafic en arrière-plan. Si le comportement du visiteur semble suspect, le système affiche automatiquement un captcha texte pour une vérification supplémentaire.

Comment résoudre MTCaptcha via CapMonster Cloud

Lors des tests de formulaires contenant MTCaptcha, 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 MTCaptcha avec des bibliothèques prêtes à l'emploi
CapMonster Cloud fournit des bibliothèques prêtes à l'emploi pour un travail confortable en Python, JavaScript (Node.js) et C#.
Python
JavaScript
C#
Résolution, insertion du token 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 obtenir le HTML et les paramètres du captcha, envoyer la réponse et traiter le résultat ; ou utiliser des outils d'automatisation (comme Playwright) — ouvrir la page, attendre le 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 token dans le formulaire et voir le résultat.

  // npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, MTCaptchaRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';

async function main() {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();

 
  let websiteKey = null;
  page.on('request', request => {
    const url = request.url();
    if (url.startsWith('https://service.mtcaptcha.com/mtcv1/api/getchallenge.json')) {
      const params = new URL(url).searchParams;
      const sk = params.get('sk');
      if (sk) {
        websiteKey = sk;
        console.log('Extracted websiteKey (sk):', websiteKey);
      }
    }
  });

  
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  if (!websiteKey) {
    console.error('Failed to extract websiteKey (sk) from the page');
    await browser.close();
    return;
  }

  
  const client = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  
  const mtcaptchaRequest = new MTCaptchaRequest({
    websiteURL: TARGET_URL,
    websiteKey: websiteKey,
    isInvisible: false,
    pageAction: 'login'
  });

  // Résolution du captcha
  const result = await client.Solve(mtcaptchaRequest);

  
  const verifiedToken = typeof result?.solution?.value === 'string'
    ? result.solution.value
    : JSON.stringify(result.solution.token);

  console.log('VerifiedToken:', verifiedToken);

  
  // Insérer le token et envoyer le formulaire (remplacer par le sélecteur requis)
  await page.evaluate((token) => {
    const input = document.querySelector('#mtcaptcha-verifiedtoken-1');
    if (input) input.value = token;
  }, verifiedToken);

  console.log('Token inserted into input');

  
  // await page.click('button[type="submit"]');

  await page.waitForTimeout(5000);

  await browser.close();
}

main().catch(err => {
  console.error('An error occurred:', err);
});
Comment connecter MTCaptcha à votre site
Pour vous orienter avec confiance dans le fonctionnement du captcha sur votre site, comprendre sa logique, le reconnecter ou le reconfigurer, nous vous recommandons d'étudier cette section. Elle décrit le processus d'intégration — vous aidant à comprendre rapidement tous les détails.

1. Inscrivez-vous ou connectez-vous à votre compte MTCaptcha.

2. Après l'inscription, ajoutez votre site. Vous recevrez deux clés.

  • Site Key — clé publique pour le frontend, afin d'afficher le widget.
  • Private Key — clé privée pour le serveur, pour vérifier les solutions de captcha. Conservez-la uniquement sur le serveur, ne la transmettez pas au client.

Exemple :

HowTo Connect image 1

3. Configurez le client MTCaptcha :

Insérez le code dans le <head> de la page.

Remplacez <YOUR SITE KEY> par votre Site Key obtenue dans le tableau de bord MTCaptcha.


  <head>
  <script>
    var mtcaptchaConfig = {
      sitekey: "<YOUR SITE KEY>"
    };
  
    (function() {
      var mt_service = document.createElement('script');
      mt_service.async = true;
      mt_service.src = 'https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js';
      (document.head || document.body).appendChild(mt_service);
  
      var mt_service2 = document.createElement('script');
      mt_service2.async = true;
      mt_service2.src = 'https://service2.mtcaptcha.com/mtcv1/client/mtcaptcha2.min.js';
      (document.head || document.body).appendChild(mt_service2);
    })();
  </script>
</head>


Ajoutez le conteneur captcha dans le <body>

Là où vous souhaitez afficher le captcha (par exemple, dans un formulaire) :

<div class="mtcaptcha"></div>

Le widget se chargera automatiquement.

HelpIcon

Vous pouvez utiliser les SDK et plugins prêts pour une intégration rapide :

  • SDK côté serveur : Java, Node.js, PHP
  • SDK côté client : React, React Native, Vue
  • Plugins CMS : WordPress, Drupal

MTCaptcha propose également une page démo pratique où vous pouvez tester et configurer la protection avant de la déployer sur votre site.

4. Travail avec le serveur. Obtenez Verified-Token sur le client.

Via un champ de formulaire caché :

<input type="hidden" name="mtcaptcha-verifiedtoken" />

Ou via JS :

mtcaptcha.getVerifiedToken() / mtcaptchaVerifiedCallback(status)

Envoyez le token au serveur avec le formulaire ou la requête.

Vérifiez le token via l'API (vérification côté serveur) :

GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=<PRIVATE_KEY>&token=<TOKEN>
  • privatekey — votre clé privée (serveur uniquement)
  • token — token du client

URL alternative pour les serveurs avec pare-feu :

https://service2.mtcaptcha.com/mtcv1/api/checktoken

Traiter la réponse :

success: true → captcha passé, continuer le traitement.

ExempleExemple
arrow

success: false → erreur (token expiré, réutilisé, etc.)

HelpIcon
Chaque verifiedToken est valable quelques minutes et ne peut être vérifié qu'une seule fois via l'API CheckToken, ce qui empêche la réutilisation. Après réception, le serveur doit vérifier le token à temps — le widget MTCaptcha garantit au moins 50 secondes pour la validation.

Exemple simple utilisant le module MTCaptcha sur Node.jsExemple simple utilisant le module MTCaptcha sur Node.js
arrow

HelpIcon

Pour une étude détaillée des fonctionnalités de MTCaptcha — personnalisation du widget, configuration client/serveur, intégration avec frameworks et autres aspects — consultez la documentation officielle.

Background
Erreurs possibles et débogage
Bug Icon
Site ou clé invalide
Le captcha ne se charge pas ou le serveur retourne invalid-privatekey ou privatekey-mismatch-token. Assurez-vous d'utiliser la paire correcte sitekey et privatekey.
Bug Icon
Token manquant ou invalide
Erreurs missing-input-token, invalid-token, bad-request. Vérifiez que la valeur du jeton est envoyée au serveur et qu’elle n’est pas modifiée.
Bug Icon
Token expiré (token-expired)
Le token est valable pour une durée limitée (environ ~120 secondes), après quoi il doit être obtenu à nouveau.
Bug Icon
Vérification répétée du token (token-duplicate-cal)
Le token ne peut être vérifié qu'une seule fois — protection contre les attaques par rejeu.
Bug Icon
Clé expirée ou désactivée (expired-sitekey-or-account)
Assurez-vous que les clés sont valides et que le compte est actif.
Bug Icon
Pour le diagnostic, activez la journalisation des requêtes et affichez les fail_codes pour comprendre la cause de l'erreur.
Tests de robustesse de la protection
Conseils de sécurité et d’optimisation
Conservez la <span class="font-bold">privatekey uniquement sur le serveur</span> — ne la transmettez pas au client.
Enregistrez les <span class="font-bold">fail_codes</span> pour suivre les causes d’erreurs et analyser les tentatives de contournement de la protection.
Ajoutez sur le formulaire des liens vers la <span class="font-bold">Politique de confidentialité</span> et les <span class="font-bold">Conditions d’utilisation</span>, si cela est requis par la politique de votre plateforme.
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 MTCaptcha, 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 MTCaptcha 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
Liens utiles
DocIconDocumentation MTCaptchaDocIconDocumentation CapMonster Cloud (travail avec MTCaptcha)DocIconSDK et plugins pour une intégration rapide de MTCaptchaDocIconPage démo (Code Builder) de MTCaptcha

Questions fréquentes sur MTCaptcha

Si le sitekey (sk) n'est pas visible dans le HTML ou le JavaScript de la page, inspectez les requêtes réseau pour le trouver :

  1. Ouvrez DevTools → Network.
  2. Déclenchez le CAPTCHA et filtrez les requêtes par getchallenge.json.
  3. Copiez le paramètre de requête sk depuis l'URL.

Pour l'automatisation (par ex. Playwright) : interceptez la même requête par programmation, analysez sk depuis la chaîne d'URL et mappez-le directement au champ websiteKey dans votre payload MTCaptchaTask CapMonster Cloud.

Le pageAction dans MTCaptchaTask doit strictement correspondre à la valeur act trouvée dans la requête réseau getchallenge.json du site (avec le paramètre sk). Cette correspondance est sensible à la casse et inclut les caractères spéciaux. Si le site utilise la valeur par défaut %24, omettez entièrement pageAction de votre requête. En savoir plus

Cela se produit lorsque le verifiedToken expire avant que votre backend ne le valide. Les tokens MTCaptcha ne sont valides que 60 à 120 secondes par défaut. La solution fiable consiste à démarrer la tâche dans CapMonster Cloud immédiatement avant la soumission du formulaire, plutôt qu'au début de la session.

Définissez isInvisible: true uniquement si le widget MTCaptcha fonctionne en mode invisible. Signes d'un tel mode :

  • Aucune case à cocher ni élément de captcha visible n'est affiché au chargement de la page.
  • Un défi supplémentaire n'apparaît que si un comportement suspect ou de type bot est détecté.

Si la page affiche un widget MTCaptcha visible standard, vous pouvez omettre le drapeau isInvisible dans votre requête.

Passer une valeur booléenne incorrecte générera un token invalide en raison d'une logique de résolution incompatible.

Vous pouvez le faire en injectant manuellement un token résolu depuis l'API CapMonster Cloud :

  1. Demandez une solution via l'API CapMonster Cloud en utilisant Postman, un script ou un autre client HTTP, en passant vos paramètres sk et act.
  2. Copiez le solution.token renvoyé dans la réponse de l'API.
  3. Ouvrez DevTools sur la page cible et trouvez le champ caché <input name="mtcaptcha-verifiedtoken">.
  4. Collez le token dans l'attribut value du champ et soumettez le formulaire pour confirmer la validation.

Vous pouvez également inspecter le trafic réseau de la page pour identifier le point de terminaison exact utilisé pour la vérification côté serveur, puis envoyer une requête HTTP directe contenant le token résolu.