Spamtimeout, adieu au spam des trackbacks Dotclear
Par Laurent simon le lundi, 8 mai 2006, 17:09 - C'est arrivé - Lien permanent
Récemment, j’ai dû sévir pour tenter d’éradiquer le spam sur ce blog en ajoutant les plugins Captcha et Spamplemousse à Dotclear. Le captcha interdisant aux robots de poster dans les commentaires, il ne me restait alors dans la file de modération uniquement des trackbacks. Ce qui, au départ, me semblait raisonnable. J’ai très vite déchanté. Ces derniers temps, le spam par les trackbacks est en vogue chez nos amis spammeurs et je me suis vite retrouvé avec pas loin d’une centaine de trackbacks à modérer par jour. Autant dire mission impossible. Le captcha côté serveur étant réellement efficace, il ne me restait donc plus qu’à trouver une solution tout aussi efficace pour les trackbacks. Après une petite recherche sur le net, je n’en ai trouvé aucune qui soit réellement satisfaisante de mon point de vue. Soit pas suffisamment fiables, trop lourdes pour l’hébergement ou trop contraignantes pour celui qui allait faire le trackback, bref échec total, aucune ne me convenait. Il ne me restait plus qu’à trouver moi-même une solution simple, légère et transparente.
Point de départ : comment fonctionnent les spammeurs ? Le fait que les billets spammés soient toujours les mêmes permet de déduire qu’ils scannent les urls et qu’une fois qu’ils en tiennent une, ils arrosent dessus quotidiennement. Il suffit donc de fournir pour chaque billet une URL de trackback jetable basée sur une date de péremption. Utilisable sans contrainte pour faire un trackback légitime, elle devient invalide peu de temps après. Elle est donc inutilisable par nos spammeurs. Le tout saupoudré d’encryptage afin qu’il leur soit impossible de constituer eux même une URL valide. J’ai donc mis tout cela en musique la semaine dernière. Maintenant j’ai des URLs de trackback qui ont de la forme suivante :
http://archiblog.stratic.fr/blog/tb.php?id=177&chk=iwg2wp ( chk=iwg2wp est la fameuse date de péremption encryptée),
Et même pas peur, je peux sans crainte mettre un lien sur cette URL de trackback. Dans le quart d’heure qui suit sa publication, elle deviendra de toute façon inutilisable et retournera une erreur.
En un peu moins de 7 jours, à elle seule, cette petite astuce a stoppé 1019 trackbacks de spam sur Archiblog pour un coût zéro aussi bien pour mon hébergeur que pour moi-même! Pendant cette période un seul trackback de spammeur est passé mais il a bien sûr été capturé par Spamplemousse. Et encore, il ne s’agissait pas d’un message de spam mais plutôt d’un sondage fait par un nouveau spammeur sur l’URL du billet car le corps du message de trackback était désespérément vide. Seule l’adresse IP de l’émetteur permettait de penser qu’il s’agissait d’une tentative de spam car elle était en liste noire.
Devant le succès de l’opération et puisque je suis partageur, après avoir enlevé le compteur (qui comptait surtout mon autosatisfaction), j’ai donc décidé aujourd’hui d’en faire un petit plugin expérimental vite fait sur le gaz, nommé Spamtimeout que je vous invite à tester :
- Installeur : http://archiblog.stratic.fr/download/plugin-spamtimeout-0.9.pkg.gz
- Sources : http://archiblog.stratic.fr/download/plugin-spamtimeout-0.9.zip
Une fois le plugin installé, l’utilitaire de configuration du plugin indique la marche à suivre pour l’activer et le personnaliser. Attention, il faut mettre les mains dans le cambouis et aller modifier les fichiers tb.php de Dotclear et post.php de votre thème pour en tirer parti. Ces manips relativement simples restent tout de même réservées à un public averti.
Je qualifie ce plugin d’expérimental, car son seul but est de permettre au plus grand nombre de tester la solution. Si elle se révèle satisfaisante pour tous, l’idéal serait bien sûr à terme d’intégrer cette solution dans Spamplemousse ou même dans Dotclear car les plugins, entre celui qui fait le café et celui qui ajoute le sucre, ça commence à être un peu la jungle sous Dotclear.
Spamtimeout ne se suffit pas à lui-même, il est complémentaire de Spamplemousse (ou de SpamClear). En effet, il ne protège pas nécessairement de la première tentative si elle est réalisée très peu de temps après le scan ou de celles faites manuellement (mais là c’est un plaisir, car on sait que le spammeur passe plus de temps pour faire son trackback que nous n’en passons à le modérer
).
Voilà, avec ça, les spammeurs n’ont plus qu’à scanner chaque billet à chaque fois pour retrouver une URL valide. Ce que je ne pense pas qu’ils soient prêt à faire car là le rendement serait nettement moins bon. Mais, même dans ce cas, on pourrait alors toujours faire quelque chose en ajoutant par exemple un peu de CSS magique pour compliquer le jeu.
Merci de me faire part de vos commentaires.
Edit: Il semble que la fonction de découverte automatique des URLs de trackback soit fortement appréciée (quand elle fonctionne...). Je viens donc d'ajouter son support dans la version 0.6 et vous invite à la tester. Ca expose un peu plus mais au vu de la façon dont fonctionnent les spammeurs, ça devrait continuer à arrêter l'essentiel des flux (je croise les doigts).
Commentaires
Salut,
C'est une solution intéressante. Mais le problème, ce qu'il faudra aller manuellement sur le billiet et faire un copier-coller de l'URL du rétrolien. (d'après ce que je vois dans la source de ta page)
Ce n'est pas une contrainte pour l'utilisateur?
Merci Laurent, je vais tester ton plugin.
Vraiment pas idiot comme manière de procéder. A tester donc.
Bien vu, je suis en train de l'installer, effectivement il faut bien prévenir les vrais utilisateurs sinon bye bye les trackbacks
@Sacha> à moins qu'il ne s'agisse d'un blog sur lequel on fasse des tracbacks fréquement, c'est généralement ce qui se passe.
Ton astuces supprime la moitié de l'intérêt des rétroliens (trackback) car lelle supprime la découverte automatique de l'URL de rétrolien. Ce protocole est urilisé par plein d'outils pour découvrire automatiquement l'URL de rétrolien en fonction de l'URL du billet.
PS: Le sujet me semble suffisement important pour toi pour que je fasse l'effort de remplire ce CAPTCHA injuste puisqu'il pénalise le commentateur.
@François Granger>Ta remarque, est tout à fait pertinente François.
Par contre, dans mon cas j'avais le choix entre ça et fermer définitivement les trackacks car la modération n'est plus possible à ce stade.
Bonsoir,
Merci beaucoup pour ce plugins ^^
Spam Clear ne s’en sort pas trop mal, même si’il reste le problème de l’indigestion de commentaires hors-ligne.
François < Franchement, la technique du CAPTCHA ne me gêne pas… bah… ça fait réviser l'arithmétique ! ;o)
finalement, vu que tout le monde semble attaché à la découverte automatique des URLs de trackback, je viens de l'ajouter dans la version 0.6.
Maintenant, c'est vraiment transparent.
Un grand bravo pour ton approche Laurent !
La découverte automatique ne semble plus fonctionner sur ton site.
Merci Sébastien, ton intervention m'a permis de mettre le doigt sur une petite subtilité. Maintenant la découverte automatique fonctionne parfaitement avec tous les blogs dans la version 0.7.
Ca sert à ça les tests
Il y a du pour et du contre dans cette méthode, en ce qui me concerne c'est une bonne idée mais trop limitative je trouve.
Salut, je viens de l'installer et on va bien voir. par contre, excusez-moi mais je ne trouve pas la fonction dcPostTrackbackAutoDiscovery() pour pouvoir la remplacer. Uhne note a propos du captcha : je comprends pas trop les gens qui ralent contre ça, les blogueurs font un effort véritable pour nettoyer leur blog et le rendre agréable à visiter, un petit effort de la part du visiteur me semble être un moindre mal. et puis, je ne vois pas ce qu'il y a de pénalisant. au moins, ca fonctionne et ce n'est pas vraiment compliqué d'y répondre !
@RaZorback> Pardon, dans mon empressement, j'ai fait une coquille sur le nom du fichier.
dcPostTrackbackAutoDiscovery()est à remplacer parspamtimeout::trackbackAutoDiscovery()dans le fichier template.php du thème et non dans post.php comme le laisse entendre ma doc un peu trop vite faite.merci, c'est deja plus clair !
bonne continuation!
Suite a ton commentaire sur mon blog, je vais tester ce petit plugin. Merci pour ce plugin et bonne continuation.
Salut, j'ai un petit souci. j'ai tout installé comme il faut, l'auto discovery, et les machins a mettre dans le tb.php et post.php mais une erreur persiste quand je fais un trackback en découverte automatique. par contre, si je copie l'url jetable dans la zone de ping ca donctionne.a noter que j'utilise le plugin personnalisation d'urls avec un shéma du style http://sof-paradise.info/index.php?billet cela viendrait il de la? l'erreur que j'ai est: la source n'est pas une url de ping valide. une idée?
Voyant que dans le code source de la page de ton billet tout avait l'air correct, je me suis permis de faire un essai de trackback en découverte automatique pour vérifier. En fait ça fonctionne très bien (tu peux d'ailleurs le supprimer ce trackback de test).
La découverte automatique remonte bien la bonne URL à l'émetteur du ping. Que ça n'ai pas fonctionné lors de ton essai, c'est juste une coincidence (le plugin n'entre pas du tout en jeu dans le ping proprement dit).
Le fait que l'URL de ping ne soit pas reconnue ça arrive quelques fois. Bien souvent, ça passe en relançant un ping quelques secondes plus tard.
Salut Laurent merci pour le test je n'arrive pas a comprendre . je viens de faire des tests via deux dotclears différents (un chez free et un chez un autre hébergeur) mais je n'i arrive décidément pas, je dois faire un truc qu'il ne faut pas (la preuve ca marche pour toi).
voila comment je procède :
je crée un billet avec l'url du billet a "trackbacker" dans le corps en l'occurence http://www.sof-paradise.info/index.php?antispam
je fais enregistrer en cochant la case "pinguer les urls".
voyant le champ url a pinguer vide , je clic sur pinguer encore et c'est la que le lien découverte automatique apparait sur le quel je click. mais la case reste vide chez moi.
peut-etre que je ne ptocède pas bien?
merci et désolé si ca parait evident !
Apparemment, tu procède correctement. Par-contre, maintenant j’ai un peu de mal à comprendre. Tes deux commentaires me paraissent contradictoires. Dans le premier, tu disais que tu avais une erreur du genre « la source n'est pas une url de ping valide ». Ce qui signifie que tu obtenais bien une URL de ping mais que c’était le ping en soit qui échouait. Dans le second, si je comprends bien, tu me dis que lorsque tu cliques sur le lien découverte automatique, la case reste vide. Ce qui signifierait qu’il ne découvre pas les URLs de ping et est alors contradictoire avec ton premier commentaire. Ai-je loupé quelque chose ?
Qu’elle version de Dotclear utilise-tu ?
Peux tu essayer de faire un trackback sur ce billet pour voir.
Si d’autres ont constaté le même problème de façon rémanente, qu’ils se manifestent. Merci.
Remarque : tu peux faire autant d’essais que tu le souhaites sans recréer un billet à chaque fois en allant directement dans l’onglet « trackbacks » quand tu es sur ton billet, puis en cliquant sur le lien «Découverte automatique des URLs à pinguer ».
salut
bon j'ai peut-être été un peu confus, je l'admets. donc, la je viens de réaliser un trackback en collant l'adresse jetable dans le billet et non le permalien. mais voici ce que j'obtiens et ça aussi c'est contradictoire.
mais mon histoire de case vide tient toujours, la découverte automatique ne me donne aucune url a pinguer.
je suis chez OVH (1000GP), dotclear 1.2.4.
merci (si besoin je peux te filer un access sur mon dotclear pour test.
merci, c'est sympa d'essayer en tout cas.
Encore moi (j'avais oublié).
cette fois, dans la case vide de l'url a pinguer , je colle le permalien de ton billet
@@@ERROR http://archiblog.stratic.fr/178-spamtimeout-adieu-spam-trackbacks-dotclear La source n'est pas une URL de pin
voila tout ce que je peux dire.
a bientot
Pour la découverte automatique d'URL à pinguer, c'est le permalien du billet à pinguer qui doit figurer dans ton billet (et non l'URL de trackback). Ensuite, pour retrouver l'adresse de trackback correspondante qui permet de réaliser le ping, la découverte automatique charge la page sur laquelle pointe le permalien et la scrute pour y trouver une zone de commentaire contenant en fait du XML au format RDF qui lui indique alors cette adresse sous une forme normalisée pour toutes les plateformes de blog (c’est pour ça que le temps de résolution est un peu long). Voilà pour les explications techniques afin d’ôter tout doute sur le mode d’emploi.
Tout ça ne nous dit toujours pas pourquoi ça ne fonctionne pas dans ton cas. Si je récapitule ce que j’ai compris :
Ton seul réel problème semble donc être quand toi tu cherche à découvrir automatiquement les URLs à pinguer depuis ton blog (ce qui n’a rien à voir avec le plugin). Là ça peut être lié à ton environnement d’exécution. La découverte automatique, ça marche souvent un peu quand ça veut. As-tu essayé de faire plusieurs essais successifs à partir d’un même billet ?
salut,

ton explication est plus que claire, (hmm a part les copies d'ecran, jsuis non-voyant lol mais tu ne pouvais pas savoir).
en fait, mon idée de chercher le problème est partie du fait qu'un pote a essayer de faire un trackback sur un de mes billets et que ca n'a pas marché. mainteant, en y réfléchissant, je suis en train de me demander si il n'a pas collé le permalien dans la zonne a pinguer, comme tu disais plus haut.
mais je m'apperçois effectivement que j'ai un souci avec la découverte automatique à partir de mon site. mais ca aussi, c'est plutot alléatoire. sur le billet dans lequel je parle de ton plugin, j'ai pu effectuer des trackback en découverte automatique sur tous les liens que je cite, sauf sur le tien . Et quand je crée un billet de test, et que je colle l'url du permalien dans le billet, ca ne découvre rien, que ce soit avec ton billet ou un autre. donc, comme tu dis, ca doit marcher quand ca veut. j'y comprends plus rien !
je suis désolé, apparamment ca n'a rien a voir avec ton plugindésolé donc pour le dérangement occasioné.
whoops... je viens de m'apercevoir que j'avais ca, à la place des résultats de ping après avoir cliqué sur découverte automatique.
Fatal error: Call to a member function on a non-object in /home.5/s/o/f/sofparad/www/blog/ecrire/trackback.php on line 148
et sur la ligne 148 j'ai ca:
if ($rs->isEmpty()) {
et en dessous :
echo '<p>'.__('No ping yet').'</p>';
est-ce que ca fait ca parce que la case est vide?
merci de m'éclairer en tout cas. si ca ne marche pas, et ben j'irai chercher l'url de trackback a la main c'est pa bien grave...
Ton erreur n’est pas liée à ce que tu essaie de pinguer. Elle se produit lorsque Dotclear essaie d’afficher.la liste des pings déjà réalisés! La variable
$rsutilisée dans l’expression$rs->isEmpty()est censée être un objet de typeResultSet(liste des résultats) et ce n’est pas le cas pour une raison inconnue du genre problème d’accès à la base de données (difficile de diagnostiquer à distance).Si c’est arrivé une seule fois par hasard, tu peux l’ignorer et ne pas te prendre la tête avec. Si c’est systématique, c’est plus inquiétant (problème d’environnement ou code source Dotclear modifié improprement).
Pardon, pour les photos d'écran
Salut
merci pour toutes ces infos et pour ton aide. j'ai posé la question sur le forum n'y connaissant rien car le souci se reproduit systématiquement.
merci
Bonjour,
Spamtimeout fonctionne parfaitement chez moi, mais, à chaque fois qu'un spambot essaie de me laisser un trackback spammeux sans le code mystère qui va bien, mon Apache loggue l'erreur PHP suivante :
Je ne pense pas que ce soit un comportement désiré...?
Ce spambot doit être un vieil ami
qui a capturé une URL avant la mise en place de Spamtimeout. Depuis, il essaie inlassablement de pinguer dessus.
La version 0.8 apporte maintenant une petite correction qui permet de reconduire ces vieux copains vers la sortie sans polluer les logs.
Merci pour l'info.
Euh question idiote, comment passe-t-on de la 0.7 à la 0.8 ? On réinstalle par-dessus, ou on désinstalle la 0.7 puis réinstalle la 0.8 ?
Re,
Bon, flemmard que je suis d'attendre la réponse, j'ai désinstallé la 0.7 puis installé la 0.8. Ca semble marcher parfaitement : plus de râlage dans les logs quand mes vieux amis bots essaient de me spammer sans le code magique.
Juste une autre petite remarque : La page HTML du plugin semble réalisée en UTF-8, et les caractères accentués y apparaîssent très vilainement sur un blog en ISO-8859-1. Maintenant, c'est sans grande importance, c'est une page administrative qu'on ne consulte que le jour de l'installation
Merci encore pour cet excellent plugin, extrêmement utile du moins tant que les nuisibles n'ont pas adaptés leurs bots.
installé chez moi depuis quelques jours et pour l'instant c'est très efficace, bien joué... espèrons que ça dure
Ce plugin est une très bonne idée. Je viens de l'installer. Je constate néanmoins un léger bug. La page ne passe plus la validation du W3C. Le problème vient du fait que l'URL jetable contient un &. Il suffirait dans le code de le remplacer par & pour que le code soit valide.
Pour corriger ce bug, il suffit, dans la fonction trackbackURI(), de remplacer echo "&chk="; par echo "&chk="; . Je viens de tester et ça semble fonctionner.
Merci Zillabe.
Heureusement que tu es attentif. Je croyais l'avoir fait. En fait seule la fonction
trackbackAutoDiscovery()avait été corrigée.La version 0.9 qui intègre cette correction, est maintenant disponible.
depuis une grosse dizaine de jours, un seul spam est passé, bravo
Toutefois j'aimerais bien pouvoir ajouter un compteur de spams de trackbacks bloqués... histoire de mieux me rendre compte. Quelqu'un saurait m'aider et me dire comment faire ?
Pour ajouter un compteur rudimentaire, insére ce code au début de la fonction
spamDetecteddans le fichier functions.php du pluginCeci créera dans le répertoire
ecrire/toolsde ton blog, un fichierspamCount.txtcontenant le compteur. Attention, ce répertoire doit être accessible en écriture. Pour tester, rends toi sur une URL de trackback avec le browser. A chaque chargement, le compteur doit s'incrémenter de 1.Pour remettre le compteur à zéro, il suffit de supprimer le fichier.
Pense ensuite à supprimer ce fichier ou fait le pointer sur un autre répertoire. Le répertoire
ecrire/tools, n'est pas fait pour ça (mais il normalement accessible en écriture) ...Merci, j'ai placé le spamCount.txt dans le dossier share, pas de problème à ce niveau
En revanche je voudrais pouvoir afficher la valeur sur la page de Spamplemousse et j'ai deux soucis : d'abord elle se met pas où je veux dans la page mais systèmatiquement au début de la page, ensuite j'ai des erreurs de "headers already sent...". Ca doit être vraiment tout bête mais je suis pire que nul en php
Pour l'affichage j'ai juste insérer ça dans l'index.php de Spamplemousse :
include(dirname(FILE).'/../../../share/spamCount.txt');Bon je sais que ça n'a pas grand chose à voir avec le schmilblick mais si quelqu'un veut bien se dévouer pour aider le boulet... merci ^^
Ton problème n’est pas un problème de php. Il est lié à l’architecture de dotClear. Les fichiers index.php des plugins sont un peu particuliers. Tout ce qui doit être affiché doit être poussé dans un buffer. Tu ne peux donc pas simplement faire un include du fichier compteur en espérant que la valeur apparaîtra à l'endroit de l'inclusion. Au moment, ou le script index.php s’exécute la page n’est pas encore en cours de constitution (d’où la nature de l’erreur constatée quand tu essaie d’écrire dans la page). La page est constituée à postériori, à partir du contenu du buffer. Si tu place la valeur du compteur dans une variable
$count, pour pousser ton message dans le buffer, il faut par exemple écrire :Ici, un include ne peut dont pas fonctionner. Il faut explicitement aller lire la valeur du compteur depuis le fichier compteur. Ce qui peut se faire (en vérifiant que le fichier existe bien) comme dans cet exemple.
Voilà, j’espère que ça répond à ta question.
Bah écoute non seulement ça répond bien à ma question mais en plus j'ai compris, donc parfait. Merci beaucoup :D
Très intéressant ton plugin ! dommage que je ne l'ai pas vu avant, car j'en suis moi aussi venu à développer un plugin pour Dotclear (TrackManager), également en cours de test. Son fonctionnement est cependant plus restrictif puisqu'il se base sur une liste de sites de confiance qui peuvent laisser des trackbacks. Une sorte de firewall pour trackbacks quoi :D
ça marche mais c'est un système plus restrictif que le tien.
Pour ceux que ça intéresse, vous pouvez le télécharger sur mon site. On en parle aussi sur woueb.net
Si ça peut aider...
Et mort au spams !
Je suis étonné de voir que ce plugin n'apparait pas dans la liste des plugins sur le wiki de dotclear. Il faudrait l'y inscrire afin que tout le monde puisse en profiter.
Merci pour ce plugin, je viens de l'installer et il semble répondre parfaitement au besoin !
Je vois que tu as réglé la durée à 5mn chez toi. 15 mn, c'était trop long ?
Merci encore !
Non 15 mn ça n'est pas trop long. Le passage à 5 mn, c'était juste pour expérimenter et voir si il y avait une différence notable. En fait c'est à peu prés pareil. Je conseille plutôt de rester à 15 mn. C'est moins contraigant à l'usage et ça protège tout aussi bien.
Je viens d'installer ce plugin magique. J'espére que ça va marcher
Tizel
Salut, Bravo pour cette analyse et ce plugin. Je l'ai découvert par hasard grace à un commentaire laissé sur mon blog concernant un billet sur les captchas. Cela dit, je pense que la solution proposée à ses limites : Dès que la solution sera répendue (intégrée à la future version de dotclear par exemple), il ne faudra pas longtemps à nos spammeurs fous pour comprendre qu'il parser les billets à la recherche d'une nouvelle url de trackback. Ne serait-il pas possible d'adapter le principe du captcha au tackback ? En y reflechissant cela me parait difficile à mettre en oeuvre sans introduire une complexité importante soit pour l'utilisateur final (comment entrer simplement un code de validation dans l'url de trackback par exemple) ou pour le developpeur (developper une interface de validation sur le blog).
S’il était utilisé comme seule défense, nos spammeurs pourraient effectivement le contourner facilement en faisant un scan systématique pour rechercher l’URL avant de poster. C'est bien pour ça que ce plugin doit être utilisé uniquement en complément de Spamplemousse ou de SpamClear. Si c’est toujours le cas, alors le fait re-scanner à chaque fois n’a aucun intérêt pour nos spammeurs car de toute façon leurs trackbacks ne passeront pas (ils seront modérés). La différence n’est donc visible que pour le bloggeur qui avec Spamtimeout évite les grosses corvées de ménage lors de la modération.
Le fait d’utiliser un système type captcha est effectivement possible avec des URLs de ping, par contre il serait très contraignant pour celui qui veut faire un trackback. Ca donnerait des url du style
http://monblog.org/tb.php?id=222&question= "combien_font_2+2"&reponse=auxquelles celui qui veut faire le ping devrait ajouter la réponse pour que le ping soit accepté. Mon but était de fournir une solution qui soit sans contrainte pour l’utilisateur. Je n’ai donc pas retenu celle-ciIl existe par contre d’autres méthodes non contraignantes comme le contrôle de cohérence d’adresses IP et de domaines, ou le contrôle de présence effective de back-référence dans la page pointée par le trackback. Le seul vrai défaut de ces méthodes (en dehors de celui de consommer des ressources) est de générer des faux positifs dans quelques cas particuliers. Avec Spamtimeout, celui qui fait le ping peut au pire retenter si il est allé fumer une cigarette entre temps, tandis-que sur les faux positifs de ces méthodes, il reste éternellement le bec dans l’eau. A mon avis, l’idéal serait donc certainement de pouvoir activer plusieurs méthodes en parallèle et de n’accepter le ping que si un nombre suffisant de contrôles sont passés avec succès tout en conservant Spamtimeout de façon à alléger la charge de l’hébergement en stoppant le mitraillage à l’entrée. Si personne ne le fait d’ici là, je pense sortir un plugin qui fera ça.
Ne serait-il pas possible de générer l'url de trackback à l'aide d'un javascript bien senti? De cette façon, il est envsigeable de mettre en place un captcha dont le resultat serait inclus par le javascript dans l'url. C'est envisgeable ou complèment fantaisiste de ma part?
Techniquement c'est possible pour ce qui est de l'URL présentée au lecteur du blog. Par-contre :
"...l'usage de JavaScript ne doit jamais être un pré-requis..." c'est l'évidence... Donc la seule solution crédible pour integré un captcha dans les trackback serait de valider un captcha avant de proposer sur une autre page un lien à usage unique et/ou limité dans le temps.
Oui. Mais ça reste sans solution pour la découverte automatique des URLs de trackback.
Le captcha est là pour éviter la découverte automatique?
La découverte automatique est une fonction utile aux plateformes de blogs elles-mêmes. Beaucoup de bloggers l’utilisent. Le but ne serait donc pas de supprimer cette fonctionnalité (ça c’est très simple), mais de la rendre inutilisable par un robot spammeur.
Pour ça, il est impossible de s'appuyer sur du JavaScript. Quand tu fais une découverte automatique à partir d’un de tes billets, la page (ou les pages) sur laquelle tu souhaite effectuer un trackback est scannée pour retrouver l’URL de ping. Ce n'est pas ton browser qui effectue le scan, mais le serveur hébergeant ton blog qui réalise cette opération en PHP. Dans ce contexte, il est impossible de dissimuler l’URL à l’aide d’une astuce JavaScript. Le programme PHP reçoit le code source de la page mais n'exécute rien! Il en est d'ailleurs parfaitement incapable. Le code JavaScript est perçu comme un simple texte. Rien ne peut donc être déclenché à la réception.
Pour maintenir la fonction de recherche automatique tout en la rendant inutilisable par un robot à l’aide d’un système de captcha, la seule solution consisterai donc, comme je le proposais plus haut, à faire remonter à l’utilisateur qui tente la découverte, une URL incomplète contenant une question qu’il doit ensuite compléter manuellement par la réponse attendue avant de pouvoir lancer son ping.
Techniquement c’est simple à faire. Mais concrètement, c’est tellement contraignant pour celui qui fait le ping qu’il est tout aussi simple de supprimer la découverte automatique et de l’obliger à faire un copier-coller de l’URL depuis son browser (ce qui n’est pas plus compliqué). Là, sur l’affichage de l’URL qu’il va devoir copier, on pourrait avoir recours à JavaScript pour la dissimuler à un éventuel robot. Mais, ce n’est pas du tout souhaitable. On laisserait alors les browsers sans JavaScript à la porte et ça, ce n’est pas bien du tout.
Pour ces raisons, je ne vois donc vraiment pas de solution de type Captcha qui soit applicable aux URLs de trackback (avec ou sans JavaScript). Sauf à supprimer la découverte automatique et passer par un Captcha pour avoir accès à la page qui donne l’URL de trackback. Mais là, ça devient très, très lourd et c’est tout sauf transparent pour l’utilisateur.
A moins que je n’ai rien compris à ta proposition…
Dans cette bataille contre le spam, le vrai problème n'est pas d'arrêter le spam en soit mais de le faire avec des solutions non contraignantes pour l'utilisateur (blogger ou lecteur). Certains se plaignent déjà des captchas. Alors, les obliger à faire en plus des copier-coller, c'est le tollé garanti.
La chasse aux spams continue ! Pour ceux que ça intéresse, j'ai développé un plugin permettant de stopper les trackbacks. Une autre alternative dans la luttre contre les trackbacks. Et pour ceux qui utilisent déjà l'efficace spamtimeout, le plugin est compatible. Comme quoi, on arrête pas le progrès.
C'est ici pour plus d'infos
Damned. Je crains que les spammeurs n'aient trouvé la parade à SpamTimeOut. Depuis hier les spams par trackback réapparaissent sur mon blog bien que je n'aie touché à rien. Suis-je le seul ?
Non, chez moi aussi les spams sont passés avec SpamTimeOut. J'ai dû changer le niveau de sécurité pour les stopper.
Zut, ça veut dire que SpamTimeOut est devenu trop populaire. Je m'en vais donc bidouiller et voir si le fait de changer &chk= dans l'url par un autre nom de paramètre bidon musèle les spammeurs.
J'ai déja le verdict : ca ne les musèle pas. Je crains que les spammeurs n'utilisent maintenant la fonction de découverte automatique des URLs de trackback pour polluer en toute quiétude. Ca m'agace. Du coup, j'ai désactivé les trackbacks en attendant de trouver une solution
Bon, je me fais de la pub mais bon. Essaye mon plugin (TrackManager), et met le sur le niveau de sécurité "Ouvert". ça permet de bloquer les spams et laisser quand même aux utilisateurs la possibilité de trackbacker. T'auras plus d'info sur mon site. En tout cas je peux dire que c'est pas la découverte automatique d'Url qui merde, puisque je l'avais désactivé chez moi, sans succès.
Hum, je viens de l'installer, j'espère qu'il va m'être pratique (je viens de mettre hors ligne une trentaine de trackbacks de spam).
Merci beaucoup
PS : ça fait combien neuf moins sept ? :S
Moi ça le fait pas
Une fois installé, il ne me dit rien :'(
Euh, que faut-il faire dans tb.php et post.php ?
Merci d'avance,
Bogoris
L'utilitaire de configuration indique effectivement la marche à suivre. Mais, il ne s'ouvre pas tout seul.
Pour y accèder :
L'utilitaire de configuration de Spamtimeout s'affiche. Il donne le détail des modifications à effectuer dans les fichiers.
J'ai finalement fait ça ce soir, ça a l'air de marcher, merci
Encore bravo pour ce joli plugin !
Le portage de Spamtimeout sous dotclear 2.0 est-il prévu ?
Cet outil est trop indispensable pour que j'envisage de m'en séparer en upgradant
Ce sera certainement fait courant décembre. Si j'en ai le temps.
Par contre, il n'est pas certain que ce soit Spamtimeout en tant que tel que je porte sous DotClear2. J'ai beaucoup mieux depuis. Vu que les robots spammeurs réussissaient à poster des commentaires malgré les Captchas, je me suis penché de nouveau sur la question et ai abouti à un système beaucoup plus complet et extensible qui permet de combiner plusieurs filtres. Ce sont les filtres qui votent entre eux pour décider s’il s’agit de SPAM ou non. Dans ce cadre, Spamtimeout n'est plus qu'un filtre parmi d'autres.
C'est encore tout neuf mais plus que prometteur. Depuis la mise en place de ce système je n’ai plus rien en file de modération, que ce soit pour les commentaires ou les trackbacks ! Et, c’est totalement transparent à l’usage.
Re
En attendant, je prie tout de même pour un Spamtimeout nouveau pour dotclear 2.0 ß3.4... Me suis bouffé plus de 750 spams de commentaires et trackbacks depuis ce matin, tous bloqués par Akismet (foutrement efficace !), mais tous collés en file de modération à purger à la main, Argh !
Je constate dans mes logs Apache que les robots spammeurs ne *lisent* pas les pages qu'ils spamment avant de spammer (donc ton idée initiale était géniale) : ils se contentent d'arroser "fire and forget" certainement à partir d'une base d'URLs préalablement collectées par un robot. Contre ce type de choses, spamtimeout est fabuleusement efficace, et présente l'avantage de ne pas encombrer une file de modération...
Je rève d'un Spamtimeout pour dc2, rien de plus compliqué : Akismet fait bien le reste, mais qui traite également les commentaires (en incluant un champ caché avec un code à durée de vie limitée dans le formulaire de post de commentaires), ainsi, pour une page affichée, on aurait un code permettant de poster le commentaire dans les 15 minutes - ou l'heure - qui suit, largement suffisant pour défaire avec zéro bavure les robots spammeurs arrosant sur une base d'URLs pré-collectées...
(Et s'ils doivent se remettre à lire toutes les pages qu'ils veulent spammer, non seulement il leur faudra réécrire leurs robots, mais ça leur bouffera considérablement plus de bande passante, de temps, et de CPU. Tout bénef).
Alors je te serais éternellement reconnaissant jusqu'à la fin de l'année
si tu avais l'excellente idée de pondre une telle chose... :-}
Pour le timeout des commentaires c'est déjà fait. Si tu as remarqué, il n'y a plus de captcha sur mon blog. C'est en grande partie grâce à ce type de filtre. Il y a de plus un contrôle de cohérence d'IP (seule l'IP qui a lu la page peut poster dessus), et plein d'autres filtres plus ou moins expérimentaux qui travaillent de façon coordonnée et apprennent les uns des autres (IPcheck, RBL, liste blanche, spamclear filter, askimet, mots intelligibles, avalanche d'urls, conformité des requêtes HTTP, Champs factices, etc.).
Les filtres ont chacun un coût estimé et sont appliqués de façon ordonnée de façon à rejeter au plus tôt sans consommer inutilement les ressources de l’hébergement. Ainsi des méthodes lourdes type SpamClear ou Askimet ne sont appliquées que quand les filtres de coût inférieur n’ont rien repéré d’anormal, c'est-à-dire rarement.
Au final un diagnostique est établi :
La plage de modération, permet de traiter les cas limites (par exemple, une IP blacklistée comme seul indice, n’est pas suffisant pour affirmer que c’est du spam de façon catégorique et peut bloquer un utilisateur légitime). Lors de la modération, l’ensemble des filtres apprennent (IP, mots spam, URLs, etc.). Ils deviennent ainsi plus efficaces la fois suivante.
Dans tous les cas, aucun numéro de commentaire n’est consommé inutilement (même avec modération), l’auteur est prévenu des raisons qui ont conduit au rejet de son commentaire et peut donc corriger son commentaire en conséquence.
Je souhaite que les filtres soient universels pour DotClear et Dotclear2.afin de ne pas avoir à faire une double maintenance. Seul le plugin qui permettra de les intégrer sera différent entre DC1 et DC2. Pour cette raison, je suis un peu en retard sur mon programme. Ca fonctionne de façon non packagée sur mon blog DotClear et je viens juste d'installer un DotClear2 pour commencer l'écriture du plugin proprement dit. Autant dire que ce sera plutôt pour janvier…
Ach ! Ça me plaît bien, tout ça !
Je mets juste un bémol sur le "seule l'IP qui a consulté la page peut poster" : Certains ISP (notamment AOL) ou grosses entreprises utilisent des réseaux de proxies, et ce sont différents proxies qui peuvent choper les différents éléments d'une même page, et c'est éventuellement encore par un autre que passera un POST éventuel... Donc il faut être prudent en filtrant sur ce genre de chose.
En dehors, de ça, c'est bel et bon :-))
Merci pour ce super plugin, mais est-il compatible Dotclear 2?
Pas encore, mais ça viendra courant de ce mois.
c'est une excellente nouvelle nous attendons une premiere version pour DC2 avec impatience