Obtenir l'adresse IP client uniquement en JavaScript

Pour obtenir l'adresse IP du client, il est nécessaire de faire appel à des services externes.

Le langage JavaScript est un langage conçu pour fonctionner dans le navigateur et apporter du dynamisme à une page Web. Il n'a donc pas accès aux données du serveur comme l'adresse IP du client. Pour obtenir l'adresse IP du client, il est nécessaire de faire appel à des services externes.

Pour faire appel à ces services, il faut effectuer un appel AJAX. Pour cela, il faut utiliser soit l'objet XMLHttpRequest, soit l'objet ActiveXObject selon le navigateur (les versions d'Internet Explorer antérieures à la version 7 utilisent la classe ActiveXObject). Un test de l'objet Window.XMLHttpRequest permet de savoir si l'objet est supporté par le navigateur. Les deux objets s'utilisent de la même façon. La méthode open() permet d'envoyer une requête au service externe. Le premier argument est la méthode de transfert utilisée pour le type de requête. Pour utiliser les services d'adresse IP, il faut indiquer la méthode GET. Le deuxième argument est l'URL du service. Le troisième argument indique si la requête est asynchrone ou non. L'adresse IP doit être récupérée avant de continuer le code donc il faut indiquer la valeur false. Une fois la requête préparée, faites appel à la méthode send() pour l'envoyer. La réponse est ensuite stockée dans l'attribut responseText. La plupart des services utilisent le JSON pour donner les informations. Il faut donc appeler la méthode JSON.Parse() pour parser le contenu de la réponse et récupérer l'adresse IP.

function monAdresseIP()
{
 var ip = false;
 if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
 else xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
 xmlhttp.open(GET,http://adresseduserviceip.com,false);
 xmlhttp.send();
 var reponse = JSON.Parse(xmlhttp.responseText);
 //On suppose que l'adresse IP est stockée avec la clé ip. Regardez les exemples fournis par les services pour savoir quelle clé correspond à l'adresse IP
 if (reponse[ip])
 ip = reponse[ip]
 return ip;
}

Il existe différents services qui peuvent retourner l'adresse IP que vous utilisez ou bien vous donnez des informations géographiques à propos de l'adresse IP.

  • https://db-ip.com/
  • http://geobytes.com/
  • http://freegeoip.net/
  • http://www.geoplugin.com/
  • http://ip-api.com/

Tous ces services ont des quotas dans leur utilisation. Pensez à vérifier que votre utilisation des services ne dépasse pas ces quotas.

JavaScript