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
saltet une difficulté, le client cherche unnoncedont l'empreintesha256commence par autant de zéros, puis le renvoie pour vérification. À la difficulté par défaut de4, 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êteX-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. UnPOST /captchaportanttokenetanswerrenvoie ensuite{ "valid": true }. - Le rendu de ce mode
challengeest 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
5minutes : un jeton rejoué répondused, un jeton périméexpired, un jeton falsifié ou issu d'une autre instancewrong. - La variable
CHALLENGE_SECRETsigne 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-TextetX-Captcha-Tokensont 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 enwarn, et le reste eninfo.
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 hauteur120et non150,noiseest un niveau (low,medium,high) et non un nombre de lignes, et l'erreurNoise 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.