Trouver une ip et l'afficher même derrière un proxy

Soyez le premier à donner votre avis sur cette source.

Vue 12 997 fois - Téléchargée 476 fois

Description

Trouver une ip et l'afficher même derrière un proxy, une base pour faire un sniffer pour des stats ou avec une base ou surveiller un repertoire , une erreur 404 à renvoyer par mail ... idée récupérer l'ip est l'écrire dans un fichier txt ou dans une table mysql. Dans le zip un exemple pour indiquer une erreur 404 avec l'ip envoyer par mail et l'adresse de la page demandée !

Source / Exemple :


<?php

function get_real_ip()
{
     $ip = false;
     if(!empty($_SERVER['HTTP_CLIENT_IP']))
     {
          $ip = $_SERVER['HTTP_CLIENT_IP'];
     }
     if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
     {
          $ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
          if($ip)
          {
               array_unshift($ips, $ip);
               $ip = false;
          }
          for($i = 0; $i < count($ips); $i++)
          {
               if(!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i]))
               {
                    if(version_compare(phpversion(), "5.0.0", ">="))
                    {
                         if(ip2long($ips[$i]) != false)
                         {
                              $ip = $ips[$i];
                              break;
                         }
                    }
                    else
                    {
                         if(ip2long($ips[$i]) != - 1)
                         {
                              $ip = $ips[$i];
                              break;
                         }
                    }
               }
          }
     }
     return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}  

get_real_ip();

//Pour faire un sniffer de visite ...
//fonction mail activée sur le serveur
//exemple si on rajoute :
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$monmail="TONMAIL@fTONFOURNISSEUR.xx"; //mettre votre email , à personnaliser
$sujet="Visite de la page ".$url;
$message="Un internaute a visité la page ".$url." son IP est ".get_real_ip();
$from = "someonelse@example.com";//email du site
$headers = "From: $from";
//petit test
if(!@mail($monmail,$sujet,$message,$headers)){exit('<h3 align="center">fonction mail inactive sur le serveur ou prob script ... !</h3>');}

?>

Conclusion :


//Pour faire un sniffer de visite ...
//fonction mail activée sur le serveur
//exemple si on rajoute :
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$monmail="TONMAIL@fTONFOURNISSEUR.xx"; //mettre votre email , à personnaliser
$sujet="Visite de la page ".$url;
$message="Un internaute a visité la page ".$url." son IP est ".get_real_ip();
$from = "someonelse@example.com";//email du site
$headers = "From: $from";
//petit test

if(!@mail($monmail,$sujet,$message,$headers)){exit('<h3 align="center">fonction mail inactive sur le serveur ou prob script ... !</h3>');}

CE CODE DOIT ÊTRE MIS EN DEBUT DE PAGE
testé sur free et ovh ok ...

autre exemple bloquer un indésirable ...

