Skip to content

5.9.0 ​

API ​

API v5.9.0 — Preuve de travail & captcha challenge.

  • Ajout de l'endpoint GET /pow : une preuve de travail en remplacement du captcha — le serveur émet un salt et une difficulté, le client cherche un nonce dont l'empreinte sha256 commence par autant de zéros, puis le renvoie pour vérification. À la difficulté par défaut de 4, la résolution prend moins d'une seconde dans un navigateur et reste imperceptible pour une personne, mais devient ruineuse pour un robot qui la répète des milliers de fois. C'est la seule protection anti-bot qu'un modèle de vision ne sait pas contourner, et la documentation recommande désormais de la préférer au captcha visuel.
  • GET /captcha gagne un mode challenge : l'image arrive accompagnée d'un jeton signé dans l'en-tête X-Captcha-Token, et la réponse n'est plus livrée en clair. Elle n'existe que dans la signature du jeton — impossible à extraire, même en interceptant la réponse. Un POST /captcha portant token et answer renvoie ensuite { "valid": true }.
  • Le rendu de ce mode challenge est 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 même couleur que le texte, qu'aucun filtre ne peut donc retirer. Le mode par défaut, lui, ne change pas d'un pixel.
  • Les jetons de captcha et de preuve de travail sont à usage unique et expirent au bout de 5 minutes : un jeton rejoué répond used, un jeton périmé expired, un jeton falsifié ou issu d'une autre instance wrong.
  • La variable CHALLENGE_SECRET signe ces jetons. Tant qu'elle n'est pas définie, chaque processus s'invente sa propre clé : les jetons cessent d'être valides après un redémarrage et sont rejetés par les instances voisines — à définir pour tout déploiement qui fait tourner plus d'un processus.
  • Les en-têtes X-Captcha-Text et X-Captcha-Token sont désormais exposés au JavaScript des navigateurs ; ils restaient jusqu'ici invisibles depuis une page web, faute de déclaration CORS.
  • Les journaux distinguent maintenant les niveaux de gravité : une erreur serveur est enregistrée en error, un refus client en warn, et le reste en info.

Documentation ​

  • Ajout des pages de documentation pour Pow — le défi et un exemple de résolution dans le navigateur — et Vérification Pow pour contrôler un défi résolu.
  • Réécriture de Captcha pour les deux modes, avec un encadré recommandant Pow pour la protection anti-bot, et ajout de Vérification Captcha pour la route POST.
  • Les deux endpoints exposent désormais une page par méthode HTTP, regroupées dans le sidebar comme Chat et Tic-Tac-Toe.
  • Correction de valeurs périmées héritées de la v4 sur la page Captcha : la largeur par défaut vaut 60 × la longueur du texte et non 300, la hauteur 120 et non 150, noise est un niveau (low, medium, high) et non un nombre de lignes, et l'erreur Noise must be one of… commence par une majuscule.
  • Ajout de l'endpoint dans le sidebar, le registre Playground et les cartes de la page d'accueil.