2013-05-21 21 views
38

私は、クライアントの位置とネットワークについての情報を見つけるために、IPアドレスを使ってnode.js modulesというカップルを見つけました。場所を見つけるための最善のnode.jsモジュール?

要件:

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

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

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

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

上記のモジュールはmaxmind dataを使用します。そして私はmaxmind data accuracyについても読んでいました。

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

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

+0

@josliberで利用できます。この質問は重要であり、意見には関係しません。それはIPから位置への変換のための最も効果的な待ち時間方法に関係する。 – Internial

+0

@Internial推奨事項を尋ねる質問はスタックオーバーフローに関する話題ではないので、私は質問を閉じました。このサイトのトピックに関する詳細はhttps://stackoverflow.com/help/on-topicで読むことができます。 – josliber

+0

IPLocate.ioは無料APIを提供しています:['https://www.iplocate.io/api/lookup/8.8.8.8'](https://www.iplocate.io/api/lookup/8.8.8.8)。免責事項:私はこのサービスを実行します。Node.jsを含むホームページやホームページ(www.iplocate.io)での文書や使用方法。 – ttarik

答えて

39

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

node.jsで使用できる2つのgeoip/-locationモジュールを見てみましたが、どちらもMaxMindが提供するデータセットを使用しています。 AFAIKでは、これらのデータベースを手動で最新の状態に保つ必要がありますが、これは明らかです。したがって、あなたは月に1回データベースを更新する小さな同期サービス/スクリプトを書くことを検討するかもしれません。 (MaxMindsの無料ソリューションに関する詳細は、hereをご覧ください)。

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

数ドルを使いたい場合は、MaxMinds Web Serviceを見ることもできます。これは単純なREST APIであり、最も正確な方法です。ドキュメントはかなり良いので、それを始めることは問題ではありません。

+2

最初に貴重な情報をありがとう、私はkuno/GeoIPを実装し、テストしました。これらの情報を提供していないインターネットサービスプロバイダ、インターネット接続のタイプbecozそれ以外の場合は無料のデータベースはありません[kuno/geoip](https: /github.com/kuno/GeoIP)は良いです。 – karthick

+0

@dom AFAIKって何を意味していますか? – Internial

+0

@Internial AFAIK - 私が知っている限りでLol – karthick

25

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から後にしているすべての情報を取得することができます

+2

OPが正確を求めているなら、Googleのマップライブラリのような外部サービスを使用することに同意します。 HTML5を使用すると、ユーザーが許可した場合にのみ場所が取得されます。 –

+0

貴重な情報をお寄せいただきありがとうございます+ 1 – karthick

+0

お客様のIPを取得する方法はありますか?私に言いなさい、あなたがしなければ、私は私の答えを編集します。 – brnrd

10

$ 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

+0

このモジュールを作成しました。多分あなたの答えに組み込むことができます:https://github.com/IonicaBizau/node-ipinfo :-) –

+1

ipinfo.ioはうまく動作しますあなたが支払う必要があるhttpsを超えてそれを使用したい場合は注意してください。 – kpg

+1

ipinfo.io/json/ は完全に動作します – mythicalcoder

関連する問題