[Fluxbb] Radikal Anti Spambot Mod (PHP & Javascript) (Page 1) / PHP / Webmaster-thune.com

Webmaster-thune.com

Monétisation de sites web & ressources pour les webmasters

Vous n'êtes pas identifié(e).     

Annonce

Message de l'administrateur: Webmaster-thune.com - L'Ouverture c'est maintenant!!!

Annonce

Monétisation de sites web & ressources pour les webmasters

#1 29-10-2014 23:14:55

Cash Machine
Administrateur
Inscription : 30-11-2013
Messages : 22
Site Web

[Fluxbb] Radikal Anti Spambot Mod (PHP & Javascript)

Ayant eu l'occasion de reprendre récemment un forum Fluxbb qui avait été laissé à l'abandon pendant pas mal de temps, je me suis retrouvé confronté à une armée de spambots. C'est assez impressionnant, à peine le forum remis en ligne après 2 ou 3 semaines offline, dans les secondes qui ont suivi il y avait déja une bonne centaine d'users online... Rien que des spambots. Le forum avait été laissé à l'abandon pendant plusieurs années et les spambots y avaient pris leurs habitudes, j'avais du nettoyer plusieurs centaines de milliers de "spams-membres" et de "spams-posts" avant la remise en ligne.

Habituellement, j'utilise des mods antispam pour Fluxbb, donc la mod VSABR: Very Simple Anti Bot Registration avec des questions modifiées, plus une petite mod qui inclut Stopforumspam: Fluxbb Stopforumspam par Adaur. Normalement ça suffit, mais avec l'armée de spambots que j'avais en face, j'avais encore une poignée d'inscriptions qui passaient au travers des mailles du filet chaque jour. Je me suis donc attelé à réaliser quelque chose de plus radical, afin d'éradiquer totalement les spambots. J'ai réussi à réaliser un anti spambot pleinement efficace, je vais donc partager l'astuce avec vous.

Pour réaliser un anti spambot efficace, il faut réfléchir à la manière dont les spambots arrivent sur les forums, et comment ils fonctionnent. Des scripts permettent de crawler le web en recherchant tous les domaines contenant par exemple la signature classique des forums Fluxbb: "Propulsé par FluxBB". Pour chaque domaine trouvé, un script va automatiser le processus d'inscription en allant se rendre sur la page register.php (nom par défaut de la page d'enregistrement sur le forum). Sachant cela, nous allons pièger les bots. Tout d'abord, nous allons modifier le nom de la page d'inscription. Ensuite, étant donné que la plupart des spambots n'utilisent pas le javascript, alors que la très grande majorité des navigateurs des vrais utilisateurs a javascript activé (99% environ), nous allons utiliser cette particularité pour faire le tri entre les bots et les vrais users.

Voila la mod, qui fonctionne parfaitement sous Fluxbb 1.4.x et qui doit surement fonctionner aussi sur les autres versions:

Radikal Anti SpamBot Mod for Fluxbb by Cash Machine

Attention, toujours faire une backup de vos fichiers avant d'effectuer des modifs!

