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.
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.
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 :
type - MTCaptchaTask
websiteURL - Adresse de la page principale où le captcha est résolu.
websiteKey - Clé MTcaptcha, transmise dans la requête en tant que paramètre « sk ».
pageAction - Le paramètre action est transmis dans la requête sous « act » et apparaît lors de la validation du jeton. Indiquez-le uniquement si la valeur diffère de la valeur par défaut – %24.
isInvisible - Indiquez true si le captcha est invisible, c’est-à-dire s’il possède un champ de confirmation caché. En cas de suspicion de bot, une vérification supplémentaire est déclenchée.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task":
{
"type": "MTCaptchaTask",
"websiteURL": "https://www.example.com",
"websiteKey": "MTPublic-abCDEFJAB",
"isInvisible": false,
"pageAction": "login"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"errorCode": null,
"errorDescription": null,
"solution": {
"token": "v1(155506dc,c8c2e356,MTPublic-abCDEFJAB,70f03532a53...5FSDA**)"
},
"status": "ready"
}
// 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);
});1. Inscrivez-vous ou connectez-vous à votre compte MTCaptcha.
2. Après l'inscription, ajoutez votre site. Vous recevrez deux clés.
Exemple :
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.
Vous pouvez utiliser les SDK et plugins prêts pour une intégration rapide :
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>URL alternative pour les serveurs avec pare-feu :
https://service2.mtcaptcha.com/mtcv1/api/checktokenTraiter la réponse :
success: true → captcha passé, continuer le traitement.
{
"success": true,
"tokeninfo": {
"v": "1.0",
"code": 201,
"codeDesc": "valid:captcha-solved",
"tokID": "ae1e60a1e249c217cb7b05c4dba8dd0d",
"timestampSec": 1552185983,
"timestampISO": "2019-03-10T02:46:23Z",
"hostname": "some.example.com",
"isDevHost": false,
"action": "",
"ip": "10.10.10.10"
}
}success: false → erreur (token expiré, réutilisé, etc.)
const { MTCaptcha } = require('mtcaptcha');
const PRIVATE_KEY = 'YOUR_PRIVATE_KEY';
const tokenFromClient = 'TOKEN';
const mt = new MTCaptcha(PRIVATE_KEY, tokenFromClient);
mt.verify((result) => {
if (result.success) {
console.log('Captcha passed!', result.tokeninfo);
} else {
console.error('Captcha failed:', result.fail_codes || result.error);
}
});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.
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.