Aller au contenu
Accueil moxon

Génération de captcha

L'endpoint /captcha génère une image CAPTCHA. Il propose deux modes : challenge, celui par défaut, qui garde la réponse côté serveur pour la vérifier ensuite, et image, qui retourne la réponse en même temps que l'image.

gethttps://api.moxon.dev/v6/captcha

Changement en 6.0.0

challenge est désormais le mode par défaut : l'image arrive avec un jeton signé dans X-Captcha-Token plutôt qu'avec la réponse en clair. Un code qui lisait X-Captcha-Text sans préciser mode ne la trouvera plus — passez ?mode=image pour retrouver le comportement précédent.

Préférez la preuve de travail

Un captcha visuel n'arrête plus un robot déterminé : les modèles de vision les lisent bien, souvent mieux que les humains. Pour une protection anti-bot, préférez /pow, qu'aucun modèle ne peut contourner — le seul moyen de passer est de dépenser le calcul.

Essayerget/v6/captcha

Paramètres

  • mode"image" | "challenge"optionnel

    challenge (défaut) ou image

  • textstringoptionnel

    Le texte du captcha. Si omis, une chaîne aléatoire est générée. Refusé en mode challenge

  • lengthnumberoptionnel

    Longueur du texte auto-généré, de 1 à 20. Par défaut : 6

  • widthnumberoptionnel

    Largeur de l'image en pixels, de 100 à 800. Par défaut : 60 × la longueur du texte

  • heightnumberoptionnel

    Hauteur de l'image en pixels, de 50 à 400. Par défaut : 120

  • noise"low" | "medium" | "high"optionnel

    Niveau de bruit : low, medium (défaut) ou high

  • bgstringoptionnel

    Couleur de fond en hexadécimal (ex. ffffff)

  • colorstringoptionnel

    Couleur du texte en hexadécimal (ex. 000000)

Modes disponibles

ModeRéponse
imageImage PNG, avec la réponse dans l'en-tête X-Captcha-Text
challengeImage PNG, avec un jeton signé dans l'en-tête X-Captcha-Token — la réponse n'est jamais transmise

Les deux modes retournent une image PNG (Content-Type: image/png), utilisable dans une balise <img>.

En mode challenge, la réponse ne quitte jamais le serveur : elle n'existe que dans la signature du jeton, donc intercepter la réponse ne la révèle pas. Le rendu est également durci contre la lecture automatique — les glyphes se chevauchent pour empêcher leur découpage, suivent une ligne de base sinusoïdale, mélangent plusieurs polices, et sont traversés par des traits de la couleur même du texte, qu'aucun filtre ne peut retirer. Envoyez le jeton et la réponse de l'utilisateur à /v6/captcha pour la vérifier.

À savoir

Les deux en-têtes sont exposés au JavaScript des navigateurs via CORS, donc une page web peut les lire dans la réponse.

La chaîne auto-générée évite les caractères ambigus (ex. 0/O, 1/l).

Exemples de code

Gestion des erreurs

Si les paramètres sont manquants ou invalides, l'API retournera une erreur :

  • 400Mode must be one of: image, challengeLa valeur de mode n'est pas valide
  • 400A custom text cannot be used in challenge modetext a été fourni avec mode=challenge
  • 400length must be a numberLe paramètre length n'est pas un nombre
  • 400length must be between 1 and 20La length est hors de la plage autorisée
  • 400width must be a numberLe paramètre width n'est pas un nombre
  • 400width must be between 100 and 800La width est hors de la plage autorisée
  • 400height must be a numberLe paramètre height n'est pas un nombre
  • 400height must be between 50 and 400La height est hors de la plage autorisée
  • 400Noise must be one of: low, medium, highValeur de noise invalide
  • 400Invalid color (use hex like ff6600)Un paramètre bg ou color est malformé
  • post/v6/captcha - Vérifier la réponse à un challenge
  • get/v6/pow - Preuve de travail, l'alternative recommandée