czwartek, marca 11, 2010

Śledzimy geolokalizację ;-)

Próbowałem dziś podpatrzyć i wymyślić jak może działać geolokalizacja w przeglądarkach WWW.
Wspierają ją Firefox 3.6 [przez HTML5], chyba najnowszy Chrome [też przez HTML5 ale z przełącznikiem chyba] i Google Gears.
Ale jak to działa?

Wychodzi na to, że to naprawdę chytre jest.

Gdy jestem w pracy i mam włączone WiFi [choć nie jestem podpięty do żadnej sieci WiFi] to Google Maps w Chrome lokalizuje mnie bardzo dokładnie, kropka pokazująca moją lokalizacje jest przesunięta o może 30 metrów od miejsca gdzie siedzę.
Jeżeli jednak wyłączę WiFi to jestem lokalizowany w Londynie lub Dallas. Czyli tam gdzie są serwery proxy z których korzystam.
Także z tego co pamiętam gdy jestem w domu i mam włączone WiFi [też bez bycia podpiętym do jakiejkolwiek sieci], a jestem w firmowym VPNie to jestem dobrze lokalizowany, ale już z wyłączonym WiFi "ląduję" w Londynie lub Dallas.

Także testy przeprowadzone w miejscu spania wskazują, że włączenie WiFi ma duże znaczenie. Bez WiFi jestem łącząc się z Blueconnecta lokalizowany w Polsce, jednak z włączonym WiFi jestem lokalizowany tak jakbym znajdował się też jakieś 30-50 metrów od miejsca gdzie przebywam.

Z drugiego zachowania można wnośić, że w przypadku ustalania położenia mojego laptopa nie jest istotne to z jakiej stacji bazowej korzysta modem HSDPA. Z obu przypadków można zaś wnosić, że gdy lokalizacja odbywa się poprzez adres IP to używane są tylko dane przybliżone. Cała tajemnica wydaje się tkwić w danych z WiFi.

Moje przypuszczenia są takie, że przeglądarka przesyła do serwisów Google dane o SSID sieci w pobliżu i możliwe, że również dane o natężeniu sygnału, a w Google jakiś system sztucznej inteligencji stara się ustalić na podstawie tych danych i bazy lokalizacji różnych SSID położenie odbiornika WiFi.
Może to nie być też SSID, a np. numer MAC HotSpotów.

Próbowałem "podsłuchiwać" co przesyłane jest przez przeglądarkę w momencie gdy zaczyna się geolokalizacja i wydaje mi się, że wysyłany jest wtedy request do URLa w Google [u mnie do mt0.google.com/vt/ft?lyrs.....] i pobierany jest plik JSON [czyli obiekt JavaScript] w którym znajdują się informacje o okolicznych "atrakcjach".
Jednak jedyne co widzę przekazywanego do tego URLa to jakieś zakodowane dane w postaci szeregów liter v,u,t i w.

Przyznać trzeba, że działa to naprawdę bardzo chytrze :-)

Ze złych rzeczy - sam nie potrafię jakoś odczytać pozycji przy pomocy obiektu navigator.geolocation bo pod Chrome go podobno nie ma [chyba pojawi się dopiero gdy uruchomi się Chrome z odpowiednim przełącznikiem], a w Firefoksie zwraca nieznaną pozycję ;-)


Podobne postybeta
Geolokalizacja c.d. :-)
GeoTool
Dalsze śledzenie geolokalizacji Google'a :-)
Android i lokalizacja. Czego używać zagranicą?
Chromium OS na Asus EEE PC 900