Sommaire
Lecture guidée
Accédez rapidement aux points clés de l’article.
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, c’est-à-dire 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 :

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 :
- Pour certains de ces domaines il n'y a pas eu de tentatives de spam donc là c'est normal.
- 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

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.
Même catégorie
Articles de la même catégorie
Une sélection d’articles publiés dans Développement web pour continuer sur un sujet proche.
WordPress 7.0 : nouveautés, date de sortie et guide de mise à jour
Documentation complète sur WordPress 7.0 : date de sortie, nouveautés, IA, administration, éditeur, prérequis PHP, compatibilité p...
Faire tourner qwen3-coder-next:q4_K_M en local
Tutoriel complet pour faire tourner qwen3-coder-next:q4_K_M en local avec Ollama, VS Code (Continue) et Windows 11. Configurati...
J’ai développé mon propre CMS PHP/MySQL avec l’aide de l’IA
Découvrez le retour d’expérience complet sur le développement de mon CMS PHP/MySQL avec l’aide de l’IA. Objectifs, roadmap, foncti...
Navigation
Poursuivre la lecture
Naviguez vers un article plus récent ou plus ancien, revenez au fil éditorial ou explorez davantage la rubrique courante.
Article plus ancien
Faut-il se lancer dans la conception de sites Internet ?
Analyse du marché de la création de sites web depuis les années 2000 : évolution du métier de webmaster, montée des spéc...
Lire l’article plus ancienPoint de repère
Revenir à Développement web
Retrouvez l’ensemble des articles publiés dans cette catégorie pour poursuivre la navigation de manière thématique.
Voir la catégorieArticle plus récent
Présentation du framework PHP Cakephp 2
CakePHP 2 est un framework PHP inspiré de Ruby on Rails, basé sur le modèle MVC. Il a évolué jusqu’à la branche 2.10, do...
Lire l’article plus récentCommentaires
1 message
Échanges déjà publiés autour de l’article, questions de lecteurs et retours d’expérience validés.
Jerem
Commentaires
Laisser un message
Partagez une question, un retour ou un complément utile. Les commentaires sont relus avant publication.
Réseaux sociaux
Retrouvez Nicolas HENRY ailleurs
Profils, publications et points de contact sur les principales plateformes.