2013-05-21 23 views
38

Avevo trovato un paio di node.js modules per trovare le informazioni sulla posizione del client e sulla rete utilizzando l'indirizzo IP.Il miglior modulo node.js per trovare la posizione?

Requisiti:

  1. Località - Paese, città, stato, latitudine, longitudine, ecc

  2. Rete - Internet Service Provider, tipo di connessione a Internet e la velocità di internet ecc

  3. Precisione dei dati: massima possibilità.

Nota: ricerca di una soluzione lato server.

I moduli sopra indicati utilizzano maxmind data. E avevo letto anche sullo maxmind data accuracy.

Sono poco confuso per scegliere i suddetti moduli node.js e mi piace sapere che esistono migliori framework node.js disponibili per trovare le informazioni che soddisfano i miei requisiti o qualsiasi altro plug-in di lingua che può essere trasferito a node.js .

Qualsiasi idea sarà valida.

+0

@josliber questa domanda è importante e non riguarda l'opinione. riguarda il metodo di latenza più efficace per la conversione da ip a location. – Internial

+0

@Internial Le domande che richiedono consigli sono fuori tema sullo stack overflow, motivo per cui ho chiuso la domanda. Puoi leggere ulteriori informazioni su ciò che è in argomento su questo sito all'indirizzo https://stackoverflow.com/help/on-topic. – josliber

+0

IPLocate.io fornisce un'API gratuita: ['https://www.iplocate.io/api/lookup/8.8.8.8'](https://www.iplocate.io/api/lookup/8.8.8.8). Documenti e utilizzo, incluso da Node.js, nella home page: [www.iplocate.io] (https://www.iplocate.io/) - Disclaimer: eseguo questo servizio. – ttarik

risposta

39

L'utilizzo della geolocalizzazione basata su IP è possibile, ma non molto preciso. Quindi ti suggerisco di pensare ad un approccio ibrido, come cercare di ottenere la posizione degli utenti tramite l'API di geolocalizzazione HTML5 all'interno del browser e di eseguire il fallback sul lato server, se necessario.

Ho dato un'occhiata ai due moduli geoip/-locazione più utilizzati disponibili per node.js e utilizzano entrambi i set di dati forniti da MaxMind. AFAIK è necessario mantenere questi database up-2-date manualmente, che è un chiaro downer. Quindi potresti considerare di scrivere un piccolo servizio/script di sincronizzazione, che aggiorna il database una volta al mese. (Ulteriori informazioni sulla soluzione gratuita MaxMinds possono essere trovate here).

kuno/GeoIP è un GeoIP vincolante, in modo da esso è la cosa principale che sta utilizzando la libreria libGeoIP C, che va bene, ma forse non più portabile i puri JavaScript di implementazione bluesmoon/node-geoip offerte. Entrambi sono ok e tocca a te quale libreria ti piace di più. In termini di prestazioni devi fare alcuni benchmakrs (se questo argomento ti interessa) ... Non esiste una risposta generale alla domanda, quale tipo di modulo (C-binding/nativo) sarà più veloce.

Se sei disposto a spendere qualche soldo potresti anche cercare MaxMinds Web Service, che è una semplice API REST e sarà il modo più preciso per andare. La documentazione è abbastanza buona, quindi iniziare non sarà un problema.

+2

innanzitutto grazie per le preziose informazioni, ho implementato e testato kuno/GeoIP, non fornendo queste informazioni Provider di servizi Internet, tipo di connessione Internet perché non esiste alcun database gratuito per questo altrimenti [kuno/geoip] (https://github.com/kuno/GeoIP) è buono. – karthick

+0

@dom cosa intendi con AFAIK? – Internial

+0

@Internial AFAIK - Per quanto ne so lol – karthick

25

Se si ottiene l'IP, è sempre possibile chiamare un servizio esterno per ottenere le informazioni sulla posizione come freegeoip.net e utilizzare il modulo di richiesta.

(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 

Per le informazioni di rete, non ho una soluzione, ma sto cercando uno di troppo.

+2

Sono d'accordo, se OP è alla ricerca di precisione, vorrei utilizzare un servizio esterno come la libreria di mappe di Google. Usando HTML5 otterrà solo la posizione se l'utente lo consente. –

+0

Grazie per la preziosa fonte. + 1 – karthick

+0

Sai come ottenere l'IP del Cliente? Dimmi, se non lo fai, modificherò la mia risposta. – brnrd

10

è possibile ottenere tutte le informazioni che cercate dal mio API a http://ipinfo.io 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" 
} 

Esso supporta JSONP e CORS, in modo da poter utilizzare entrambi i server o lato client. Maggiori dettagli sono disponibili su http://ipinfo.io/developers

+0

Ho creato questo modulo, forse puoi integrarlo nella tua risposta: https://github.com/IonicaBizau/node-ipinfo :-) –

+1

ipinfo.io funziona bene ma attenzione, se vuoi usarlo su https devi pagare. – kpg

+1

ipinfo.io/json/ funziona perfettamente – mythicalcoder

Problemi correlati