Citation :il faut le faire basculer vers la droite pour faire afficher la questionEst-ce vraiment une sécurité? Car ce qui compte dans l'anti-bot, ce sont les requêtes HTTP (visibles dans les panneaux de dev comme Firebug) et non l'interface utilisateur (le bot se construit sa propre interface en se moquant éperdument de celle que le site aimerait lui imposer).
Citation :mais tu ne sais pas laquelle est la bonne à ce moment làL'erreur est là je dirai.
Si la question posée par le site est du type Recopiez '...' ou Calculez 5+6-4, on a alors un ensemble fini de patterns de questions: toutes les questions seront du même type, et seules les données changeront. Il suffit alors de faire un robot demandant un captcha, et qui ensuite cherche à quel pattern connu ce captcha correspond. Si le robot ne connais pas ce pattern (première visite du site), il informe l'humain (qui va enregistrer ce pattern dans le robot), et demande un autre captcha jusqu'à en trouver un connu. Ensuite, l'automate extrait la donnée de la question, et lui applique le traitement correspondant à ce pattern, avant d'envoyer sa réponse.
Par exemple, pour le premier pattern (Recopiez '...'), l'automate va:
• Reconnaitre le pattern (regex précédente: ~^Recopiez\s+'([^']+)'~)
• En extraire les données (via cette même regex)
• Répondre à la question associée à ce pattern (il suffit de recopier les données extraites par la regex).
Pour le pattern Calculez..., c'est le même principe:
• Le ~^Recopiez\s+'([^']+)'~ précédent ne correspond pas à la question posée: l'automate informe le développeur
• Le développeur ajoute une nouvelle regex au robot, et lui indique comment répondre à ce genre de question
• Le robot retombe, plus tard, sur le pattern Calculez...
• Il reconnait maintenance ce pattern (regex: ~^Calculez\s+(.*)$~)
• Il en extrait les données (via cette même regex)
• Il répond à la question associée à ce pattern ( eval(donnéesExtraites) ).
Dans le cas des captchas classiques avec une image déformée, on sait résoudre le premier et le dernier point (repérer le type de question: un captcha-image classique, et répondre à la question: recopier les données de l'image), mais on ne savait pas faire le point 2 (extraire les données de l'image, aka lire le texte de l'image).
Personnellement, je pense qu'il est vain de chercher un système anti-bot-anti-spam.
On n'arrivera de moins en moins à distinguer le bot de l'humain et le net étant un lieu de causerie entre machines (le serveur est une machine qui parle au client qui est aussi une machine), deviner si l'humain est derrière l'une des deux machines n'est ni fiable, ni pertinent. En revanche, tenter de détecter la qualité de ce que le client produit/envoie au site serait pertinent. Par exemple, savoir si un post d'un forum est bien écrit et avec du contenu intéressant serait meilleur que n'importe quel "anti-bot" (non fiable par définition). En effet, pourquoi interdire un bot si ce dernier amène du contenu de qualité au site/jeu? Pourquoi accepter un humain si ce dernier pourri délibérément le site/jeu?
Pour l'anti-spam, on peu utiliser les preuves de travail (EN). Elles sont non-égaitaires (puisqu'un utilisateur avec une machine puissante aura un avantage sur un utilisateur de téléphone mobile bas de gamme) mais fiables pour lutter contre le spam.