Anti aspirateur: ne pas bloquer Google
33 messages • Page 1 sur 3 • 1, 2, 3
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Anti aspirateur: ne pas bloquer Google
Bonjour
J'ai trouvé sur wri ce bout de code qui de manière classique compte les IP et les bloque si les connexions sont trop nombreuse, mais qui normalement permet à Google d'éviter d'être bloqué.
Ici on peut voir que Googlebot/2.1 n'est pas bloqué, mais je ne sais pas comment modifier légèrement cette ligne pour y ajouter Mediapartners-Google/2.1.
---------------------------
J'ai trouvé sur wri ce bout de code qui de manière classique compte les IP et les bloque si les connexions sont trop nombreuse, mais qui normalement permet à Google d'éviter d'être bloqué.
Ici on peut voir que Googlebot/2.1 n'est pas bloqué, mais je ne sais pas comment modifier légèrement cette ligne pour y ajouter Mediapartners-Google/2.1.
---------------------------
- Code: Tout sélectionner
function googlebot($agent) {
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
return($rel);
}
$refe = googlebot($HTTP_USER_AGENT);
if ($refe == "1") { $Max = 500; } else { $Max = 35; }
et comme ça si notre ami qui utilise Httrack spoofe son User Agent il peut commettre ses méfaits en toutes tranquillité !
essaie donc Httrack, tu verras avec quelle facilité tu peux lui attribuer l'User Agent de ton choix ...
essaie donc Httrack, tu verras avec quelle facilité tu peux lui attribuer l'User Agent de ton choix ...
- achaternet
- WRInaute impliqué

- Messages: 256
- Inscription: Mar Fév 11, 2003 12:44
J ai enfin trouvé la solution ultime, radicale, efficace, et qui ne bloque pas les bots et bloque n importe quel aspirateur!
Divers scripts testés, mais toujours des inconveniants.
Mais surtout, si l aspi ouvre de nombreux pages simultanées, le script est OUT, et il continue le pompage du reste du site
J ai créé moi meme un script qui bloque les bloques, et ca fonctionne du tonnerre.
Script en place depuis plus d un an sur un de mes sites et nickel.
Le projet encore en beta:
http://www.anti-aspirateur.com/
Concretement, je souhaite proteger une partie de mon code, mais vous faire profiter les webmaster de cette protection.
Pour l instant, cela ne fonctionne pas encore parfaitement pour vous autres, mais bientot operationnelle.
Sinon, je defis qui souhaite tenter d aspirer 30 pages rapidements, par exemple, depuis http://www.anti-aspirateur.com/test_aspi.php
faite vous passer pour qui vous voulez...
Je vous tiendrez au courant, la communauté wri de la finalisation de ce projet
Divers scripts testés, mais toujours des inconveniants.
Mais surtout, si l aspi ouvre de nombreux pages simultanées, le script est OUT, et il continue le pompage du reste du site
J ai créé moi meme un script qui bloque les bloques, et ca fonctionne du tonnerre.
Script en place depuis plus d un an sur un de mes sites et nickel.
Le projet encore en beta:
http://www.anti-aspirateur.com/
Concretement, je souhaite proteger une partie de mon code, mais vous faire profiter les webmaster de cette protection.
Pour l instant, cela ne fonctionne pas encore parfaitement pour vous autres, mais bientot operationnelle.
faite vous passer pour qui vous voulez...
Je vous tiendrez au courant, la communauté wri de la finalisation de ce projet
- achaternet
- WRInaute impliqué

- Messages: 256
- Inscription: Mar Fév 11, 2003 12:44
84.98.*.*; 25/06/2006 22:11:48;
http://www.anti-aspirateur.com/test_aspi.php?suiv=4
82.254.*.*; 25/06/2006 21:59:29;
http://www.anti-aspirateur.com/test_aspi.php?suiv=5
213.166.*.*; 25/06/2006 21:33:14;
http://www.anti-aspirateur.com/test_aspi.php?suiv=3
Ils se reconnaitront
Dernière édition par achaternet le Dim Juin 25, 2006 21:31, édité 1 fois.
- achaternet
- WRInaute impliqué