Renommer register.php en newregister.php (ou le nom de votre choix, vous devrez donc dans le cas d'un nom spécifique adapter la suite de la mod en remplaçant newregister.php par votre nom de page à chaque occurence de newregister.php)
Créer une page register.php avec le contenu suivant:

<?php
/*
 * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 */
define('PUN_MAIN', 1);
define('PUN_ROOT', './');
define('PUN_QUIET_VISIT', 1);
require PUN_ROOT.'include/common.php';
define('PUN_ACTIVE_PAGE', 'index');
 
$page_title = array(pun_htmlspecialchars($pun_config['o_board_title']), 'Erreur: Spambot');
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/parser.php';
?>

<div class="block">
            <h2><span>Error: Bot detected</span></h2> 

            
                <div> 
                    <p>Erreur, vous avez été détecté comme étant un SpamBot, l'inscription est bloquée. Retournez à l<a href="index.php">Accueil</a>.</FONT></p>
</div> 
  </div> 

<?php

require PUN_ROOT.'footer.php'; ?>

Ouvrez newregister.php

Recherchez:

<div id="rules" class="blockform">
	<div class="hd"><h2><span><?php echo $lang_register['Forum rules'] ?></span></h2></div>
	<div class="box">
		<form method="get" action="register.php">

Remplacez par

<div id="rules" class="blockform">
	<div class="hd"><h2><span><?php echo $lang_register['Forum rules'] ?></span></h2></div>
	<div class="box">
		<form method="get" action="newregister.php">

Recherchez:

<form id="register" method="post" action="register.php?action=register" onsubmit="this.register.disabled=true;if(process_form(this)){return true;}else{this.register.disabled=false;return false;}">

Rempacez par

<form id="register" method="post" action="register.php?newregister.php?action=register" onsubmit="this.register.disabled=true;if(process_form(this)){return true;}else{this.register.disabled=false;return false;}">

Recherchez:

<div class="forminfo">
					<h3><?php echo $lang_common['Important information'] ?></h3>
					<p><?php echo $lang_register['Desc 1'] ?></p>
					<p><?php echo $lang_register['Desc 2'] ?></p>
			</div>

Juste après, ajoutez:

<script type="text/javascript"> window.onload = clear; function clear() { document.body.innerHTML = document.body.innerHTML.replace('register.php?newregister.php?action=register', 'newregister.php?action=register'); } </script>

Ouvrez header.php

Recherchez

$links[] = '<li id="navregister"'.((PUN_ACTIVE_PAGE == 'register') ? ' class="isactive"' : '').'><a href="register.php">'.$lang_common['Register'].'</a></li>';

Remplacez par

$links[] = '<li id="navregister"'.((PUN_ACTIVE_PAGE == 'register') ? ' class="isactive"' : '').'><a href="newregister.php">'.$lang_common['Register'].'</a></li>';

Et c'est tout.

Explications du fonctionnement:

Quand un véritable utilisateur veut s'inscrire, il suit le lien dans le header, il arrive donc sur la page newregister.php. Les spambots qui accèdent directement à register.php ont droit à une page d'erreur leur expliquant que l'inscription est bloquée pour les bots. Ensuite, l'utilisateur remplit les champs sur la page newregister.php par défaut cette nouvelle page d'inscription dirige vers la page d'erreur lors de la validation. Si l'utilisateur a javascript activé, la destination de la requete POST sera modifiée, pour diriger vers la véritable page et valider l'inscription.

La protection est donc double: tous les bots qui se ruent sur register.php sont bloqués. Si un bot va sur la vraie page d'inscription, il sera bloqué tant qu'il n'utilise pas le javascript.

Pour l'instant j'ai 100% de spambots bloqués avec cette méthode. Le seul point négatif, c'est que vous aurez environ 1% de vrais users qui ont javascript désactivé sur leur navigateur, et qui se retrouveront donc bloqués à l'inscription. Vous pouvez donc ajouter sur la page register.php un petit commentaire, du genre "Veuillez activer Javascript pour pouvoir vous inscrire".

La mod est évolutive, admettons qu'un jour des spambots ont javascript activé, il sera toujours possible de les gruger, par exemple en mettant en place une reconnaissance de mouvements de la souris en js, il y a quand meme peu de chances de tomber sur un spambot qui supporte js et qui est capable de simuler des mouvements de souris. Attention, certains spammers ne sont pas des bots, mais des humains. En général, ce sont des habitants de pays très pauvres qui sont recrutés sur le net et payés quelques cents par post pour aller s'inscrire manuellement et spammer des forums. Dans ces cas là, il ne reste que le ban manuel.

Bonne chasse aux Spambots big_smile


Dans la vie, il y a deux sortes de gens: ceux qui cliquent sur les Pubs, et ceux qui encaissent la Thune.
Le Web, c'est une machine à faire du Cash.

Hors Ligne

Annonce

Monétisation de sites web & ressources pour les webmasters

Pied de page des forums

Liens utiles:


|   Forum Webmaster / Webmaster-thune.com   |


Server Stats - [ Generated in 0.032 seconds ]   [ 2013 Webmaster-thune.com ]  [ Design by Klocek ]