Node.js | 開発者向けライブラリ | IP Geolocation API | WhoisXML API

Node.jsのIP Geolocationクライアントライブラリ Node.jsのIP Geolocationクライアントライブラリ

Node.jsによるIPジオロケーション検索

ここでは、Node.jsを使用してIPアドレスの物理的位置(IPジオロケーション)を見つける最良の方法を説明します。

残念ながら、IPアドレスの物理的な位置を特定するための確固としたルールはありません。その代わりに、IPジオロケーションプロバイダーと呼ばれる企業が、多くの異なるデータを組み合わせて、IPロケーションデータの正確なデータベースを構築しています。

IPジオロケーションデータは通常、以下の情報で構成されます。

  • ドメイン名のWHOISデータ(データプロバイダーが集約するものです)
  • 地域インターネットレジストリ。大規模なIPアドレスブロックを世界中のさまざまなインターネットサービスプロバイダー(ISP)に配布します。
  • 大手ISPからのBGPフィード
  • レイテンシー情報(特定の物理的な場所からのパケットが宛先 のIPアドレスに到達するまでにかかる時間)。

上記の情報を全て自分で取得するのは非常に複雑で費用もかかります。しかし、この作業をすでに済ませ、顧客が容易に利用できる状態にしたIPジオロケーションデータを提供しているサービスプロバイダーがいくつかあります。

ここでは、当社で新たにリリースしたsimple-geoip Node.jsライブラリを使用してIP Geolocation Databaseを検索し、IPアドレスの物理的な場所を応答させる方法を説明します。

IP Geolocation API Lookupのアカウントを作成する

simple-geoipのライブラリを使用するには、まず無料のIP Geolocation APIアカウントを作成する必要があります:https://ip-geolocation.whoisxmlapi.com/signup

IP Geolocation APIは、IPジオロケーション業界最大規模・最低コストを誇るAPIの一つです。毎月最大1,000クエリまで無料で実行できます。または、100,000クエリに対して月額27 ドルの定額料金プランもご用意しています。追加料金プランはこちらでご利用いただけます。

IP Geolocation APIアカウントを作成してログインしたら、 アカウントの商品ページを表示してAPIキーをコピーする必要があります。これは後でIP Geolocation検索をする際に必要ごなります。

simple-geoipパッケージをインストールする

アカウントが設定されましたので、次にNodeパッケージをインストールします。コマンドラインから以下のコマンドを実行します。

            
$ npm install simple-geoip
            
            

これにより、NPMからsimple-geoipパッケージの最新リリースがダウンロードされ、インストールされます。

simple-geoipを使用してIP Geolocation Lookupを実行する

アカウントとsimple-geoipパッケージの両方がインストールされましたので、IPアドレスの物理的な位置の検索をするために実行できるコードを見てみましょう。

以下は、よく使われているIPアドレス (GoogleのコアDNS サーバーの一つ「8.8.8.8」)の物理的位置を検索する「geoip.js」というスクリプトです。

            
const IpGeolocation = require("simple-geoip");
 


let ipGeolocationLookup  = new IpGeolocation("your-api-key");

ipGeolocationLookup.lookup("8.8.8.8", (err, data) => {
   if (err) throw err;

   console.log(data);

});
            
            

以下の3つの手順でライブラリを使えるようになります。

  • ライブラリをインポートします。
  • IP Geolocation APIサービスのために作成したAPIキーを指定して、「IpGeolocation」オブジェクトを作成します。
  • 確認したいIPアドレスとコールバック関数を渡して、 「lookup」を実行します。このコールバック関数は、IP Geolocation検索が完了したときに実行されます。

次のようなデータがコールバックで返されます。

            
{
   "ip": "8.8.8.8",
   "location": {
      "country": "US",
      "region": "California",
      "city": "Mountain View",
      "lat": 37.40599,
      "lng": -122.078514,
      "postalCode": "94043",
      "timezone": "-08:00"
   }
}
            
            

このJSON データは、 「8.8.8.8」というIPアドレスの物理的位置に関する必要な全ての情報を示しています。

舞台裏では、IP Geolocation APIサービスが全てのIP Geolocationデータベース検索とデータ集約(プロバイダーからデータを取得し、1日あたり数百万件の更新を処理)を行っています。

simple-geoipでのIP Geolocation Lookupの動作をカスタマイズする

simple-geoip Node.jsライブラリの優れた点のひとつは、失敗したリクエストを連続して最大 5回まで自動的に再試行できることです。

例えば、IP Geolocation検索リクエストを実行した時にインターネット接続が途中で切断されまとしす。そのような時、simple-geoipルックアップは単にエラーにするのではなく、リクエストを再試行します。

simple-geoipが失敗したリクエストを再試行しないようにしたい場合は、次のように「IpGeolocation」ルックアップインスタンスを作成する際にオプションの設定データを渡すことができます。

            
const IpGeolocation = require("simple-geoip");



let ipGeolocationLookup  = new IpGeolocation("your-api-key", { retries: 2 });

ipGeolocationLookup.lookup("8.8.8.8", (err, data) => {

   if (err) throw err;

   console.log(data);

});
            
            

「retries」は、 「0」から必要なだけの任意の数まで設定できます。ただし、再試行回数が増えるほど、失敗した場合のリクエストの速度が遅くなる可能性があることにご注意ください。

再試行はネットワークの部分的な停止を回避するのに便利ですが、 重大な停止が発生している場合は、失敗したリクエストを再試行するために 多くの時間を浪費することなく、早い段階でエラーにした方が良いでしょう。ほとんどの場合、デフォルトのリトライ動作(5回リトライ)が最適です。

新しいIP Geolocationデータを使用する

simple-geoipライブラリを使用して IPアドレスの物理的位置を簡単に見つけられることがわかりました。次はIP Geolocation検索を貴社の商品やサービスに実装しましょう!

以下は、IP Geolocationデータの一般的なユースケースです。

  • ユーザーがウェブサイトにアクセスしたときにそのユーザーの国を検出し、場所(の言語、広告、デザイン、通貨など)に基づいてカスタマイズされたエクスペリエンスを提供します。
  • 特定の場所からウェブサイトにアクセスするユーザーをブロックします。例えば、動画ストリーミングプロバイダーで、特定の国でのみ動画をストリーミングする権利を持っている場合、IP Geolocation検索によってそのデータを取得し、合法的に運営できる地域の顧客にのみサービスを提供することができます。
  • 不正行為のリスクを軽減します。特定の場所からの大量の不正行為に気づいた場合、その場所からの訪問者を一時的にブロックすることが、不正行為やその他の問題をすみやかに軽減する方法となります。

サイト訪問者のIPアドレスを分析することで、ウェブ製品やサービスを大幅に強化できます。

simple-geoipを使用する

まとめ:IP Geolocation検索は、簡単に低コストで実行できます。当社の新しいsimple-geoip Node.js ライブラリとIP Geolocation APIサービスを使えば、大規模なウェブプロダクトでも、わずかな費用で簡単に構築・管理できます。

IP Geolocation検索を実行する際は、IPアドレスの位置情報を非常に簡単に取得できるsimple-geoipライブラリをぜひチェックしてください。

ご質問がございましたら、こちらにメールでお問い合わせください。