Подтвердить что ты не робот

Надежный API для определения IP-адреса города и страны

Мне нужен надежный API, который можно использовать для определения города и страны по IP-адресу.

Мой поиск в Google привел к http://ipinfodb.com/ip_location_api.php. Это кажется идеальным, но моя единственная забота - надежность этой услуги. У гугла есть что нибудь подобное?

Я ищу бесплатные или платные API, которые помогают определить местоположение по IP.

4b9b3361

Ответ 1

Я использовал http://www.hostip.info/ и нашел, что это действительно хорошо.

Ответ 2

MaxMind имеет облегченную версию своих баз данных ip2country и ip2city: http://www.maxmind.com/app/geolitecity

http://www.maxmind.com/app/geolitecountry

Если вы не возражаете против размещения базы данных самостоятельно, она бесплатна. Платные услуги более точны.

Они также предоставляют веб-службы для запросов, но это не бесплатно: http://www.maxmind.com/app/web_services#country

Ответ 3

Рассмотрите возможность использования geoplugin, он предоставляет большую часть информации из однострочного PHP-кода, но для каждого запроса требуется подключение к серверу geplugin.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>&#36;</geoplugin_currencySymbol>
<geoplugin_currencySymbol_UTF8>$</geoplugin_currencySymbol_UTF8>
<geoplugin_currencyConverter>1</geoplugin_currencyConverter>
</geoPlugin>

Другие параметры

Ответ 5

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

Ответ 6

В некотором смысле вы не можете достоверно знать местоположение пользователя. Используя советы, предоставленные другими ответами, вы получите геолокацию IP-адреса, но нет способа узнать, что этот IP-адрес в Нью-Йорке США не доступен через VPN от кого-то в командировке в Лондон, Великобританию или кто-нибудь пользуется услугами анонимизации, например Tor.

Ответ 7

Есть ли у Google что-то вроде этого.

Нет, Google не предоставляет подобную услугу. (обратите внимание, что ответ здесь, который утверждает, что он его предоставляет, ведет к никуда).

Любой другой бесплатный или платный API, который помогает определить местоположение пользователя из его IP

Прежде всего, сложно говорить о надежности такого сервиса. Большинство сервисов полагаются на интернет-провайдера для получения своих данных, а ISP не всегда предоставляют надежные данные. Более того, поскольку я предполагаю, что вы в основном заботитесь о местонахождении своего пользователя (а не о том, в каком месте принадлежит его IP-адрес), пользователь может решить скрыть свое местоположение либо через VPN, либо в Tor, либо в других анонимайзерах.

В некоторых ваших комментариях я видел, что с помощью надежных вы понимаете время работы поставщика API. Если да, то я бы рекомендовал MaxMind 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 geolocation? Вот хороший пример, но вы можете пойти дальше (спросите их, правильное ли местоположение и дайте им возможность изменить его). Я знаю, что в вашем случае вам нужна только страна/город, но, возможно, другие люди понадобятся.


P.S. Nov 2015. Теперь, когда telize.com стоит денег, я нашел еще одну бесплатную услугу:

https://freegeoip.net/json/45.79.8.237
https://freegeoip.net/json/2600:3c00::f03c:91ff:fe98:c0f5