$ip=get_real_ip();
$blocked = "xxx.xxx.xxx.xxx"; // votre choix
if (ereg($blocked,$ip))
{
echo "Vous avez été bloqué !";
exit();
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

@wolfcyber95 : Visiblement il n'a toujours pas pris en compte la grosse erreur sur son expreg que j'ai relevé dans mon commentaire, j'ai du mal à croire qu'une note l'aiderait beaucoup. Enfin c'est quand même vrai qu'il est bien mieux de noter, ce que je fais donc maintenant.

Si vous vous demandez pourquoi j'ai mis cette note là, c'est parce que ce script est encore moins fiable que la simple utilisation de $_SERVER['HTTP_CLIENT_IP'] (cf mon injection d'un fausse ip dans mon post précédent), ce qui le rend donc totalement inutile.
Messages postés
48
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
16 août 2010

Bonjour,

Bon a part dire que cod57 ne respecte pas les règles, personne note et juge sa source, ce qui pourrait le faire avancer dans le développement.

Donc moi je vais le faire :

J'ai jamais encore trouvé une source qui affiche l'IP du visiteur derrière un proxy (Anonyme), bien sûr ta source n'échappe pas à la règle, ca affiche l'IP du proxy et pas celle du visiteur.

Pour info j'ai essayé avec différent proxy web sur le site free-proxy.fr, et aussi avec un proxy tunneling avec le logiciel "Your Freedom" et dans les 2 cas ca n'affiche pas mon IP.

Voila en gros... ne persiste pas trop a cherche un code qui retracerais quelqu'un qui cherche à se cacher derrière un proxy public anonyme car c'est pas peine perdu.

Après la seul vrai méthode serait de demandé au propriétaire du proxy qui était connecté à tel heure, tel jour, sur tel site...etc pour qu'il te donne l'IP. Mais bon si le proxy est au fin fond de la sibérie, et en plus en cascade, tu retrouvera jamais rien... bref pas de solution miracle !

bon code a tous !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Juste pour faire remarquer une grosse erreur dans le code que pas grand monde n'a visiblement pris le temps de lire :

"if(!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i]))"
Condition fausse, si les adresses locales du type 10.0.0.0/8 et 192.168.0.0/16 sont bien prises en compte, ce n'est pas le cas des adresses 172.16.0.0/12. En effet, cette dernière notation CIDR désignes les adresses de 172.16.0.0 à 172.31.255.255 (exclus).

Sinon $_SERVER['HTTP_X_FORWARDED_FOR'] n'est pas fiable du tout, n'importe qui peux fausser sa valeur très simplement :

tycho@uraniborg-> cat test.php
<?php

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
echo 'HTTP_X_FORWARDED_FOR=', $_SERVER['HTTP_X_FORWARDED_FOR'], "\n";
else
echo 'no HTTP_X_FORWARDED_FOR found', "\n";

?>
tycho@uraniborg-> telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /tycho/test.php HTTP/1.0
X-Forwarded-For : 46.123.78.95

HTTP/1.1 200 OK
Date: Thu, 11 Nov 2010 10:44:11 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-2
Vary: Accept-Encoding
Content-Length: 34
Connection: close
Content-Type: text/html

HTTP_X_FORWARDED_FOR=46.123.78.95
Connection closed by foreign host.
Messages postés
3815
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
4 août 2020
35
Bon on va mettre un terme tout de suite à ces discutions !!!

1°) ce n'est pas assez consistent pour en faire un code ... un Snippet tout au plus.

2°) si ce code existe déjà et n'apporte rien de neuf alors il n'a effectivement pas sa place ici (cf. Règlement de CS)

3°) le dépôt de sources est soumis à certaines règles que vous avez tous acceptées à l'inscription sur CS et au moment de déposer un code. Alors c'est pas la peine de venir râler maintenant qu'un membre vient vous rappeler ces règles.

Le but de CS étant de recenser les différentes "bonnes manières" de procéder pour un résultat donné et si on vous écoute il faudrait aussi garder, recenser tout ce qu'il ne faut pas faire (mal codés), tous les doublons sous prétexte qu'un membre a fait l'effort de le poster ... alors il faut le garder !!!.
Si on fait ça, CS deviendra très vite la "poubelle" des codes et N°1 dans ce qu'il ne faut surtout pas faire.
Franchement je crois pas que c'est aider un débutant en lui fournissant 50 codes dont 45 sont des exemples de ce qu'il ne faut surtout pas faire ... c'est juste une perte de temps pour le débutant (voir pire ... il prend de très mauvaises habitudes) et au final c'est de l'espace occupé inutilement sur CS.

pour ceux qui ont encore des doutes ... voir le règlement de CodeS-SourceS
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Ton message me laisse sans voix. Je ne sais quoi répondre à part mon précédent message. Tu ne comprends pas ce que j'écris. Pourtant je fais des efforts pour que ce soit un français compréhensible.
Tu ne me connais pas, hein, en fait. Dans la vraie vie, j'aurais probablement pas réagit pareil, parce que tu n'aurais probablement pas dit les inepties que tu as écrites.

Tu me navres également.
Afficher les 25 commentaires

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.