Jak mogę określić lokalizację użytkownika odwiedzającego moją witrynę?

19

Jeśli chcę udostępnić stronie internetowej odpowiednią treść, w jaki sposób mogę znaleźć przybliżoną lokalizację użytkownika na podstawie jego adresu IP lub informacji w nagłówku?

JamesRyan
źródło
maxmind.com/app/ip-location
Christopher Schmidt
4
Zamiast tego powinieneś zadać to pytanie na StackOverflow.com .
Jonas
7
Myślę, że zawsze pojawią się pytania przekrojowe, które będą odpowiednie dla obu. Ale tutaj odpowiedzi z perspektywy GIS mogą się różnić od odpowiedzi z perspektywy programowania.
JamesRyan

Odpowiedzi:

12

Po pierwsze, powinieneś wiedzieć, że dokładność tych usług jest i zawsze będzie niska.

Miasto MaxMind Geolite jest bezpłatne . Jeśli to nie wystarczy, możesz uaktualnić do bardziej dokładnej wersji płatnej. Nie mogę mówić o jakości wersji płatnej, ponieważ nigdy jej nie używałem.

Jeśli podoba Ci się SQL, pobierz wersję CSV . Załaduj go do wybranej bazy danych i prześlij zapytanie.

Szybszą i zajmującą mało miejsca opcją jest pobranie binarnej wersji pliku blob tej samej bazy danych, a następnie użycie interfejsu API specyficznego dla języka z tej samej witryny w celu jej wyszukania.

Alternatywnie uznałem, że ipinfodb.com jest przydatny. Zapytanie odbywa się za pomocą prostego HTTP GET. Na przykład, aby geolokalizować stackoverflow.com, spróbuj:

http://ipinfodb.com/ip_query.php?timezone=false&ip=69.59.196.211

Zwróci to plik XML zawierający szerokość i długość geograficzną, który wygląda następująco:

<Response>
  <Ip>69.59.196.211</Ip>
  <Status>OK</Status>
  <CountryCode>US</CountryCode>
  <CountryName>United States</CountryName>
  <RegionCode>41</RegionCode>
  <RegionName>Oregon</RegionName>
  <City>Corvallis</City>
  <ZipPostalCode>97333</ZipPostalCode>
  <Latitude>44.4698</Latitude>
  <Longitude>-123.343</Longitude>
</Response>
fmark
źródło
5 lat później… Czy ktoś może zaktualizować tę odpowiedź? Opublikować nową odpowiedź?
Dror Atariah
5 lat później większość systemów geoidalnych jest bezużyteczna, ponieważ nie są w stanie poprawnie zlokalizować użytkowników mobilnych ...
Mike Szyndel
9

Lokalizacja, którą można wywnioskować z adresu IP, nie jest zbyt wiarygodna (tzn. Czasami działa).

Jeśli chcesz mieć niezawodną lokalizację, rozważ interfejs API geolokalizacji, który jest częścią HTML5 . Należy jednak pamiętać, że nie wszystkie przeglądarki internetowe go obsługują (jeszcze).

Sean
źródło
1
+1 dla HTML5. Zawsze możesz użyć obu - jeśli interfejs API geoloacji zawiedzie, skorzystaj z adresu IP. Większa obsługa stron internetowych oznacza większą presję na dostawców przeglądarek, aby wspierali lepsze technologie.
naught101
Ale mówimy o „szorstkiej lokalizacji odwiedzającego”, więc może nie być to, czego chcesz. Ważnym punktem jest to, że geolokalizacja HTML5 wyskakuje przerażająco wyglądający monit o potwierdzenie. Tak lokalizacja będzie zazwyczaj dużo bardziej dokładna ... ale dopiero po użytkownik zobowiązuje się do niezwłocznego potwierdzenia.
Harry Wood,
3

