Discussion:
Script pour analyser pays d'origine du visiteur
(trop ancien pour répondre)
titou44
2013-04-14 19:34:57 UTC
Permalink
bonjour

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

titou44 chez libresurf.com
Fred
2013-04-15 11:30:43 UTC
Permalink
Post by titou44
bonjour
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
titou44 chez libresurf.com
Salut,

Regarde si ton hébergeur ne fournis pas les infos
du genre $_ENV['GEOIP_COUNTRY_NAME'] ou bien
l’extension goip pour appeler geoip_country_name_by_name.


Fred
Denis Beauregard
2013-04-15 17:22:55 UTC
Permalink
Post by titou44
bonjour
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.

J'ai ceci dans mon code :

$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
Jean Francois Ortolo
2013-04-15 17:49:44 UTC
Permalink
Post by Denis Beauregard
Post by titou44
bonjour
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
Jean Francois Ortolo
2013-04-16 10:01:55 UTC
Permalink
Post by Denis Beauregard
Post by titou44
bonjour
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

Et quand $_SERVER['HTTP_X_FORWARDED_FOR'] existe, elle donne une ou
des adresses ip, séparées par des virgules, dont la première est
l'adresse ip réelle cliente ( interne, privée ou publique ).

Quand cette ip interne est détectée et est privée, il faut prendre
dans l'ordre : $_SERVER['HTTP_CLIENT_IP'] ou $_SERVER['REMOTE_ADDR'] ,
qui est l'adresse théorique du proxy ( ip externe ).

Si l'ip interne détectée ci-dessus est publique, il faudrait tenir
compte de cette ip ( en amont du proxy ), sous réserve évidement, qu'il
n'y ait pas plusieurs proxies simultanés.

Dans le cas où $_SERVER['HTTP_X_FORWARDED_FOR'] n'existe pas, il faut
évidemment prendre à la suite : $_SERVER['HTTP_CLIENT_IP'] , puis
$SERVER['REMOTE_ADDR'] si la précédente n'existe pas.

Mis en place par mes soins, sur le script trace_ip.php de mon site.

J'ai moi-même constaté, que l'ip interne pouvait être publique ( =
non privée ), ceci en particulier dans le cas d'un proxy imposé par le
FAI ( par ex. des téléphones mobiles ). Ceci, sans que cette ip interne,
soit celle d'un serveur spammeur.

Mes deux cents.

Bien amicalement.

Jean François Ortolo

Loading...