Site icon Gioxx.org

“gfsCom:My Information” ottiene informazioni dal tuo browser

Durante la stesura dell’articolo dedicato a Iliad (pubblicato ormai circa un mese fa), ho avuto la necessità di controllare da dove passasse il mio traffico dati per poter confermare quanto scritto in giro (ovvero che nel primo periodo di vita di Iliad si passasse tutti dai suoi IP francesi anziché da quelli italiani). Ci sono tanti siti web che offrono la possibilità di controllare questi dati catturandoli direttamente da browser, ma tra pubblicità, controlli di sicurezza e altre menate varie diventa davvero seccante navigarli, è per questo motivo che ho creato “My Information“, una semplice pagina riepilogativa che potesse mostrarti le informazioni che cerchi e nulla più.

My Information

No, non è ottimizzato al 100% per i dispositivi mobili (anche se si mostra correttamente ai tuoi occhi) e no, non è perfetto neanche nello stile presentato (perché si potrebbe fare molto di meglio), probabilmente ha anche un nome banale e poco attraente, eppure è esattamente ciò di cui forse necessiti anche tu. Il tuo browser trasmette dei dati a ogni sito web che visiti, per questo motivo ho potuto approfittare di qualche funzione PHP nativa e delle API messe a disposizione dal sito IPStack.com per elaborare quanto catturato, in diretta, senza salvare alcunché sul server (in pratica i tuoi dati li vedi solo tu), così siamo tutti più contenti e la Privacy ringrazia.

My Information è disponibile per tutti all’indirizzo public.gfsolone.com/tools/ip, e puoi raggiungerlo anche tramite l’alias go.gioxx.org/ip. Va ad aggiungersi agli altri tool pubblici che ho messo a disposizione tramite il mio sito web personale (li trovi tutti raccolti sul Wiki).

Un’occhiata dietro le quinte

È tutto molto semplice. Di suo PHP permette già di catturare alcune informazioni provenienti dal tuo browser, per questo motivo è necessario esclusivamente fargliele scrivere in pagina per potertele mostrare, questo vale certamente per il tuo IP ($_SERVER['REMOTE_ADDR']) o lo User-Agent del browser che stai utilizzando nel momento in cui visiti My Information ($_SERVER['HTTP_USER_AGENT']). Il resto, seppur in qualche maniera anch’esso recuperabile (non tutto), ho deciso di darlo in pasto a IPStack; questo mi restituisce una serie di dettagli interessanti che posso ulteriormente lavorare (o mostrare direttamente) per arricchire ancor più quanto messo a tua disposizione, come per esempio una mappa (libera, di OpenStreeMap, ma richiamata tramite Leaflet), l’hostname assegnato al tuo IP (se pubblico), il CAP, latitudine e longitudine rilevate, ecc.

Ti lascio dare un’occhiata al codice (semplicissimo) che racchiude buona parte delle informazioni mostrate poi a video:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$location = file_get_contents('http://api.ipstack.com/'.$ip.'?access_key=XXX&hostname=1');
$ipstack = json_decode($location, true);
echo '<li id="Hostname" >
<div>
<strong>Hostname</strong>:<br />
<textarea readonly rows="1" cols="30" style="font-size: 30px;">'.$ipstack['hostname'].'</textarea>
</div>
</li>';
echo '<li id="Country" >
<div>
<strong>Country</strong>:<br />
<textarea readonly rows="1" cols="30" style="font-size: 30px;">'.$ipstack['country_code'].' ('.$ipstack['country_name'].')</textarea>
</div>
</li>';
echo '<li id="Location" >
<div>
<strong>Location</strong>:<br />
<textarea readonly rows="2" cols="45" style="font-size: 20px;">'.$ipstack['zip'].', '.$ipstack['city'].' ('.$ipstack['region_name'].')</textarea>
</div>
</li>';
echo '<li id="Map" >
<div>
<strong>Map</strong>:<br />
<div id="mapid" style="width: 560px; height: 300px;"></div>
</div>
</li>';
?>
<script>
var mymap = L.map('mapid').setView([<?php echo $ipstack['latitude'].', '.$ipstack['longitude'] ?>], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.XXX.XXX', {
maxZoom: 20,
attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
'<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
id: 'mapbox.streets'
}).addTo(mymap);
L.marker([<?php echo $ipstack['latitude'].', '.$ipstack['longitude'] ?>]).addTo(mymap)
.bindPopup("<?php echo $ipstack['zip'].', '.$ipstack['city'] ?>");
var popup = L.popup();
</script>
view raw ipstack.php hosted with ❤ by GitHub

Il puntatore su mappa è assolutamente migliorabile, non sempre latitudine e longitudine producono il risultato sperato, potrei certamente impostarlo sul CAP rilevato, ma si tratta di finezze che in fin dei conti poco servono probabilmente a te che hai bisogno di catturare un altro tipo di dati.

Il tool è online ormai dallo scorso giugno, ed è stato già visitato un buon numero di volte (strano, non l’ho neanche sponsorizzato), non ti resta che metterlo alla prova (nei limiti del concesso, sfrutto le API gratuite di IPStack che offrono un massimo di 10.000 richieste / mese, dovrebbero bastare, giusto? :-)).

Buon lavoro!

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version