CAPTCHA textuel (ImageToText)
et CapMonster Cloud

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

Tarifs de la solution CAPTCHA texte (ImageToText)

CAPTCHA
Prix (USD)
$ 0.30
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 CAPTCHA texte (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 CAPTCHA texte (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, il est important de s’assurer que le captcha textuel protège réellement le formulaire.
Conseils de sécurité et d’optimisation
Stockez la réponse correcte du captcha uniquement sur le <span class="font-bold">serveur</span> (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

Questions fréquentes sur ImageToText CAPTCHA

  • Stockez les réponses CAPTCHA uniquement sur le serveur, par exemple en mémoire, dans Redis ou dans une base de données, et ne les exposez jamais au client.
  • Liez chaque CAPTCHA à une session unique ou à un jeton à usage unique afin qu'elle ne puisse pas être réutilisée entre les requêtes.
  • Définissez une courte durée d'expiration, par exemple 1 à 2 minutes, afin que les anciens codes deviennent automatiquement invalides.
  • Invalidez la CAPTCHA immédiatement après une vérification réussie pour la rendre à usage unique.
  • Limitez le nombre de tentatives et générez une nouvelle CAPTCHA après chaque échec au lieu de réutiliser la même image.
  • Liez chaque CAPTCHA à une adresse IP, une session ou un cookie pour empêcher les abus entre les requêtes.
  • Journalisez les échecs de génération et de validation des CAPTCHA, y compris l'horodatage, l'IP et la raison du rejet, afin de détecter les schémas d'attaque et d'ajuster les seuils.
  • Utilisez toujours HTTPS pour protéger les données du formulaire et les réponses CAPTCHA en transit.
  • Mettez régulièrement à jour les paramètres de génération des défis, tels que les polices, la distorsion et le bruit, pour rendre la résolution automatisée plus difficile.

Si l'image CAPTCHA est vide ou ne se charge pas, vérifiez que le point de terminaison de génération côté serveur crée correctement l'image, la renvoie correctement au client et que l'URL du point de terminaison est correcte.

Si les utilisateurs saisissent le bon code mais que la validation échoue, assurez-vous que la CAPTCHA n'est pas régénérée entre le chargement de la page et l'envoi du formulaire.

Vérifiez que la valeur CAPTCHA stockée est liée à la même session ou au même jeton utilisé lors de la validation.

Vérifiez si la CAPTCHA a expiré avant l'envoi, car un code expiré provoquera une discordance même si la saisie est correcte.

En plus des champs obligatoires type et body, vous pouvez utiliser cinq paramètres optionnels pour affiner la reconnaissance :

  • recognizingThreshold: Définissez une valeur de 0 à 100 pour contrôler le seuil de confiance ; des valeurs plus basses acceptent plus de résultats, tandis que des valeurs plus élevées sont plus strictes.
  • case: Définissez sur true si la CAPTCHA est sensible à la casse
  • numeric: Définissez sur 1 si l'image ne contient que des chiffres
  • math: Définissez sur true si l'image contient une expression mathématique
  • capMonsterModule: Spécifiez un module de reconnaissance tel que yandex pour améliorer la précision pour les fournisseurs pris en charge. Pour l'ensemble complet des modules, consultez la documentation.

Il existe une exception importante : lors de l'utilisation du module captcha_math via le paramètre capMonsterModule, vous ne devez pas définir math: true dans la même requête. Pour tous les autres modules où l'image CAPTCHA contient une expression mathématique, définir math: true indique au solveur d'évaluer et de renvoyer le résultat numérique plutôt que la chaîne de caractères brute. En savoir plus