logo
bars

CAPTCHA textuel (ImageToText)
et CapMonster Cloud

Résolution de captcha, intégration au site et tests.
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 ImageToText, 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 ImageToText 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 le CAPTCHA ImageToText
Qu’est-ce que le CAPTCHA ImageToText
ImageToText CAPTCHA est un système classique de protection des sites web basé sur la reconnaissance de texte à partir d’une image. L’utilisateur doit saisir les caractères (lettres, chiffres ou leur combinaison) affichés sur une image déformée. Cette approche permet de distinguer un humain des scripts automatisés. Elle est utilisée pour protéger les formulaires d’inscription, de connexion, l’envoi de messages, les commentaires et pour prévenir les requêtes automatisées massives.

Comment résoudre un CAPTCHA ImageToText avec CapMonster Cloud

Lors des tests de formulaires avec un CAPTCHA ImageToText, il est souvent nécessaire de vérifier que le captcha fonctionne correctement et qu’il est bien intégré.
Vous pouvez tester manuellement le captcha intégré à votre site :
  • Ouvrez la page contenant le formulaire et assurez-vous que le captcha s’affiche.
  • Essayez d’envoyer le formulaire sans résoudre le captcha — le serveur doit renvoyer une erreur.
  • Après une résolution réussie du captcha, le formulaire doit être envoyé sans erreur.
Pour la reconnaissance automatique du captcha, vous pouvez utiliser des services spécialisés tels que CapMonster Cloud — un outil qui reçoit les paramètres du captcha, les traite sur ses serveurs et renvoie une solution prête à l’emploi. Cette réponse peut être insérée dans le champ approprié afin de passer la vérification sans intervention de l’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 des captchas d’images à l’aide de bibliothèques prêtes à l’emploi
Le service CapMonster Cloud fournit des bibliothèques prêtes à l’emploi pour une utilisation pratique en Python, JavaScript (Node.js) et C#.
Python
JavaScript
C#
Résolution, insertion de la réponse et envoi du formulaire
Exemple Node.js du cycle complet de reconnaissance du captcha sur votre page web. Les approches possibles incluent l’utilisation de requêtes HTTP pour obtenir le HTML et les paramètres du système de protection, l’envoi de la réponse et le traitement du résultat. Ou, comme dans l’exemple ci-dessous, l’utilisation d’outils d’automatisation (par exemple Playwright) — ouvrir la page, attendre la vérification, envoyer les paramètres via le client CapMonster Cloud, obtenir le résultat, l’insérer dans le champ approprié (pour les tests, vous pouvez utiliser des données correctes ou incorrectes) et observer le résultat.

  // npm install playwright @zennolab_com/capmonstercloud-client
  // npx playwright install chromium

import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';
import { chromium } from 'playwright';

const API_KEY = "YOUR_API_KEY"; // Indiquez votre clé API CapMonster Cloud

async function solveImageToTextAndFillField() {
    const cmcClient = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    // Vous pouvez également vérifier votre solde
    const balance = await cmcClient.getBalance();
    console.log("Balance:", balance);

    // 1. Lancer Playwright et ouvrir la page contenant le formulaire
    const browser = await chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto("https://example.com/form"); // 2. Récupérer l’URL du captcha depuis la page (exemple via le sélecteur <img>)

    // 2. Récupérer l’URL du captcha depuis la page (exemple via le sélecteur <img>)
    const captchaUrl = await page.getAttribute("#captcha-img", "src");

    // 3. Télécharger l’image et la convertir en Base64
    const response = await fetch(captchaUrl);
    const imageBuffer = await response.arrayBuffer();
    const imageBase64 = Buffer.from(imageBuffer).toString('base64');

    // 4. Créer une requête pour résoudre ImageToText
    const imageToTextRequest = new ImageToTextRequest({
        body: imageBase64,
        CapMonsterModule: CapMonsterModules.YandexWave, // ou un autre module
        Case: true,
        numeric: 0,
        recognizingThreshold: 65,
        math: false
    });

    // 5. Obtenir la solution du captcha
    const result = await cmcClient.Solve(imageToTextRequest);
    console.log("Captcha solution:", result.solution.text);

    // 6. Insérer la solution dans le champ du formulaire et envoyer
    await page.fill("#captcha-input", result.solution.text); // Remplacez par votre sélecteur
    await page.click("#submit-button"); // Remplacez par le sélecteur de votre bouton
    await page.waitForLoadState("networkidle");

    console.log("Formulaire envoyé avec la solution du captcha");

    // 7. Fermer le navigateur
    await browser.close();
}

solveImageToTextAndFillField().catch(console.error);


  
Comment connecter un CAPTCHA textuel à votre site web
Pour bien comprendre le fonctionnement du captcha sur votre site, la logique de vérification, ou pour le reconnecter ou le reconfigurer, nous vous recommandons d’étudier cette section. Elle décrit le processus d’intégration de la protection et aide à comprendre rapidement toutes les subtilités.

Étape 1. Choisir l’approche

Vous devez d’abord décider comment vous allez utiliser le captcha :

Option 1 — Fournisseur tiers

Adapté si une mise en œuvre rapide et une maintenance minimale sont importantes.

