Stratégies anti spam ou comment flinguer le blackhat.

novembre, 23, 2008
Sylvain

J’ai déjà parlé dans un post précédent de la définition du web spam, la question qui se pose pour nos amis des moteurs de recherche est bien sûr de savoir comment éviter la pollution des résultats de recherche par du spam.
Il y a une recherche dynamique dans ce cadre : du coté des moteurs tout d’abord (je pense à l’équipe de l’inénarrable Matt Cutts par exemple) mais aussi du coté des universitaires (même si la distinction n’est pas toujours claire). Ainsi les chercheurs de l’infolab de Stanford (d’où sort Brin et Page par exemple) ont commis l’article suivant, qui comme son titre l’indique, résume les principaux mécanismes de luttes contre le spam sur le web (dans le cas particulier des sites communautaires) :
Paul Heymann, Georgia Koutrika, Hector Garcia-Molina. Fighting Spam on Social Websites: A Survey of Potential Approaches and Future Challenges. IEEE Internet Computing Special Issue on Social Search, 11(6): 36-45 (2007).
(article dispo ici)

Que trouve t-on dans cet article qui est intéressant bien que très peu informatif techniquement ? On trouve une classification des méthodes de lutte contre le spam sur le web, que j’ai redécoupé entre méthodes automatiques/manuelles.

spamlutte_400

Déclassement du spam
Déclasser une page de spam, c’est faire en sorte qu’elle ne ressorte pas dans les premiers résultats du moteur de recherche. Il faut bien voir que cela ne signifie pas nécessairement que l’on a détecté que la page en question est du spam, mais que l’on a une suspicion suffisante pour décider d’opérer un déclassement via une pénalité. Quel type de pénalité peut-on imaginer ? Des choses très simple (depuis pénalité aux .info jusqu’au fait de n’avoir des liens que depuis la même classe IP) jusqu’au plus compliqués (les fameux trustrank et spamrank). Ces pénalités sont attribuées automatiquement, en effet si c’était manuel on serait alors dans une optique de détection de spam.

Détection du spam
L’idée de ces méthodes est de repérer les pages de spam qui sont dans le corpus intégral. Il s’agit donc bien d’être capable de reconnaître une page de spam. La manière la plus simple de réaliser cette tâche est bien sur humaine : un modérateur pourra supprimer les pages qu’il aura vu et dont il pensera qu’elles sont non légitimes, ou alors plus brutalement on pourra supprimer toutes les pages d’un auteur identifier comme spammeur (par exemple supprimer tous les sites qui ont un whois similaire à un site identifié comme spam, c’est une punition très violente).
Mais on peut aussi mettre en place des méthodes automatiques : les plus connues sont basés sur l’analyse de texte (voir les travaux de Ntoulas, Najork, Manasse et Fetterly par exemple) mais on trouve des méthodes basées sur l’analyse des liens (détection de fermes de lien par exemple, travaux de Wu et Davison et de bien d’autres encore) et l’analyse du comportement de l’utilisateur (là, désolé mais je n’ai pas de référence, mais j’imagine qu’on regarde la fréquence de publications et ce genre de choses).
Le problème évident des méthodes de détection c’est qu’un page spammante reste en place (et souvent en bonne place) le temps qu’elle soit détectée, ce qui permet au spammeur de faire son beurre pendant quelques temps, et ne le pousse donc pas à changer de métier.

Prévention du spam
L’idée est ici de rendre difficile la mise en ligne du spam ou alors de rendre cette mise en ligne couteuse et inintéressante.
Les techniques manuelles possibles sont très simples : rendre l’interaction automatique avec le système impossible, ce qui oblige le spammeur a consacrer une forte part de son temps à interagir avec le système (ou a payer des chinois/indiens ou autres pour faire ces interactions), on peut également obliger les utilisateurs du système à effectuer un micro paiement pour chaque action qu’ils font (indolore pour eux car ils font peu d’actions, couteux pour les spammeurs qui envoient des messages en masse par exemple).
D’un point de vue automatisme, on retrouve les sempiternels captchas mais aussi des choses plus amusantes comme par exemple les limitations à la communauté (limiter le nombre de participants, mettre des conditions de cooptation, etc.) et la notion de personnalisation maximale. J’aime beaucoup cette dernière notion qui implique le raisonnement suivant : si chaque utilisateur peut personnaliser les pages qu’il voit autant qu’il le veut, il n’y a plus d’endroit à spammer, car pour être présent partout le spammeur devra fournir un travail trop important…

Bref ?
Voilà quelques méthodes de lutte contre le spam, rien de bien nouveau mais une synthèse plutôt sympathique que je vous engage à lire (il n’y a aucune difficulté matheuse dans l’article).

Pour en savoir plus sur l’analyse anti-spam in text, c’est par là

Picture: courtesy of Abby Blank