- Messages: 256
- Inscription: Mar Fév 11, 2003 12:44
Albert1 a écrit:tu prétends offrir un test ...
Oups
rebirth a écrit:if ($nomnav == "Googlebot/2.1" || $nomnav == "CeQueTuVeuxMettre") { $rel = "1"; }
Je me permets de relancer. J'ai l'impression qu'il y a une erreur dans la condition car elle ne semble pas être prise en compte.
En gros, ce que je souhaite, c'est une valeur OU.
Je me demande aussi si à la place de Googlebot/2.1, il ne faut pas préciser: Googlebot/2.1 (+http://www.google.com/bot.html)
car je bloque toujours cet useragent: HTTP_USER_AGENT => Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Merci
Je mets tout le script (pris dans ce forum) si cela peut intéresser
- Code: Tout sélectionner
<?php
$to = xxx
$from = "xxx@xxx.com";
$dbhost = "localhost";
$dbuname = "xxx";
$dbpass = "xxx";
$dbname = "xxx";
function googlebot($agent) {
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Googlebot/2.1" || $nomnav == "Mediapartners-Google/2.1") { $rel = "1"; }
return($rel);
}
$refe = googlebot($HTTP_USER_AGENT);
if ($refe == "1") { $Max = 200; } else { $Max = 25; }
$Vcpt = 0;
$Vdate = date("Y/m/d H:i");
$Vua = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
$Vip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$Realtime = time();
$Limitime = $Realtime + 1200;
$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'");
mysql_query("DELETE FROM ip_bl WHERE ltime < '$Realtime'");
// chercher si le visiteur est interdit
$res = mysql_query("SELECT ip FROM ip_bl WHERE ip='$Vip' AND ltime > '$Realtime' ");
while(list($ip) = mysql_fetch_row($res))
{
// Visiteur trouvé dans les IP interdites
mysql_free_result($res);
mysql_close($dbic);
die("Vous consultez trop rapidement les pages du site. Votre adresse IP est bloquée durant 20mn.");
header("HTTP/1.0 404 Not Found");
exit;
}
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 >= $Max )
{
mysql_query("INSERT into ip_bl (id, ua, ip, date, cpt, ltime) values ('', '$Vua', '$Vip', '$Vdate', '$Vcpt', '$Limitime')");
$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 ("xxx@xxx.com", "[IP Interdite] $Vip - $Vdate", $msg, "From: banmaster@votre_domaine.tdl");
}
}
$VVcpt = round(((round (($Vcpt / ($Max + 1)) * 100)) / 100) * 100);
$Acpt = $Vcpt + 1;
mysql_close($dbic);
}
?>
- achaternet
- WRInaute impliqué

- Messages: 256
- Inscription: Mar Fév 11, 2003 12:44
Je ne suis pas un expert en expression reguliere, mais je vais essayer de te faire avancer
Les 3 agents de google:
Googlebot/2.1 (+http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)
Mediapartners-Google/2.1
$nomnav == "Googlebot/2.1" || $nomnav == "Mediapartners-Google/2.1")
L expression reguliere:
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
teste la presence de Googlebot/2.1
Du coup, le tableau qui en ressort ne donne pas le meme resultat du positionnement de gg2.1 et ainsi LE TEST EST DIFFERENT.
$nomnav = strtoupper($tab[1]);
Oui, mais selon le cas. Des fois, ca peut etre $tab[0] .
Essaie de tester non pas avec $tab[1], mais $tab[0] ,$tab[1] et $tab[2] au cas ou.
a l arrache là, genre:
$nomnav = strtoupper($tab[0]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[2]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
J espere t avoir fait progressé
Les 3 agents de google:
Googlebot/2.1 (+http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)
Mediapartners-Google/2.1
$nomnav == "Googlebot/2.1" || $nomnav == "Mediapartners-Google/2.1")
L expression reguliere:
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
teste la presence de Googlebot/2.1
Du coup, le tableau qui en ressort ne donne pas le meme resultat du positionnement de gg2.1 et ainsi LE TEST EST DIFFERENT.
$nomnav = strtoupper($tab[1]);
Oui, mais selon le cas. Des fois, ca peut etre $tab[0] .
Essaie de tester non pas avec $tab[1], mais $tab[0] ,$tab[1] et $tab[2] au cas ou.
a l arrache là, genre:
$nomnav = strtoupper($tab[0]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[2]);
if ($nomnav == "Googlebot/2.1") { $rel = "1"; }
J espere t avoir fait progressé
Merci
Autrement dit:
function googlebot($agent) {
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
$nomnav = strtoupper($tab[0]);
if ($nomnav == "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)") { $rel = "1"; }
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Mediapartners-Google/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[2]);
if ($nomnav == "Googlebot/2.1 (+http://www.google.com/bot.html) ") { $rel = "1"; }
return($rel);
}
Autrement dit:
function googlebot($agent) {
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
$nomnav = strtoupper($tab[0]);
if ($nomnav == "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)") { $rel = "1"; }
$nomnav = strtoupper($tab[1]);
if ($nomnav == "Mediapartners-Google/2.1") { $rel = "1"; }
$nomnav = strtoupper($tab[2]);
if ($nomnav == "Googlebot/2.1 (+http://www.google.com/bot.html) ") { $rel = "1"; }
return($rel);
}
- achaternet
- WRInaute impliqué

