Come fare per: individuare la localizzazione geografica di un IP

L’indirizzo Internet Protocol, o più semplicemente IP, è un numero che viene associato ad ogni computer non appena questo si collega ad una rete.

Col crescente aumento dei computer che si connettono alla grande rete Internet, è nata anche l’esigenza di organizzare al meglio i vari indirizzi IP. Per questo motivo le autorità di gestione degli indirizzi hanno organizzato, secondo l’appartenenza geografica del ISP, le varie classi di indirizzi.

Una classe di indirizzi è per esempio la conosciuta 127.xxx.xxx.xxx: a questa classe fanno riferimento tutti gli indirizzi locali. Un’altra potrebbe essere la 192.168.xxx.xxx: a questa classe fanno riferimento tutti gli indirizzi di una intranet.

Col tempo queste suddivisioni sono diventate sempre più capillari, tanto che oggi da un indirizzo IP è possibile risalire alla provincia in cui è situato il computer a cui è stato assegnato.

Questo non è sempre verò nel caso di connettività un pò complesse come quelle di Fastweb. Nel caso di questi ISP, infatti, molte volte si accede realmente alla rete dopo aver attraversato la loro intranet. Per assurdo un utente che si connette da Bari potrebbe uscire fuori dalla rete intranet dell’ISP a Roma o a Napoli.

Creiamo uno script PHP in grado di effettuare quello che in gergo è chiamato IP Lookup.

Sicuramente la maggioranza di noi non avrà a disposizione un ISP tutto suo, quindi per prima cosa dobbiamo individuare in rete un service che ci permette, a fronte di una richiesta specifica, di effettuare questa operazione.

Sono tanti quelli disponibili, io utilizzo Hostip.info, che oltre a fare l’IP Lookup, fa anche il geo-targeting dell’IP con tanto di coordinate geografiche.

Hostip offre la possibilità di utilizzare delle API interrogabili facilmente tramite protocollo HTTP GET.

Per conoscere il paese di appartenenza di un IP:
http://api.hostip.info/country.php?ip=[IP]

Per conoscere maggiori dettagli sulla localizzazione dell’IP (in formato testuale):
http://api.hostip.info/get_html.php?ip=[IP]

Per conoscere anche informazioni sulla geo localizzazione (in formato testuale):
http://api.hostip.info/get_html.php?position=true&ip=[IP]

Per ricevere le informazioni complete in formato XML:
http://api.hostip.info/?ip=[IP]

Per avere la bandiera del paese di appartenenza di un IP:
http://api.hostip.info/flag.php?ip=[IP]

Il metodo più semplice per effettuare richieste HTTP in PHP è utilizzando il bouquet di funzioni Client URL.

Una richiesta HTTP GET tipica avrà questa forma:

Volendo creare una funzione per eseguire il lookup di un dato IP, potremmo fare qualcosa di simile al seguente:

Con questa funziona non dobbiamo fare altro che richiamarla indicando un IP e la tipologia di informazioni che ci interessa per implementare un servizio di IP Lookup.

che dovrebbe rispondere qualcosa del genere:

[code]Country: UNITED STATES (US)
City: Redmond, WA
Latitude: 47.6742
Longitude: -122.115[/code]

Non tutti gli indirizzi IP saranno geo referenziati e/o disporranno di tutte le informazioni sulla localizzazione: non è colpa mia! :D

  1. Luca
    11 novembre 2007 alle 21:14

    hostip.info direi che non e’ per nulla attendibile, io risulto residente a Milano invece sono a Venezia…stessa cosa provando con altri IP noti…

  2. 12 novembre 2007 alle 01:38

    Luca, come specifico in questo stesso articolo, molto spesso alcuni ISP hanno metodi differenti di erogazione dei servizi di connessione.

    Ad essere sincero, fino ad ora gli IP su cui ho dovuto fare il lookup mi sono sempre stati georeferenziati in maniera corretta.

    Prova qualche alternativa e, magari, faccelo sapere!

  3. Fabrizio
    3 gennaio 2008 alle 18:39

    grazie mi serviva proprio!
    bel articolo;)

  4. federico
    29 settembre 2008 alle 14:12

    Ciao io su geoiptool.com, ma non risulto proprio, cioè non mi trova. Io ho un modem della tre e l’IP non me li trovano … Gioco anche a warrock e non mi trova i server… Aiutoo

  5. 29 settembre 2008 alle 14:17

    Ciao federico,
    dovresti chiamare 3 e non me! Non faccio customer care! ;)

  6. David
    28 luglio 2009 alle 16:03

    scusa darcas se arrivo cn un po’ di ritardo a commentare… o piu’ che altro a chiedere … ma se dal link della geolocalizzazione che hai postato mi dice “private adress”? lo fa sia con il mio che cn un altro, mentre su altri siti cmq qualche informaione a volte giusta me la da sia x il mio che x l’ altro ip provato..

    nn sn ip privati quelli che ho provato ma sn degli host delle compagnie… credo.. xche’ mi dice indirizzo privato?? nn ne capisco moltissimo.. xo’ vorrei capire..

  7. 29 luglio 2009 alle 08:52

    Ciao David,
    onestamente non si capisce moltissimo da quello che hai scritto.

    Fai qualche esempio concreto che non ti funziona e magari possiamo provare a vedere se abbiamo gli stessi risultati…

  8. 1 trackbacks
    1. 2007-07-30 - diggita.it