web-dev-qa-db-ja.com

Javascriptを使用したIPからロケーションへ

<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>

このコードでユーザーIPを取得できます...

このIPの場所を見つけたい。どうやって?

37
SOF User

受信したIPをhttp://www.geoplugin.net/json.gp?ip=<your ip here>&jsoncallback=<suitable javascript function in your source>などのオンラインジオロケーションサービスに送信し、jsoncallbackで指定した関数を実行するジオソース情報を含むソースを含めることができます。

別の方法として、HTML5の位置情報機能を調べることもできます。実際にデモを見ることができます here 。これの利点は、外部サーバーに要求する必要がないことですが、HTML5をサポートしていないブラウザーでは機能しない場合があります。

43
user193476

MaxMindデータベースで実行される無料のオープンソースコミュニティ実行ジオロケーションIPサービスは、こちらから入手できます。 https://ipstack.com/

https://api.ipstack.com/160.39.144.19

制限

1か月あたり10,000クエリ

26
Alex Czarto

http://freegeoip.net/ を使用する場合、クライアントの場所のIPアドレスを提供する必要はないことを指摘したいと思います。これらを試してください:

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

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

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

ただし、おそらくクロスオリジンポリシーのために、AJAX呼び出しで情報を取得できません。どうやらシステムへのパブリックアクセスを許可していないようです。

9
Chong Lip Phang

IPアドレスを場所にマップする [〜#〜] api [〜#〜] を使用すると非常に簡単です。スニペットを実行して、入力ボックスでIPの都市と国を取得します。

$('.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

上記のコードを達成できなかった場合に備えて、jqueryでそれを使用する簡単な方法を次に示します。

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

より良い方法は、「中間者」(ip)をスキップすることです

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

これにより、[〜#〜] ip [〜#〜]citycountryなどが得られます。

3
Symba

かなり安価なオプションは ipdata.co APIを使用することです。1日あたり最大1500リクエストまで無料です。

この回答では、「テスト」APIキーを使用していますが、これは非常に限定されており、数回の呼び出しをテストするためだけのものです。 Signup 独自の無料APIキーの場合、開発のために毎日最大1500件のリクエストを受け取ります。

$.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>

Fiddle at https://jsfiddle.net/ipdata/6wtf0q4g/922/

2
Jonathan

次のリンクのいずれかがこれを処理する必要があります。

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/

これらのリンクには、Javascriptを介してユーザーの位置を取得するためのチュートリアルがあります。ただし、外部データサービスへのAPIを介してそうします。非常にトラフィックの多いサイトがある場合は、自分でデータをホストする(またはプレミアムAPIサービスを取得する)ことをお勧めします。すべてを自分でホストするには、IP Geolocationでデータベースをホストし、ajaxを使用してユーザーの場所をJavascriptにフィードする必要があります。これが必要なアプローチである場合、以下のIP情報の無料データベースを取得できます。

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

この方法では、IPをロケーションに正確にトレースするために、データベースを定期的に更新する必要があることに注意してください。

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

このGoogleサービスを使用できます 無料のIPジオロケーションウェブサービス

update

リンクが壊れているので、コメントに@NickSweetingを含む他のリンクをここに配置します。

ip-api.com

json形式でデータを取得できます。

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

1
andres descalzo

ipinfodb を使用できます。apiキーを取得した後、このhttp://api.ipinfodb.com/v2/ip_query.php?key=" + apiKey + "&ip=" + ip + "&output=xmlのような特定のIPに対して場所を照会できます。その後、xml応答から場所を抽出できます

1
Rafay

IPアドレスと場所のマッピングを含むデータベースが必要です。または、多くのオンラインツールを使用してこれを実現できます。たとえば、 http://www.ipligence.com/geolocation

Googleは、キーワード「IPロケーション」の下に多くの結果を返します

0

TUQ GEO IP APIをお試しください

http://tuq.in/tools/geo

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

0
Vikrant Mahajan