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 :-)
Kto mi podmienia certyfikat do GMAILa? ;-) A bardziej - jak? ;-)
Chromium OS na Asus EEE PC 900

12 komentarzy:

  1. Kiedy korzystasz z WiFi i się przemieszczasz to twoje zgeolokalizowane współrzędne będą się zmieniać?? Chyba nie.. byłoby to baardzo dziwne.. więc czemu wyciągasz takie dziwne wnioski? Przecież geolokacja to nic więcej jak pobranie współrzędnych z GISu na podstawie adresu z whois'a - z wysoko-poziomowego punktu widzenia jest to niezwykle prosty mechanizm działania. Czemu więc myślisz, że twój komputer miałby wysyłać jakiekolwiek dane o natężeniu sygnału itp?? Sztuczna inteligencja?? Te "30-50 metrów od ciebie" to chyba tylko GISowe współrzędne adresu pod którym zarejestrowany jest hotspot z którego korzystasz i nic więcej. Czy czegoś nie zrozumiałem?

    OdpowiedzUsuń
  2. mstrak - wyciągam takie wnioski ponieważ dokładna geolokalizacja jest dostępna tylko gdy włączone jest WiFi, ale nie jest wymagane by komputer był podłączony do jakiejkolwiek sieci. Obrazowo, gdy jestem w pracy to moja lokalizacja wg.whois to Londyn albo Dallas, jeżeli nie mam włączonego WiFi to jestem właśnie w Londynie lub Dallas lokalizowany, ale gdy WiFi jest włączone, to mimo tego, że nie jestem podłączony do żadnej sieci WiFi [karta nie uzyskała też IP z sieci WiFi] to lokalizacja jest dokładna i wskazuje na punkt [wędrujący] oddalony o te 30 metrów od miejsca gdzie siedzę. To samo w miejscu spania, gdy używany jest tylko adres IP mojego modemu HSDPA to lokalizowany jestem na Polskę, ale włączenie WiFi [też bez uzyskania podłączenia do jakiejkolwiek sieci] powoduje dokładne zgeolokalizowanie.
    To samo w moim domu w Wodzisławiu, bez WiFi jestem lokalizowany w Polsce, a z WiFi w Wodzisławiu.
    Wskazuje to, że coś z WiFi wpływa na dokładność geolokalizacji. Co najmniej mogą to być SSID, może mac'i

    OdpowiedzUsuń
  3. Ale, żeby być geolokalizowanym przez WiFi nie potrzebujesz być podłączonym do sieci WiFI! Wystarczy, że twój komputer wie o istnieniu tej sieci, żeby cie zgeolokalizować. Nic więcej nie jest mu przecież potrzebne.

    OdpowiedzUsuń
  4. A jak geolokalizuje? Czy każdy hotspot WiFi rozgłasza swoją geolokalizację?
    Nie, ale jeżeli Google zna lokalizację sieci WiFi to znając moc sygnałów i parę innych rzeczy może dokonać lokalizacji przez triangluację. Zresztą tutaj http://gadgets.boingboing.net/2008/10/22/google-gears-adds-wi.html opisują to właśnie w taki sposób.
    Czyli przeglądarka zbiera dane o sieciach w okolicy, przesyła to do Google, a oni odsyłają pozycję. Tak jak to opisałem. Nie ma tu whois.

    OdpowiedzUsuń
  5. Zastanów się nad tym co napisałeś. Przeczytaj swoją wypowiedź jeszcze raz i może jeszcze raz... Okej... triangulacja i te sprawy.. fajnie. Załóżmy więc, że znajdujemy się w trzech hostspotach i mamy taki sam sygnał od każdego z nich tzn jesteśmy w środku tworzonego przez nie trójkąta. Teraz się zastanów skąd wiemy czy ten trójkąt znajduje się w Polsce, Szwecji, USA czy na Mauritiusie? To, co jest opisane w linku, który podałeś to nic więcej jak fajny dodatek do tego, o czym ja cały czas piszę.... z resztą czy siedząc w swoim domu we Wodzisławiu Śląskim znajdujesz się w zasięgu trzech hotspotów? Tak nie jest w wielu miejscach w centrach miast o wiele większych od Wodzisławia (z całym szacunkiem). Uwierz mi - tutaj nie działa żadna magii.... tutaj działa whois:)

    OdpowiedzUsuń
  6. Pierwsze, w WHOIS nie ma danych o lokalizacji, są tylko adresy [na podstawie których mając bazy geolokalizacji adresów można ustalić położenie z pewną dokładnością]. Po drugie żeby skorzystać z WHOIS potrzebujesz nazwy domeny/adresu IP. W przypadku WiFi jeśli się nie podłączysz to nie masz żadnej z tych danych. Nawet jakbyś miał to nic Ci to zwykle nie da, bo adres IP będzie wewnętrzny, za NATem [tak w 99% przypadków].
    WHOIS może być wykorzystywany do geolokalizacji, ale jak widać Google w momencie gdy zaczynasz używać WiFi przełącza się na dokładniejszą lokalizację. Dzięki temu w Krakowie lokalizują mnie z dokładnością do tych 30-50 metrów i punkt ten w pewnym zakresie wędruje.
    Mając dane o lokalizacji różnych hot spotów można próbować wyliczać położenie, ale niestety nie można zakładać, że SSID czy też MAC są unikatowe. Dlatego należy zbudować listę najbardziej prawdopodobnych lokalizacji. Ustaliwszy, które sieci WiFi są najbardziej prawdopodobne można zacząć bawić się w ustalanie położenia.
    W chwili obecnej jestem w zasięgu co najmniej 5 hotspotów, ale moja lokalizacja jest dość słabo określona. W KRK jest dużo lepiej.
    Do wyznaczenia położenia nie potrzebujesz 3 punktów, wystarczy 1, każdy kolejny zwiększa dokładność po prostu. 1 punkt daje Ci koło, a z mocy można wyliczyć [słabo] odległość od jego środka, 2 punkty dają dokładniejszy obszar, 3 jeszcze dokładniejszy [ale nie punkt bo nadal są przeszkody fizyczne i odbicia] i tak dalej.
    WHOIS był dobry na samym początku, ale nie da Ci nigdy dokładności do tych 300 metrów.
    Powtórzę jeszcze raz, bez WiFi lokalizowany jestem właśnie w oparciu o Whois na Londyn lub Dallas [moi znajomi z Motoroli znów na Taunsstain czy jak to się pisze], po włączeniu WiFi [które w moim firmowym laptopie nie jest w ogóle skonfigurowane] nagle moja pozycja jest ustalana z dokładnością do 30 metrów.
    Na jakiej podstawie, jeśli nie na podstawie SSDI/MACów i ewentualnie mocy sygnałów? I odpowiedź "WHOIS" nie jest odpowiedzią, póki nie wskaże się tego co jest w tej bazie WHOIS kryterium wyszukiwania, a tego jak na razie nie zrobiłeś.

    OdpowiedzUsuń
  7. Baza whois + baza GIS (to, co pisałem na początku). Whois dla WiFi są oparte o mac-adresy punktów dostępowych. Nic więcej nie potrzeba!
    1 punkt dostępowy to nie dokładna lokalizacja tylko lokalizacja punktu dostępowego. Dla dokładnej lokalizacji (przy idealnych warunkach) potrzebujesz 3 punkty - prosta matematyka.

    OdpowiedzUsuń
  8. Jeszcze jedna rzecz. Nie wyliczysz nawet przybliżonej lokalizacji (swojej, a nie punktu dostępowego) przy tylko jednym albo dwóch punktach. Na podstawie jednego punktu - otrzymasz koło, ale nie będziesz mógł powiedzieć nawet jak daleko znajdujesz się od środka (nie mówiąc o współrzędnej kątowej), bo natężenie sygnału zależy tylko po części od odległości - liczą się też w dużej mierze moc oraz warunki atmosferyczne. Na podstawie 2 punktów otrzymasz teoretycznie nieskończenie długą prosta możliwych lokalizacji.. nawet uwzględniając w wyliczeniu typowe warunki i typowe moce nadajników, dałoby to zdecydowanie zbyt duże błędy.
    Z resztą czasami wystarczy poszukać Google zanim zacznie się konstruować kosmiczne teorie. Potrzebowałem teraz naprawdę ok 1-3min, żeby znaleźć to

    http://en.wikipedia.org/wiki/Skyhook_Wireless

    ..a takich baz jest więcej, panie magistrze fizyki.

    OdpowiedzUsuń
  9. Przecież to ja Ci dałem link do informacji w której była mowa o Skyhook.
    Co do wyznaczania położenia to wystarczy 1 punkt, położeniem będzie wtedy lokalizacja hot spotu, jeśli będziesz znać moc nadajnika i wygląd pola anteny to możesz określić też odległość od źródła, czyli możesz stwierdzić, że położenie do punkt gdzie jest hot spot, a dokładność to właśnie odległość.
    Gdy są 2 punkty nie masz wcale nieskończonej linii, ponieważ każdy z nadajników ma skończony zasię, ale można określić wtedy obszar [bo w przypadku sieci WiFi nie masz zwykle sytuacji by 1 punkt nadawał o wiele silniej od drugiego [czyli część wspólna zasięgów to w 2D nałożenie dwóch kół, wtedy można umieścić lokalizację między 2 znanymi hot spotami a jako dokładność położenia podać odległość do dalszego z nich, lub znając natężenie sygnałów można wyznaczyć odległości od obu źródeł. Obie te techniki są stosowane np. w trakcie określenia położenia w GSM. Trzy punkty dadzą położenie dokładne tylko w sytuacji gdy znasz odległość od tych 3 punktów, można wtedy policzyć środek ciężkości takiego układu i tam przypadnie możliwa lokalizacja nadajnika.
    Jak pisałem SSID są ważne, możliwe że pod uwagę brane są też moce sygnału. Bazowanie na MACach jest dobre, ale nie daje 100% pewności, dlatego musi być zbudowany ranking możliwych pozycji. Można to zrobić przez odpytanie baz o położenia wszystkich MACów i odrzucać te które są położone zbyt daleko i nie trzeba tu wtedy sztucznej inteligencji, to fakt.

    Btw. ewidentnie musisz być obrażony, że postanowiłem Ci nie odpowiadać pod postem o Szoku Kulturowym skoro rozpocząłeś wojnę w oparciu o moje przypuszczenie, że może poza SSID/Macami do ustalania pozycji brane są jeszcze moce sygnałów. Widać taka przypadłość ;-)
    Liczę na kolejne światłe komentarze z Twej strony ;-)

    OdpowiedzUsuń
  10. Dodam jeszcze tylko, że męczę cię swoją obecnością, bo uważam cię za świetnego dyskutanta na poziomie. Dowiedziałem się paru ciekawych rzeczy i mam nadzieję, że ty też.. bo chyba przecież o to chodzi, no nie?:)

    OdpowiedzUsuń
  11. Hmm.. czyżby się zgubił cały mój poprzedni post? Był dosyć długi, więc najwyżej zrekonstruuje go jutro..

    OdpowiedzUsuń
  12. mstrak, piszesz banialuki. Pomysl wczesniej zanim cos napiszesz i zarzucisz komus smiesznosc. Bo nie swiadczy to dobrze o Twojej inteligencji. Na podstawie whois nie zlokalizujesz sie jak masz komunikacje np. wifi posadzonej na neostradzie z dynamicznym IP. To moze tylko policja , na dodatek nie w sekundy jak to robi google. To znaczy lokalizacja bedzie, ale z dokladnoscia do województwa.
    Google zlokalizuje Cie na podstawie SSID, MAC i baz danych pobranych od tych ktorzy Cie namierzyli w sicciach wifi. Kropka. Przemysl to sobie

    OdpowiedzUsuń