Avantages :

  • Intégration rapide
  • Protection contre les bots prête à l’emploi
  • Pas besoin de mettre à jour les algorithmes soi-même

Inconvénients :

  • Dépendance à un service externe
  • Personnalisation limitée

Option 2 — CAPTCHA textuel personnalisé

Adapté si vous avez besoin d’un contrôle total et d’une intégration sur mesure.

Avantages :

  • Contrôle total de la logique et du design
  • Aucune dépendance externe
  • Adaptable à des scénarios spécifiques

Inconvénients :

  • La protection contre les bots doit être implémentée par vos soins
  • Nécessite une maintenance et des améliorations dans le temps

Étape 2. Implémenter la génération du captcha

Pour un fournisseur

  • Inscrivez-vous au service
  • Obtenez les clés (site key / secret key)
  • Intégrez le script sur la page contenant le formulaire

Pour un captcha personnalisé

  • Générez une chaîne aléatoire (chiffres ou lettres)
  • Affichez-la sur une image (Canvas, SVG ou génération côté serveur)
  • Ajoutez des distorsions : bruit, lignes, rotation des caractères

Étape 3. Afficher le captcha à l’utilisateur

  • Placez l’image du captcha à côté du formulaire
  • Ajoutez un champ de saisie de texte
  • Implémentez un bouton de rafraîchissement du captcha

Important : chaque chargement doit générer un nouveau code.

Étape 4. Transmettre les données au serveur

Lors de l’envoi du formulaire, transmettez :

  • Le texte saisi par l’utilisateur
  • L’identifiant du captcha ou le jeton de session

Pour un captcha personnalisé, le code ne doit pas être stocké côté client — uniquement côté serveur.

Étape 5. Vérifier le captcha côté serveur

Fournisseur

  • Envoyez le jeton du captcha au serveur du fournisseur
  • Recevez le résultat de la vérification (succès / erreur)

Captcha personnalisé

  • Comparez le texte saisi avec la valeur stockée
  • Tenez compte de la durée de validité du captcha (par exemple, 1 à 2 minutes)

Étape 6. Prendre une décision

  • Si le captcha est validé — effectuez l’action (connexion, inscription, envoi du formulaire)
  • Sinon — affichez une erreur et générez un nouveau captcha

Étape 7. Renforcer la protection (recommandé)

Même pour un captcha textuel, il est recommandé d’ajouter :

  • Une limitation du nombre de tentatives
  • Une liaison à l’IP, à la session ou aux cookies
  • Des jetons temporaires (à usage unique)
  • La journalisation des activités suspectes
Background
Erreurs possibles et débogage
Bug Icon
Le captcha d’image ne se charge pas
(Image vide, 404/500 ou erreur de génération) — le plus souvent dû à une logique de génération incorrecte. Assurez-vous que le serveur crée correctement l’image et la renvoie au client, et que le chemin de l’endpoint est correctement spécifié.
Bug Icon
Code de captcha invalide ou vide
Vérifiez que la saisie de l’utilisateur est bien transmise au serveur et comparée à la valeur de captcha stockée.
Bug Icon
Non-correspondance des codes malgré une saisie correcte

Assurez-vous que :

  • Le captcha n’est pas régénéré avant la vérification ;
  • Le code est stocké séparément pour chaque session ou jeton ;
  • Le captcha n’a pas expiré.
Bug Icon
Durée de validité du captcha expirée
Augmentez la durée de vie (TTL) du captcha côté serveur ou actualisez-le lors de tentatives de saisie répétées.
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
Stockez la réponse correcte du captcha uniquement sur le <b>serveur</b> (en mémoire, Redis ou base de données) et ne la transmettez pas au client.
Utilisez des jetons à usage unique ou des identifiants de captcha.
Limitez le nombre de tentatives de saisie pour un même captcha.
Utilisez toujours HTTPS pour transmettre les données du formulaire et les réponses du captcha.
Journalisez les erreurs de génération et de vérification du captcha (heure, IP, raison du refus) — cela facilite le débogage et l’analyse des attaques.
Mettez régulièrement à jour l’algorithme de génération (polices, distorsions, bruit).
Conclusion

Si vous héritez d’un site avec un captcha ou un autre système de protection déjà installé et que vous n’avez pas accès au code — aucun problème ! Il est assez facile de déterminer quelle technologie est utilisée. Pour vérifier le bon fonctionnement, vous pouvez utiliser le service de reconnaissance CapMonster Cloud dans un environnement de test isolé afin de vous assurer que la logique de traitement des jetons et de validation fonctionne correctement.

Dans le cas d’un captcha basé sur des images, il suffit d’identifier le système, d’étudier son comportement et de s’assurer que la protection fonctionne correctement. Dans cet article, nous avons montré comment identifier un captcha d’image (ComplexImage) et comment le connecter ou le reconfigurer afin de maintenir et de contrôler la protection en toute confiance.

Conclusion
Liens utiles
DocIconDocumentation CapMonster Cloud (travail avec les CAPTCHA textuels)DocIconGuide : comment créer votre propre CAPTCHADocIconInscription à CapMonster Cloud