Любой надежный API доступен для определения города и страны пользователя по IP-адресу
Эй, ребята
Я хотел проверить, знает ли кто-нибудь надежный API, который мы можем использовать для определения города и страны пользователя по его IP -адресу.
Мой поиск в Google привел к http://ipinfodb.com/ip_location_api.php
Это кажется идеальным, но моя единственная забота - надежность этой услуги. У гугла есть что-нибудь подобное. Если вам известны какие-либо другие бесплатные или платные API, которые помогают определить местоположение пользователя по его IP -адресу - сообщите мне
Спасибо
7 ответов
Я использовал http://www.hostip.info/ и нашел его действительно хорошим.
Рассмотрите возможность использования Geoplugin: он предоставляет большую часть информации из однострочного PHP-кода, но требует подключения к серверу Geoplugin.com для каждого запроса (и это бесплатно).
Примеры:
Json: http://www.geoplugin.net/json.gp?ip=74.125.236.174
{
geoplugin_request: "74.125.236.174",
geoplugin_status: 200,
geoplugin_city: "Mountain View",
geoplugin_region: "CA",
geoplugin_areaCode: "650",
geoplugin_dmaCode: "807",
geoplugin_countryCode: "US",
geoplugin_countryName: "United States",
geoplugin_continentCode: "NA",
geoplugin_latitude: "37.419201",
geoplugin_longitude: "-122.057404",
geoplugin_regionCode: "CA",
geoplugin_regionName: "California",
geoplugin_currencyCode: "USD",
geoplugin_currencySymbol: "$",
geoplugin_currencySymbol_UTF8: "$",
geoplugin_currencyConverter: 1
}
XML: http://www.geoplugin.net/xml.gp?ip=74.125.236.174
<geoPlugin>
<script/>
<geoplugin_request>74.125.236.174</geoplugin_request>
<geoplugin_status>200</geoplugin_status>
<geoplugin_city>Mountain View</geoplugin_city>
<geoplugin_region>CA</geoplugin_region>
<geoplugin_areaCode>650</geoplugin_areaCode>
<geoplugin_dmaCode>807</geoplugin_dmaCode>
<geoplugin_countryCode>US</geoplugin_countryCode>
<geoplugin_countryName>United States</geoplugin_countryName>
<geoplugin_continentCode>NA</geoplugin_continentCode>
<geoplugin_latitude>37.419201</geoplugin_latitude>
<geoplugin_longitude>-122.057404</geoplugin_longitude>
<geoplugin_regionCode>CA</geoplugin_regionCode>
<geoplugin_regionName>California</geoplugin_regionName>
<geoplugin_currencyCode>USD</geoplugin_currencyCode>
<geoplugin_currencySymbol>$</geoplugin_currencySymbol>
<geoplugin_currencySymbol_UTF8>$</geoplugin_currencySymbol_UTF8>
<geoplugin_currencyConverter>1</geoplugin_currencyConverter>
</geoPlugin>
Другие опции
MaxMind имеет облегченную версию своих баз данных ip2country и ip2city: http://www.maxmind.com/app/geolitecity
http://www.maxmind.com/app/geolitecountry
Если вы не против размещения базы данных самостоятельно, это бесплатно. Платные услуги более точны.
Они также предоставляют веб-сервисы для запросов, но это не бесплатно: http://www.maxmind.com/app/web_services
У Google есть бесплатный сервис http://briancray.com/2009/05/29/find-web-visitors-location-javascript-google-api/
Каждая IP-геолокация зависит от записей, представленных провайдером. Это никогда не будет полностью надежным, потому что многие интернет-провайдеры предоставляют местоположение своего офиса вместо физического местоположения своих подсетей, которые могут находиться в другом городе или даже стране.
У гугла есть что-нибудь подобное.
Нет, Google не предоставляет сервис, подобный этому. (обратите внимание, что ответ здесь, который утверждает, что это действительно обеспечивает, ведет в никуда).
Любые другие бесплатные или платные API, которые помогают определить местоположение пользователя по его IP
Прежде всего, сложно говорить о надежности такого сервиса. Большинство служб полагаются на ISP для получения своих данных, а ISP не всегда предоставляет надежные данные. Более того, поскольку я предполагаю, что вы в основном заботитесь о местонахождении вашего пользователя (а не о том, где находится его IP-адрес), пользователь может решить скрыть свое местоположение либо с помощью VPN, Tor или других анонимайзеров.
В некоторых ваших комментариях я видел, что под надежным вы подразумеваете время безотказной работы провайдера API. Если так, то я бы порекомендовал MaxMind's GeoIP2. Прежде всего, я давно видел этот сайт, он обновляется довольно часто (последнее обновление 1 апреля 2014 года), более того, если вы боитесь простоев - вы можете загрузить их базу данных и не полагаться на них (также они бесплатны).
Другой сервис, который мне действительно нравится , менее известен и имеет открытый исходный код (он частично основан на данных MaxMind). Я использовал его всего несколько раз, так что я не могу сказать о его работоспособности, но мне очень нравится их API. Это так просто, что сложно придумать проще:
http://www.telize.com/geoip/46.19.37.108
или как это
http://www.telize.com/geoip/2a02:2770::21a:4aff:feb3:2ee
дам тебе
{
"country":"Netherlands",
"dma_code":"0",
"timezone":"Europe\/Amsterdam",
"area_code":"0",
"ip":"46.19.37.108",
"asn":"AS196752",
"continent_code":"EU",
"isp":"Tilaa V.O.F.",
"longitude":5.75,
"latitude":52.5,
"country_code":"NL",
"country_code3":"NLD"
}
Я думаю, что этих двух сервисов достаточно, чтобы получить нормальную информацию для ваших посетителей. Но одна важная вещь. Если вам действительно нужно знать, откуда пришли ваши пользователи - почему бы не спросить их с помощью геолокации html5? Вот хороший пример, но вы можете пойти дальше (спросите их, является ли местоположение правильным, и дайте им возможность изменить его). Я знаю, что в вашем случае вам нужна только страна / город, но, возможно, это понадобится другим людям.
PS ноя 2015. Теперь, когда telize.com стоит денег, я нашел еще один бесплатный сервис:
https://freegeoip.net/json/45.79.8.237
https://freegeoip.net/json/2600:3c00::f03c:91ff:fe98:c0f5
В некотором смысле, вы не можете достоверно знать местонахождение пользователя. Используя советы, предоставленные в других ответах, вы получите геолокацию IP-адреса, но нет никакого способа узнать, что этот IP-адрес в Нью-Йорке, США, не доступен через VPN от кого-то, находящегося в командировке в Лондоне, Великобритании или пользуется ли кто-то анонимным сервисом, таким как Tor.