script anti aspirateurs

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
gringojack
Lézard vert
Messages : 173
Inscription : 18 mars 2005, 20:28

script anti aspirateurs

Message par gringojack »

bonsoir

qui pourrait m'expliquer comment installer ce script php anti aspirateurs dont voici l'adresse, ainsi que les references:
(soyez clairs, simples et precis, je comprends vite, mais il faut m'expliquer longtemps :lol: :lol: )
http://www.1001bd.com/stop_aspirateurs/ le fichier s'appelle trace_ip.zip, et est reference "version du 15-01-2003"

mon hebergeur accepte php et mysql
mes pages sont xhtml

voici les codes:

Code : Tout sélectionner

<?php
/////////////////////////////////////////////////////////////////////////////////////
// Script bloquant les aspirateurs de site - v 0.2 - 15/01/2003                    //
// Info: Renardrouge@rocketmail.com        - http://www.1001bd.com                 //
/////////////////////////////////////////////////////////////////////////////////////
// Création: Janvier 2003                                                          //
//       Ce script a été créer suite à une conversation stérile avec le            //
//       developpeur d'un aspirateur de site. Il refusait de reconnaitre les       //
//       dégats que peut entrainer son soft quand il est utilisé à tort            //
//       et à travers, ou contre l'avis des webmasters, en passant outre les       //
//       directives du robots.txt                                                  //
/////////////////////////////////////////////////////////////////////////////////////
// En pratique:                                                                    //
//       Les aspirateurs de site demandent un très grand nombre de pages dans des  //
//       intervalles de temps très court provoquant un surcharge du serveur web,   //
//       un gène des utilisateurs légitimes et une consommation de bande passante  //
//       importante.                                                               //
//       Ce script consomme lui aussi des ressources mais permet d'éviter le pic   //
//       de ressources généré par un aspirateur. Il comporte 3 requetes SQL et une //
//       trentaine de lignes de code.                                              //
/////////////////////////////////////////////////////////////////////////////////////
// Principe de fonctionnement:                                                     //
//       Le nombre de page demandées par IP et par minute est enregistrés. Si      //
//       une IP demande un nombre de pages php trop important, l'IP est interdite  //
//       et le script retourne le message "IP interdite pour abus"                 //
//                                                                                 //
//       Il n'est pas basé sur les user agent car les aspirateurs permettent de    //
//       les modifer sans difficulté.                                              //
//                                                                                 //
//       Un htaccess bloquant les agents connus ne peut qu'aider.                  //
//                                                                                 //
//       Il ne bloque pas les robots comme Googlebot ou Scooter, car les moteurs   //
//       de recherche étalent les acès à une site dans le temps.                   //
//                                                                                 //
//       Un aspirateur va commencer par aspirer la 1ère page de votre site, puis   //
//       de plus en plus au fur et à mesure qu'il découvrira des nouvelles url.    //
//       Il demandera à partir de ce moment plusieurs pages simultanément.         //
//       Au moment ou le script l'aura repéré, l'aspirateur ne trouvera plus de    //
//       nouvelles url. Il terminera l'aspiration des URL qu'il aura codécouverte  //
//       mais aspirera des pages avec le message d'erreur. L'aspiration se         //
//       poursuivra donc quelques minutes encore.                                  //
//                                                                                 //
//       Au final l'utilisateur de l'aspirateur n'aura que les 1ères page du site  //
//       et très rapidement tombera sur des pages blanches                         //
/////////////////////////////////////////////////////////////////////////////////////
// Résultats:                                                                      //
//       Ce script a bloqué les aspirations réalisées avec                         //
//       HTTrack, Memoweb, Offline explorer, Teleport                              //
//       lors de tests menés avec les participants de la liste bar d'ovh           //
//       que je remercie au passage. :-)                                           //
/////////////////////////////////////////////////////////////////////////////////////
// Contre-indications:                                                             //
//       Si votre serveur est "lent" - met plus de quelques secondes a afficher    //
//       les pages PHP - le script ne sert à rien, ne l'installer pas!!            //
/////////////////////////////////////////////////////////////////////////////////////
// Tout commentaire/idée d'amélioration/optimisation sont les bienvenus !!!!       //
// Si vous utilisez ce script, prévenez moi :o)                                    //
/////////////////////////////////////////////////////////////////////////////////////

// Installation:

// 1 - Renseigner les paramètres de votre base de données en créeant le fichier config_base.php
//     ou décommenter les 4 lignes suivantes et supprimer la ligne: 82 - require("config_base.php");

//$dbhost = "localhost";
//$dbuname = "root";
//$dbpass = "";
//$dbname = "base1";

// 2 - Créer les tables sql 'ip' et 'ip_bl'. Le code sql se trouve dans le fichier trace_ip.sql

// 3 - Configurer la ligne 129 - mail(...) avec vos paramètres
//     Cette ligne envoie un mail en cas de bloquage d'une IP
//     avec les paramètres de la connexion

// 4 - Installer ce script au début de toutes vos pages php
//     require ("trace_ip.php");

// 5 - Effectuer éventuellement des tests sur une partie de VOTRE site pour
//     affiner la limite de 25 pages/minute (ligne 120).

require("config_base.php");

$Vcpt  = 0;
$Vdate = date("Y/m/d H:i");
$Vua   = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
$Vip   = $HTTP_SERVER_VARS["REMOTE_ADDR"];

$dbic = mysql_connect($dbhost,$dbuname,$dbpass); 
mysql_select_db($dbname);

if ($dbic <> 0)
{
	// clean up old IP
	mysql_query("DELETE FROM ip WHERE date <> '$Vdate'");

	// chercher si le visiteur est interdit
	$res = mysql_query("SELECT ip FROM ip_bl WHERE ip='$Vip'");
	while(list($ip) = mysql_fetch_row($res))
	{
		// Visiteur trouvé dans les IP interdites
	        mysql_free_result($res);		
	        mysql_close($dbic);
		die("IP interdite pour abus.");
	}
	mysql_free_result($res);

	// chercher si le visiteur est déjà passé
	$res = mysql_query("SELECT id, ip, date, cpt FROM ip WHERE ip='$Vip'");
	while(list($id, $ip, $date, $cpt) = mysql_fetch_row($res)) $Vcpt = $cpt;
	mysql_free_result($res);

	if ($Vcpt == 0) mysql_query("INSERT into ip (id, ua, ip, date, cpt) values ('', '$Vua', '$Vip', '$Vdate', '1')");
	else
	{
		// Visiteur ayant déjà chargé des pages dans la même minute ==> +1 sur le compteur
		mysql_query("UPDATE ip SET cpt=cpt+1 WHERE ip='$Vip'");
	
		// si limite atteinte (25 pages php/min) ajouter dans la table des ip interdites.
		if ($Vcpt >= 25 )
		{
			mysql_query("INSERT into ip_bl (id, ua, ip, date, cpt) values ('', '$Vua', '$Vip', '$Vdate', '$Vcpt')");

			$msg = "HTTP_SERVER_VARS:\n" ;
    			while (list ($key, $val) = each ($HTTP_SERVER_VARS)) $msg .= "$key => $val\n";
    			$msg = addslashes($msg);
    			eval("\$msg = \"$msg\";");
    			$msg = stripslashes($msg);
    			mail ("gringojack@aol.com", "[IP Interdite] $Vip - $Vdate", $msg, "From: banmaster@votre_domaine.tdl");
		}
	}
	mysql_close($dbic);
}
?>

Code : Tout sélectionner

#
# Structure de la table `ip`
#

CREATE TABLE ip (
  id int(11) NOT NULL auto_increment,
  ua char(100) NOT NULL default '',
  ip char(50) NOT NULL default '',
  date char(20) NOT NULL default '',
  cpt int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY ip (ip),
  KEY date (date)
) TYPE=MyISAM;

#
# Structure de la table `ip_bl`
#

CREATE TABLE ip_bl (
  id int(11) NOT NULL auto_increment,
  ua char(100) NOT NULL default '',
  ip char(50) NOT NULL default '',
  date char(20) NOT NULL default '',
  cpt int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY ip (ip)
) TYPE=MyISAM;
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Merci et ciao

Windows 10
HP
Tyrannosaurus Rex
Messages : 2196
Inscription : 21 oct. 2004, 10:25

Message par HP »

faire un include en début du fichier php qui affiche tes pages ...
(çà c'est le premier code que tu cites)

créer 2 tables SQL ...
(2ème code, dans PHPMyAdmin par exemple)

c'est pas sorcier :wink:
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Il me semble que c'est encore un cas où le remède est pire que le mal. Pour chaque requête tu vas exécuter deux requêtes SQL, ce qui va ralentir beaucoup plus ton site qu'un éventuel aspirateur !
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
HP
Tyrannosaurus Rex
Messages : 2196
Inscription : 21 oct. 2004, 10:25

Message par HP »

Benoit a écrit :Pour chaque requête tu vas exécuter deux requêtes SQL, ce qui va ralentir beaucoup plus ton site qu'un éventuel aspirateur !
2 requêtes c'est pas si énorme, surtout si c'est "justifié" ...
sur un site à "gros" trafic, ça peut se justifier ... cependant, faut penser à modifier la partie :

Code : Tout sélectionner

die("IP interdite pour abus.");
et envoyer une entête avec un code d'erreur et aussi sortir du HTML plus éloquent et plus complet ...
ce n'est que mon avis :wink:

“La médiocrité obtiendra immanquablement la préséance en se travestissant des oripeaux de la bienséance.”
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Benoit a écrit :Il me semble que c'est encore un cas où le remède est pire que le mal. Pour chaque requête tu vas exécuter deux requêtes SQL, ce qui va ralentir beaucoup plus ton site qu'un éventuel aspirateur !
Effectivement, la première question à te poser est : en quoi les aspirateurs te gênent-ils ? :roll:

N'oublient pas que pas mal d'utilisateurs de modems 56K utilisent des aspirateurs pour vite aspirer un site (ton site), se déconnecter, puis le consulter tranquillement une fois déconnectés... est-ce vraiment répréhensible ? Souhaites-tu vraiment que ce type d'utilisateurs n'aient plus accès à ton site ? Ce serait bien dommage :wink:
HP
Tyrannosaurus Rex
Messages : 2196
Inscription : 21 oct. 2004, 10:25

Message par HP »

calimo a écrit :Effectivement, la première question à te poser est : en quoi les aspirateurs te gênent-ils ? :roll:
Parce que en règle générale, le grand public ne sait pas les utiliser correctement ...
et si on a un site+forum, ça tourne vite au gaspillage pur et simple :wink:

De plus un aspirateur utilisé en concordance avec le robots.txt pourra quand même aspirer si le script PHP est réglé judicieusement, donc :wink: ...
Dernière modification par HP le 20 mai 2006, 11:15, modifié 1 fois.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Je ne comprends pas comment tu peux voir cela comme du gaspillage (ça arrive une fois tous les combien de temps que quelqu'un aspire ton site ?) et pas l'évaluation d'un script, l'ouverture d'une connexion et l'exécution de quatre requêtes SQL (j'avais mal compté...) vers une base de données à chaque requête.

En plus il y a des chances pour que ça bousille le contrôle du cache sur les pages statiques, donc à priori tu renvoies le contenu à chaque fois même si la page n'a pas changé.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
gringojack
Lézard vert
Messages : 173
Inscription : 18 mars 2005, 20:28

Message par gringojack »

bonjour

ouais, c'est vrai que ca ne me derange pas beaucoup qu'on me "l'aspire"!. D'autant plus que je ne sais toujours pas comment l'installer (le script)! Alors je remets la chose a plus. Mais c'est toujours interessant d'avoir des avis differents qui se defendent!

ciao, men....

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Merci et ciao

Windows 10
HP
Tyrannosaurus Rex
Messages : 2196
Inscription : 21 oct. 2004, 10:25

Message par HP »

Benoit a écrit :Je ne comprends pas comment tu peux voir cela comme du gaspillage (ça arrive une fois tous les combien de temps que quelqu'un aspire ton site ?) et pas l'évaluation d'un script, l'ouverture d'une connexion et l'exécution de quatre requêtes SQL (j'avais mal compté...) vers une base de données à chaque requête.

En plus il y a des chances pour que ça bousille le contrôle du cache sur les pages statiques, donc à priori tu renvoies le contenu à chaque fois même si la page n'a pas changé.
Parce que toi tu as un phpBB qui met quelque chose en cache ? :shock:
et bien tu en as de la chance :wink:

Pour les pages statiques, j'ai pas compris, à quoi bon mettre un script php sur des pages statiques :roll:

“La médiocrité obtiendra immanquablement la préséance en se travestissant des oripeaux de la bienséance.”
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

J'ai raté l'endroit où on a parlé de phbBB. En fait, même en cherchant bien je trouve toujours pas :)

Pour les pages statiques c'est exactement ce que je dis (tu vois les mots juste à droite de ceux que tu as mis en gras ?). Y ajouter ce script en PHP c'est les rendre dynamiques et c'est absurde.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
HP
Tyrannosaurus Rex
Messages : 2196
Inscription : 21 oct. 2004, 10:25

Message par HP »

On est d'accord alors ?
sur un site dynamique dépourvu de cache, ça peut avoir son intérêt ...
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité