web-dev-qa-db-ja.com

場所を見つけるのに最適なnode.jsモジュール?

IPアドレスを使用してクライアントの場所とネットワークに関する情報を見つけるための node.jsモジュール がいくつか見つかりました。

要件:

  1. 場所-国、都市、州、緯度、経度など.

  2. ネットワーク-インターネットサービスプロバイダー、インターネット接続タイプ、インターネット速度など.

  3. データ精度-最大の可能性。

注:サーバー側のソリューションを探しています。

上記のモジュールは maxmind data を使用します。そして、 maxmind data precision についても読みました。

上記のnode.jsモジュールを選択するのは少し混乱していますが、私の要件を満たす情報またはnode.jsに移植可能な他の言語プラグインを見つけるために利用できる、より良いnode.jsフレームワークがあることを知りたいです。

どんなアイデアでも素晴らしいでしょう。

47
karthick

IPベースのジオロケーションを使用することは可能ですが、あまり正確ではありません。そのため、ブラウザ内のHTML5ジオロケーションAPIを介してユーザーの位置を取得し、必要に応じてサーバーサイドにフォールバックするなど、ハイブリッドアプローチを検討することをお勧めします。

Node.jsで使用可能な最も使用されている2つのgeoip/-locationモジュールを調べましたが、どちらもMaxMindが提供するデータセットを使用しています。私の知る限り、これらのデータベースを手動で更新する必要があります。したがって、月に1回データベースを更新する小さな同期サービス/スクリプトを作成することを検討してください。 (MaxMindsの無料ソリューションの詳細については、 こちら を参照してください)。

kuno/GeoIP はGeoIPバインディングであるため、コアではlibGeoIP Cライブラリを使用しています。これは問題ありませんが、純粋なJavaScript実装ほど移植性が高くない可能性があります bluesmoon/node-geoip オファー。どちらも大丈夫で、どちらのライブラリが好きかはあなた次第です。パフォーマンスの観点から、いくつかのベンチマークを行う必要があります(このトピックが重要な場合)…質問に対する一般的な答えはありません。どのタイプのモジュール(Cバインディング/ネイティブ)が高速になります。

数ドルを費やしたい場合は、 MaxMinds Web Service を調べることもできます。これは単純なREST APIであり、最も正確な方法です。ドキュメントは非常に優れているため、使い始めても問題はありません。

46
dom

IPを取得する場合は、外部サービスをいつでも呼び出して、 freegeoip.net などの位置情報を取得し、リクエストモジュールを使用できます。

(ip, location) ->
  url = 'http://freegeoip.net/json/' + ip
  request.get url, (error, response, body) ->
    if !error && response.statusCode == 200
      data = JSON.parse body
      location data

ネットワーク情報については、解決策はありませんが、私も解決策を探しています。

29
brnrd

http://ipinfo.io APIにある私のAPIから、必要な情報をすべて取得できます。

$ curl ipinfo.io
{
  "ip": "67.188.232.131",
  "hostname": "c-67-188-232-131.hsd1.ca.comcast.net",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4192,-122.0574",
  "org": "AS7922 Comcast Cable Communications, Inc.",
  "postal": "94043"
}

JSONPとCORSをサポートしているため、サーバー側またはクライアント側のどちらでも使用できます。詳細は http://ipinfo.io/developers で入手できます。

11
Ben Dowling