IPアドレスを使用してクライアントの場所とネットワークに関する情報を見つけるための node.jsモジュール がいくつか見つかりました。
要件:
場所-国、都市、州、緯度、経度など.
ネットワーク-インターネットサービスプロバイダー、インターネット接続タイプ、インターネット速度など.
データ精度-最大の可能性。
注:サーバー側のソリューションを探しています。
上記のモジュールは maxmind data を使用します。そして、 maxmind data precision についても読みました。
上記のnode.jsモジュールを選択するのは少し混乱していますが、私の要件を満たす情報またはnode.jsに移植可能な他の言語プラグインを見つけるために利用できる、より良いnode.jsフレームワークがあることを知りたいです。
どんなアイデアでも素晴らしいでしょう。
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であり、最も正確な方法です。ドキュメントは非常に優れているため、使い始めても問題はありません。
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
ネットワーク情報については、解決策はありませんが、私も解決策を探しています。
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 で入手できます。