Bloquer les aspirateurs de sites

Contenu du snippet

Le principe est de créer, au début de chaque pages, un lien invisible qui réfère à une page. Cette page bannit l'IP du client si il l'affiche.

Comme les aspirateurs de sites tentent d'afficher toutes les pages qu'il voit en lien, il tombera dans le piège.

Un exemple?
tentez d'aspirer mon site : www.filesdepot.com

Source / Exemple :


Vous devez avoir, à la racine de votre site un dossier "webhoover" lui même se trouvant dans un dossier "incl".

1. Premièrement , créez une page "webhoover.php"

//début de webhoover.php
<?
$d=date("YmdHi")+5; // +5 > bannis 5min $fichier="incl/webhoover/".$REMOTE_ADDR.".txt";
$fp2=fopen($fichier,"w+");
fputs($fp2,($d));
fclose($fp2);
?>
<script>
alert('Vous semblez tenter d\'aspirer le site. Votre IP est bloquée pour 5 minutes')
</script>
//fin de webhoover.php

2. Créez une seconde page "scripts.php", se trouvant dans le dossier "incl":

//début de scripts.php
<?
if(file_exists("incl/webhoover/".$REMOTE_ADDR.".txt")){
$fp=fopen("incl/webhoover/".$REMOTE_ADDR.".txt","r");
$n=fgets($fp,255);
fclose($fp);
$d=date("YmdHi");
if($n<=$d){
 unlink("incl/webhoover/".$REMOTE_ADDR.".txt");
}else{
 echo "<script>alert('Votre IP est bloquée pour 5 minutes car vous avez tenté d\'aspirer le site');opener=self;self.close()</script>";
 exit;
}
}
?>
<a href="webhoover.php"><img border=0 src="img/webhoover.php" width=0 height=0></a>
//fin de scripts.php

Remarquez le lien dans scripts.php. Il s'agit d'une image trop petite pour être cliquée, mais l'aspirateur de site la prendra pour un lien. Et comme ce lien est en début de page, il passera par lui en premier.

Il est impératif que la page scripts.php soit appelée au début de chaque pages pour vérifier si l'ip n,est pas bannie.

au début de chaque pages que vous voulez protéger:
<?include("incl/scripts.php")?>

Conclusion :


Voila principe simple mais efficace.

L'aspirateur téléchargera toutes les pages, mais elle ne contiendront pas autre chose qu'un message "Votre IP a été bloquée..."

Bon la fonction de calcul du 5 minutes est trop simple.
elle ne calcul pas l'avancement de jours à minuit et etc mais bon...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.