Если я хочу предоставить веб-сайту контент, соответствующий местоположению, каким образом я могу найти приблизительное местоположение посетителя, используя его IP-адрес или информацию заголовка?
Если я хочу предоставить веб-сайту контент, соответствующий местоположению, каким образом я могу найти приблизительное местоположение посетителя, используя его IP-адрес или информацию заголовка?
Ответы:
Во-первых, вы должны знать, что точность этих услуг и всегда будет низкой.
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>
Местоположение, которое вы можете определить по IP, не очень надежно (то есть иногда работает).
Если вам нужно надежное местоположение, рассмотрите API геолокации, который является частью HTML5 . Обратите внимание, однако, что не все веб-браузеры поддерживают его (пока).
Опция, которая фокусируется на мобильной поддержке, хотя также хорошо работает в большинстве браузеров для настольных компьютеров (за исключением IE в моем опыте), это пакет Geo-Location-Javascript , который оборачивает упомянутый Шон HTML5 GeoLocation API. Я обнаружил, что поддержка мобильного браузера довольно слаба для API HTML5 (хотя это неудивительно, поскольку он все еще находится в стадии разработки), поэтому я выбрал этот пакет.
Результаты от мобильных устройств довольно хороши по сотовым и WiFi соединениям (и GPS, если устройство имеет его). Настольные браузеры сообщают о довольно грубой позиции, сравнимой с другими сервисами.
Вы можете использовать этот URL и передать ему IP-адрес. http://api.hostip.info/get_html.php?ip=84.32.32.44
Quova http://www.quova.com/ также имеет сервис. Я говорил с ними вчера в GeoLoco. Согласно им (так что возьмите это с крошкой соли), они говорят, что на международном уровне они намного лучше, чем MaxMind. Они примерно равны в Северной Америке.
Имейте в виду, что для мобильных телефонов IP, вероятно, будет отображаться там, где у Оператора есть доступ к Интернету. Вы также можете попробовать использовать - http://www.loc-aid.com/, если вы ориентируетесь на мобильные телефоны.
Google Analytics предоставляет базовые карты и статистику о местоположении вашего посетителя. Конечно, вы должны поделиться этой информацией с Google ...
ipinfodb.com это хорошо, но в настоящее время они не в сети :(
Я использую это для моего API . Это отлично подходит для моей погоды, но я не знаю, сейчас он был отключен со вчерашнего дня.
Если вы хотите предоставить им контент или рекламу на основе их географического местоположения, вы не можете полагаться на получение данных о местоположении с устройства. Даже если они находятся на мобильных телефонах, есть большая вероятность, что у них отключены GPS и Wi-Fi, и они должны дать свое согласие поделиться местоположением.
Это как: «Эй, можешь поделиться своим местоположением со мной, чтобы я мог дать вам контент и рекламу, которые, я думаю, больше всего связаны с вашим географическим положением?» Ответ: «Нет! Дайте мне лучший контент и рекламу, которая у вас есть»
Единственный способ найти местоположение, не спрашивая у них разрешения - это использовать его IP-адрес. Вы можете установить базу данных на свой собственный сервер и запросить ее, чтобы найти местоположение IP-адреса или использовать внешний API, который вы должны запросить и получить результаты. Я использую ipgp Geolocation API и отлично работает. ( http://www.ipgp.net/ip-address-geolocation-api/ )