Opcją, która skupia się na obsłudze urządzeń mobilnych, choć działa również dobrze w większości przeglądarek komputerowych (oprócz IE z mojego doświadczenia), jest pakiet Geo-Location-Javascript , który otacza wspomnianego Seana API GeoLocation HTML5. Stwierdziłem, że obsługa przeglądarki mobilnej jest dość słaba dla interfejsu API HTML5 (co nie jest zaskakujące, ponieważ wciąż jest w wersji roboczej), dlatego właśnie zdecydowałem się na ten pakiet.

Wyniki z urządzeń moblie są dość dobre w przypadku połączeń komórkowych i Wi-Fi (i GPS, jeśli urządzenie to ma). Przeglądarki komputerowe zgłaszają dość gruboziarnistą pozycję porównywalną z innymi usługami.

James M.
źródło
2

Quova http://www.quova.com/ ma również usługę. Rozmawiałem z nimi wczoraj w GeoLoco. Według nich (więc weź to z odrobiną soli) mówią, że są znacznie lepsi na arenie międzynarodowej niż MaxMind. Są prawie równe w Ameryce Północnej.

Należy pamiętać, że w przypadku telefonów komórkowych adres IP prawdopodobnie zostanie przypisany do dowolnego miejsca, w którym operator ma bramę do Internetu. Możesz także spróbować użyć - http://www.loc-aid.com/, jeśli kierujesz reklamy na telefony komórkowe.

TheSteve0
źródło
2

Google Analytics zapewnia podstawowe mapy i statystyki dotyczące lokalizacji odwiedzającego. Oczywiście musisz udostępnić te informacje Google ...

Julien
źródło
4
pozwoli mi to zgłaszać odwiedzającym, ale nie będę dostosowywać treści w locie według lokalizacji
JamesRyan
0

ipinfodb.com jest dobry, ale obecnie są offline :(

Używam tego do mojego interfejsu API . To jest świetne na moją pogodę, ale nie wiem, teraz było offline od wczoraj.

ogólnoświatowy interfejs API
źródło
1
Dziękuję za odpowiedź. Czy zauważyłeś, że @FMark już opisał tę usługę we wcześniejszej odpowiedzi w tym wątku?
whuber
to nie jest krytyka dotycząca ipinfodb, ale miałem wcześniej problemy z moim konwerterem walut i narzędziem interfejsu API walut , próbowałem użyć tego do automatycznego określenia lokalizacji i mogłem dać im bezpośrednią lokalizację związaną z walutą, ale; S miał dużo problemów z witryną to 3 dni w trybie offline, albo jakiś błąd połączenia lub Tales dużo czasu załadunku, które mogłyby wpłynąć na wydajność strony, a google nie chcesz, że ...
jarauzes
Infodb wydaje się świetny, wypróbowałem go od miesięcy… czy mają limit? mam na myśli odwiedzających dziennie?
0

Jeśli chcesz udostępniać im treści lub reklamy na podstawie ich położenia geograficznego, nie możesz polegać na pobieraniu danych o lokalizacji z urządzenia. Nawet na telefonach komórkowych istnieje duża szansa, że ​​mają wyłączone GPS i Wi-Fi i muszą wyrazić zgodę na udostępnienie lokalizacji.

To tak: „Hej, czy możesz mi udostępnić swoją lokalizację, abym mógł przekazać Ci treści i reklamy, które moim zdaniem są najbardziej związane z twoją lokalizacją geograficzną?” Odpowiedź: „Nie! Daj mi najlepszą treść i reklamy, które tam masz”

Jedynym sposobem na znalezienie lokalizacji bez pytania ich o pozwolenie jest podanie ich adresu IP. Możesz zainstalować bazę danych na własnym serwerze i zapytać ją, aby znaleźć lokalizację adresu IP lub użyć zewnętrznego interfejsu API, który musisz zapytać i uzyskać wyniki. Korzystam z interfejsu API geolokalizacji ipgp i działa świetnie. ( http://www.ipgp.net/ip-address-geolocation-api/ )

Lucian
źródło