- Messages: 256
- Inscription: Mar Fév 11, 2003 12:44
Non, je ne pense pas:
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
Pour traduire:
On repere tout ce qui commence par:
- des lettres minuscules ou majuscule suivi
- d'1 slash suivi d'1 ou plusieurs chiffres suivi
- d 1 point suivi d'1 ou plusieurs chiffres et enfin suivi
- du reste ( pour simplifier)
Ainsi l expression "Googlebot/2.1" correspond a cela et c est ce que l on cherche.
Enfin, avec la fonction ereg, il distingue l expression cherchée du reste.
Regarde en detail http://fr.php.net/manual/fr/function.ereg.php
Apres d en deduira sur quel indice de ta table tester.
Sinon, toujours pas, pas grave, il suffit de te faire une page test
... et de tester
Plus precisement:
$agent="juste que c est pas google";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Mediapartners-Google/2.1";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Googlebot/2.1 (+http://www.google.com/bot.html) ";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
De la, direct, en fonction des agents et des indices resultant, tu saura quoi tester.
Ps: Pour foreach http://fr.php.net/manual/fr/control-str ... oreach.php
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
Pour traduire:
On repere tout ce qui commence par:
- des lettres minuscules ou majuscule suivi
- d'1 slash suivi d'1 ou plusieurs chiffres suivi
- d 1 point suivi d'1 ou plusieurs chiffres et enfin suivi
- du reste ( pour simplifier)
Ainsi l expression "Googlebot/2.1" correspond a cela et c est ce que l on cherche.
Enfin, avec la fonction ereg, il distingue l expression cherchée du reste.
Regarde en detail http://fr.php.net/manual/fr/function.ereg.php
Apres d en deduira sur quel indice de ta table tester.
Sinon, toujours pas, pas grave, il suffit de te faire une page test
... et de tester
Plus precisement:
$agent="juste que c est pas google";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Mediapartners-Google/2.1";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
$agent="Googlebot/2.1 (+http://www.google.com/bot.html) ";
ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $agent, $tab);
// Boucle foreach pour afficher tab[] et l indice correspondant.
De la, direct, en fonction des agents et des indices resultant, tu saura quoi tester.
Ps: Pour foreach http://fr.php.net/manual/fr/control-str ... oreach.php
33 messages • Page 1 sur 3 • 1, 2, 3
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- La valse des rachats de sociétés par Google en mai/juin 2007
- Google Pack s'enrichit de 2 nouveaux logiciels gratuits
- Google propose en option un lien pour supprimer un site des résultats
- Comment contrôler ses Sitelinks Google
- X-Robots-Tag : directive pour bloquer les robots dans l'entête HTTP : explications
- Google Toolbar v2.0
- Script anti-aspirateur et Google (et les autres...)
- anti-aspirateur
- Anti aspirateur URGENT ?
- mod_rewrite et anti aspirateur
- /!\ aspirateur de site et anti référencement ...
- .htaccess anti-aspirateur de site
- Script php Anti aspirateur.
- Anti aspirateur de site : une idée
- Mon script anti-aspirateur a blacklisté googlebot.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum