Post by Denis BeauregardPost by titou44bonjour
comme de plus en plus j'ai un site qui est pollué par des visiteurs
indésirables de pays (ex russie et autres républiques de l'ex urss), je
voulais savoir s'il était possible de connaitre le pays d'origine d'un
visiteur (ex: adresse IP) avec un script php pour pouvoir réaliser un
renvoi automatique vers un autre site ou une page spécifique ?
merci pour piste
Ce que je vois chez moi, ce sont des robots visiteurs que je soupçonne
de rechercher des adresses à spammer.
Je me suis fait un script qui déduit le nom du domaine pour m'envoyer
un message quand il y a un abus (trop de pages lues), mais beaucoup
n'ont pas de nom de domaine. Par contre, les IP sont souvent données
en groupe et il est alors possible, je suppose, d'interroger le whois
de la région concernée.
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER["HTTP_USER_AGENT"];
J'ai aussi cette variable : $_SERVER['REMOTE_ADDR']
Pour le whois, je n'ai pas cherché à l'utiliser.
Denis
Bonjour Monsieur
Je suppose que vous calculez le nom de domaine avec le reverse de
l'adresse ip ?
La fonction gethostbyaddr() de PHP est assez lente, en ce qui me
concerne j'utilise cette fonction :
function ndd_reverse($remote_addr)
{
$array_error = array();
/*
* Calcul rapide
* du champ
* IP_REVERSE
*/
$ip_reverse = $remote_addr;
if(!empty($remote_addr))
{
$ptr = implode(".", array_reverse(explode(".",
$remote_addr))) . ".in-addr.arpa.";
$array_host = dns_get_record($ptr, DNS_PTR);
if($array_host != null)
{
for($i = 0; $i < count($array_host); $i++)
if(!empty($array_host[$i]['target']))
{
$ip_reverse =
addslashes($array_host[$i]['target']);
break;
}
}
}
else
{
return(false);
}
if($ip_reverse == $remote_addr)
return (false);
else
return($ip_reverse);
}
J'ai aussi mis au point sur mon site avant-hier, un add-on du script
trace-ip.php ( qui est en license GPL je crois ), à usage personnel, qui
filtre les accès à mon site, d'après les expressions rationnelles
contenues dans les tables : OK_REVERSE et FORBIDDEN_REVERSE.
Si le reverse matche l'une des regexp contenues dans la première
table, l'accès est accepté, sinon si elle matche l'une des regexp de la
seconde table, l'accès est bloqué.
Sinon, le traitement classique de trace-ip.php prend le relai, en
fonction du nombre maxi de d'accès http/minute.
Je peux gérer le contenu de ces deux tables MySQL, ( insert ou delete
), à partir d'un script php.
Le seul bug, c'est quand le reverse n'existe pas ( la fonction rend
false ). A ce moment-là, que faire ?
Bien amicalement.
Jean François Ortolo