Un script en Php pour réduire le spam referer

Un script Php pour lutter contre le spam referer

Vous avez sans doute vu dans vos statistiques Google Analytics de votre site internet qu’elles étaient polluées par des referers de type spam.

Cela rend moins exploitable vos statistiques, cela fausse les données, … C’est vraiment dérangeant.

J’ai donc eu l’idée de développer en Php un script qui permet de bloquer le spam referer. C’est une bonne nouvelle non ?.

Oui enfin je vous annonce tout de suite que ce script n’est pas la solution parfaite car il ne peut pas tout bloquer. Je vous explique cela dans l’article mais aussi les avantages à utiliser ce script.

Le principe du script

Le script permet de bloquer les spammers à la source cad lors de l’appel de n’importe quelle page du site.

Lors de l’appel à une page du site si un spammer de type referer est détecté le script stoppe l’exécution du code PHP (avec un appel à fonction die()) et par conséquent le spammer n’apparaîtra pas dans les stats.

Fonctionnement du script (technique)

Le script détecte le domaine du référent. Ensuite il compare ce référent avec une liste de domaines de type « spammers »; une blacklist.

Pour info la liste des domaines est présente dans une table SQL que l’on peut compléter.

Si le domaine est connu c’est donc un spammer alors j’incrémente de 1 le compteur correspondant au domaine concerné (champ visits).

Ensuite je bloque l’exécution du code php et une page blanche s’affiche.

Si le domaine n’est pas présent dans la blacklist alors la page s’affiche.

En image le contenu de la table spammers :

spammers liste

Les avantages du script

  • Il permet d’économiser des ressources du serveur d’hébergement puisque le code (coté serveur) n’est pas exécuté lorsqu’un spammer se présente.
  • Vos statistiques visiteurs seront moins polluées puisque certains spammers seront bloqués et la page du site ne sera pas affichée. Le script JS de votre module de statistiques ne sera donc pas exécuté.
  • On peut ajouter facilement un domaine à bannir en base de données (via PhpMyAdmin). Je vais améliorer le script coté backoffice afin que l’on puisse ajouter une liste de domaine à bloquer via un fichier texte ou csv.
  • Le script fonctionne (normalement) sur un hébergement mutualisé.

Les inconvénients du script

  • Comme n’importe quel script celui-ci demande un petit temps de traitement pour tester le referer. Cela ralentira l’affichage pour les visiteurs légitimes. Ceci dit j’ai testé la perte de performances d’affichage d’une page liée à ce script : c’est de l’ordre du centième de seconde donc on peut dire que ce n’est vraiment pas grand chose.
  • Vous remarquerez sur le screenshot au dessus (table des spammers) que certains domaines ont toujours comme valeur 0 sur le champ « visits » alors que d’autres ont été bloqués plus de 10 fois. Cela veut dire 2 choses :
    1. Pour certains de ces domaines il n’y a pas eu de tentatives de spam donc là c’est normal.
    2. Pour certains d’entre eux comme free-social-buttons.com mon filtre n’a pas fonctionné pourtant ce domaine apparaît bien dans mes stats de Google Analytics.

J’explique pourquoi dans le paragraphe ci-dessous :

Une solution qui n’est pas parfaite

J’ai mis en place le script sur mon site. Si je regarde mes statistiques visiteurs, free-social-buttons.com apparaît toujours dans les rapports :

  • www1.free-social-buttons.com 8 visiteurs
  • www2.free-social-buttons.com 4 visiteurs
  • www4.free-social-buttons.com 2 visiteurs
  • www5.free-social-buttons.com 2 visiteurs
spammers referents

Comment cela ce fait ?

J’ai réfléchi un moment avant de trouver la raison qui pourtant est toute simple. Cela vient du fait qu’il y a un appel direct au script Google Analytics et non à une page de mon site. Dans ce cas le script Php ne sera donc pas exécuté.

Donc ? Le script est-il vraiment utile ?

Oui car même si le script ne peut rien faire contre les appels directs au fichier JS de Google Analytics par contre il va bloquer certains spammers à la source avec les avantages que cela représente.

Pour le reste il faut utiliser des solutions (en complément) expliquées dans cet article

Je mettrai à disposition prochainement mon script sur GitHub. N’hésitez pas à me poser des questions sur ce script.

1 réflexion au sujet de « Un script en Php pour réduire le spam referer »

Laisser un commentaire