web-dev-qa-db-fra.com

IP à l'emplacement à l'aide de Javascript

<script type="application/javascript">
    function getip(json){
      alert(json.ip); // alerts the ip address
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

Je peux obtenir l'IP de l'utilisateur par ce code ...

Je veux trouver l'emplacement de cette IP. Comment puis-je?

37
SOF User

Vous pouvez soumettre l'adresse IP que vous recevez à un service de géolocalisation en ligne, tel que http://www.geoplugin.net/json.gp?ip=<your ip here>&jsoncallback=<suitable javascript function in your source>, puis en incluant la source renvoyée qui exécutera la fonction que vous spécifiez dans jsoncallback avec les informations de géolocalisation.

Alternativement, vous voudrez peut-être examiner les fonctionnalités de géolocalisation de HTML5 - vous pouvez en voir une démo en action ici . L'avantage de ceci est que vous n'avez pas besoin de faire de requêtes à des serveurs étrangers, mais cela peut ne pas fonctionner sur les navigateurs qui ne prennent pas en charge HTML5.

43
user193476

Un service gratuit d'ip de géolocalisation géré par la communauté open source qui s'exécute sur la base de données MaxMind est disponible ici: https://ipstack.com/

Exemple

https://api.ipstack.com/160.39.144.19

Limitation

10000 requêtes par mois

26
Alex Czarto

Je tiens à souligner que si vous utilisez http://freegeoip.net/ , vous n'avez pas besoin de lui fournir l'adresse IP de l'emplacement du client. Essayez-les:

1) http://freegeoip.net/xml/

2) http://freegeoip.net/json/

3) http://freegeoip.net/csv/

Cependant, je ne suis pas en mesure de récupérer les informations avec les appels AJAX, probablement en raison d'une politique d'origine croisée. Apparemment, ils n'ont pas autorisé l'accès public à leur système.

9
Chong Lip Phang

C'est assez facile avec un API qui mappe l'adresse IP à l'emplacement. Exécutez l'extrait de code pour obtenir la ville et le pays pour l'IP dans la zone de saisie.

$('.send').on('click', function(){

  $.getJSON('https://ipapi.co/'+$('.ip').val()+'/json', function(data){
      $('.city').text(data.city);
      $('.country').text(data.country);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input class="ip" value="8.8.8.8">
<button class="send">Go</button>
<br><br>
<span class="city"></span>, 
<span class="country"></span>
7
Ken

Juste au cas où vous n'auriez pas pu accomplir le code ci-dessus, voici un moyen simple de l'utiliser avec jquery:

$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
    function (data) {
        for (var i in data) {
            document.write('data["i"] = ' + i + '<br/>');
        }
    }
);
6
talsibony

Une meilleure façon est de sauter "l'homme du milieu" (ip)

jQuery.get("http://ipinfo.io", function(response) {
    console.log(response.city);
}, "jsonp");

Cela vous donne le IP , le ville, le pays, etc.

3
Symba

Une option plutôt peu coûteuse serait d'utiliser l'API ipdata.co , c'est gratuit jusqu'à 1500 requêtes par jour.

Cette réponse utilise une clé API "test" très limitée et destinée uniquement à tester quelques appels. Inscription pour votre propre clé API gratuite et obtenez jusqu'à 1500 demandes par jour pour le développement.

$.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
    $("#response").html(JSON.stringify(response, null, 4));
}, "jsonp");
<h1><a href="https://ipdata.co">ipdata.co</a> - IP geolocation API</h1>

<div id="ip"></div>
<div id="city"></div>
<pre id="response"></pre>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Voir le Fiddle à https://jsfiddle.net/ipdata/6wtf0q4g/922/

2
Jonathan

L'un des liens suivants doit prendre en charge ceci:

http://ipinfodb.com/ip_location_api_json.php

http://www.adam-mcfarland.net/2009/11/19/simple-ip-geolocation-using-javascript-and-the-google-ajax-search-api/

Ces liens contiennent des didacticiels pour obtenir l'emplacement d'un utilisateur via Javascript. Cependant, ils le font via une API vers un service de données externe. Si vous avez un site à très fort trafic, vous souhaiterez peut-être héberger les données vous-même (ou obtenir un service d'api premium). Pour héberger tout vous-même, vous devrez héberger une base de données avec géolocalisation IP et utiliser ajax pour alimenter l'emplacement des utilisateurs en Javascript. Si c'est l'approche que vous souhaitez adopter, vous pouvez obtenir une base de données gratuite d'informations IP ci-dessous:

http://www.ipinfodb.com/ip_database.php

Veuillez noter que cette méthode implique d'avoir à mettre à jour périodiquement la base de données pour rester précis dans le traçage des ips aux emplacements.

2
user396404
    $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
  console.log(JSON.stringify(data, null, 2));
});
1
Sean Keane

Vous pouvez utiliser ce service google service web de géolocalisation IP gratuit

mise à jour

le lien est cassé, je mets ici un autre lien qui inclut @NickSweeting dans les commentaires:

ip-api.com

et vous pouvez obtenir les données au format json:

http://ip-api.com/docs/api:json

1
andres descalzo

vous pouvez utiliser ipinfodb après avoir obtenu votre clé api, vous pouvez rechercher un emplacement par rapport à une adresse IP spécifique comme celle-ci http://api.ipinfodb.com/v2/ip_query.php?key=" + apiKey + "&ip=" + ip + "&output=xml vous pouvez ensuite extraire l'emplacement de la réponse xml

1
Rafay

Vous avez besoin d'une base de données contenant une adresse IP et un mappage d'emplacement. Ou vous pouvez utiliser de nombreux outils en ligne pour y parvenir, par exemple: http://www.ipligence.com/geolocation

Google renvoie de nombreux résultats sous des mots clés: "Emplacement IP"

0
Mārtiņš Briedis

Essayez l'API IP TUQ GEO c'est gratuit et vraiment soigné et doux avec le support jsonp

http://tuq.in/tools/geo

http://tuq.in/tools/geo+stats

0
Vikrant Mahajan