Как я могу определить местоположение посетителя моего сайта?

19

Если я хочу предоставить веб-сайту контент, соответствующий местоположению, каким образом я могу найти приблизительное местоположение посетителя, используя его IP-адрес или информацию заголовка?

JamesRyan
источник
maxmind.com/app/ip-location
Кристофер Шмидт
4
Вы должны задать этот вопрос на StackOverflow.com .
Джонас
7
Я думаю, что всегда будут перекрестные вопросы, которые будут уместны для обоих. Но ответы здесь с точки зрения ГИС могут отличаться от ответов с точки зрения программирования.
Джеймс Райан

Ответы:

12

Во-первых, вы должны знать, что точность этих услуг и всегда будет низкой.

MaxMind Geolite город бесплатный . Если он недостаточно хорош, вы можете перейти на более точную платную версию. Я не могу говорить о качестве платной версии, поскольку я никогда не использовал ее.

Если вам нравится ваш SQL, скачайте CSV-версию . Загрузите его в свою базу данных и сделайте запрос.

Более быстрый и экономичный вариант - загрузить двоичную версию файла той же базы данных, а затем использовать API для конкретного языка с того же веб-сайта, чтобы запросить ее.

В качестве альтернативы я нашел ipinfodb.com полезным. Запрос по простому HTTP GET. Например, для геолокации stackoverflow.com попробуйте:

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

Это вернет XML-файл, содержащий широту и долготу, который выглядит следующим образом:

<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
источник
5 лет спустя .... Кто-то может обновить этот ответ? Опубликовать новый ответ?
Дрор Атария
Спустя 5 лет большинство геоидальных систем бесполезны, потому что они не могут правильно найти мобильных пользователей ...
Майк Шиндел
9

Местоположение, которое вы можете определить по IP, не очень надежно (то есть иногда работает).

Если вам нужно надежное местоположение, рассмотрите API геолокации, который является частью HTML5 . Обратите внимание, однако, что не все веб-браузеры поддерживают его (пока).

Шон
источник
1
+1 за HTML5. Вы всегда можете использовать оба - если API геолокации не работает, используйте IP. Большая поддержка веб-сайтов означает большее давление на поставщиков браузеров для поддержки лучших технологий.
naught101
Но мы говорим о «грубом местоположении посетителя», так что это может быть не то, что вы хотите. Важным моментом является то, что при геолокации HTML5 появится всплывающее окно с запросом подтверждения. Да, местоположение, как правило, будет гораздо более точным ... но только после того, как посетитель согласится на запрос подтверждения.
Гарри Вуд
3

Опция, которая фокусируется на мобильной поддержке, хотя также хорошо работает в большинстве браузеров для настольных компьютеров (за исключением IE в моем опыте), это пакет Geo-Location-Javascript , который оборачивает упомянутый Шон HTML5 GeoLocation API. Я обнаружил, что поддержка мобильного браузера довольно слаба для API HTML5 (хотя это неудивительно, поскольку он все еще находится в стадии разработки), поэтому я выбрал этот пакет.

Результаты от мобильных устройств довольно хороши по сотовым и WiFi соединениям (и GPS, если устройство имеет его). Настольные браузеры сообщают о довольно грубой позиции, сравнимой с другими сервисами.

Джеймс М
источник
2

Quova http://www.quova.com/ также имеет сервис. Я говорил с ними вчера в GeoLoco. Согласно им (так что возьмите это с крошкой соли), они говорят, что на международном уровне они намного лучше, чем MaxMind. Они примерно равны в Северной Америке.

Имейте в виду, что для мобильных телефонов IP, вероятно, будет отображаться там, где у Оператора есть доступ к Интернету. Вы также можете попробовать использовать - http://www.loc-aid.com/, если вы ориентируетесь на мобильные телефоны.

TheSteve0
источник
2

Google Analytics предоставляет базовые карты и статистику о местоположении вашего посетителя. Конечно, вы должны поделиться этой информацией с Google ...

жюльен
источник
4
это позволило бы мне сообщать о посетителях, но не адаптировать мой контент на лету по местоположению
JamesRyan
0

ipinfodb.com это хорошо, но в настоящее время они не в сети :(

Я использую это для моего API . Это отлично подходит для моей погоды, но я не знаю, сейчас он был отключен со вчерашнего дня.

всемирный API
источник
1
Спасибо за ваш ответ. Вы заметили, что @FMark уже описывал этот сервис в предыдущем ответе в этой теме?
whuber
Это не критика насчет ipinfodb, но раньше у меня были проблемы с моим конвертером валют и инструментом API валюты , я пытался использовать это для автоматического определения местоположения и мог дать им прямое местоположение, связанное с валютой, но у S было много проблем, сайт был 3 дней в автономном режиме, либо из-за ошибки подключения, либо из-за большой загрузки времени, которая может повлиять на производительность вашего сайта, и Google не хочет этого ...
jarauzes
Infodb кажется отличным, пробовал уже несколько месяцев .. у них есть предел? я имею в виду посетителей в день?
0

Если вы хотите предоставить им контент или рекламу на основе их географического местоположения, вы не можете полагаться на получение данных о местоположении с устройства. Даже если они находятся на мобильных телефонах, есть большая вероятность, что у них отключены GPS и Wi-Fi, и они должны дать свое согласие поделиться местоположением.

Это как: «Эй, можешь поделиться своим местоположением со мной, чтобы я мог дать вам контент и рекламу, которые, я думаю, больше всего связаны с вашим географическим положением?» Ответ: «Нет! Дайте мне лучший контент и рекламу, которая у вас есть»

Единственный способ найти местоположение, не спрашивая у них разрешения - это использовать его IP-адрес. Вы можете установить базу данных на свой собственный сервер и запросить ее, чтобы найти местоположение IP-адреса или использовать внешний API, который вы должны запросить и получить результаты. Я использую ipgp Geolocation API и отлично работает. ( http://www.ipgp.net/ip-address-geolocation-api/ )

Lucian
источник