Привет, ребята!
Я хотел проверить, знает ли кто-нибудь о надежном API, который мы можем использовать, чтобы определить город и страну пользователя с его IP-адреса.
Мой поиск в Google привел к http://ipinfodb.com/ip_location_api.php
Это кажется идеальным, но моя единственная забота – надежность этой услуги. У google есть что-то вроде этого. Если вы знаете любые другие бесплатные или платные API, которые помогают определить местоположение пользователя на его IP-адресе – сообщите мне.
Благодаря
Я использовал http://www.hostip.info/ и нашел, что это действительно хорошо.
MaxMind имеет облегченную версию своих баз данных ip2country и ip2city: http://www.maxmind.com/app/geolitecity
http://www.maxmind.com/app/geolitecountry
Если вы не возражаете против размещения базы данных самостоятельно, это бесплатно. Платные услуги более точны.
Они также предоставляют веб-службы для запросов, но это не бесплатно: http://www.maxmind.com/app/web_services#country
Подумайте о том, как использовать геополюс , он обеспечивает большую часть информации из одного 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>$</geoplugin_currencySymbol> <geoplugin_currencySymbol_UTF8>$</geoplugin_currencySymbol_UTF8> <geoplugin_currencyConverter>1</geoplugin_currencyConverter> </geoPlugin>
Другие варианты
У Google есть бесплатный сервис http://briancray.com/2009/05/29/find-web-visitors-location-javascript-google-api/
Каждая геолокация IP зависит от записей, представленных провайдером. Это никогда не будет полностью надежным, потому что многие интернет-провайдеры отправляют местоположение своего офиса вместо физических мест своих подсетей, которые могут находиться в другом городе или даже стране.
У google есть что-то вроде этого.
Нет, Google не предоставляет подобную услугу. (обратите внимание, что ответ здесь, который утверждает, что он его предоставляет, ведет к никуда).
Любые другие бесплатные или платные API, которые помогают определять местоположение пользователя на его IP-адресе
В первую очередь трудно говорить о надежности такого сервиса. Большинство сервисов полагаются на интернет-провайдера для получения своих данных, а ISP не всегда предоставляют надежные данные. Более того, поскольку я предполагаю, что вы в основном заботитесь о местонахождении своего пользователя (а не о том, в каком месте принадлежит его IP-адрес), пользователь может решить скрыть свое местоположение либо через VPN, либо в Tor, либо в других анонимайзерах.
В некоторых ваших комментариях я видел, что надежным вы понимаете время работы поставщика API. Если да, то я бы рекомендовал GeoIP2 от MaxMind . Прежде всего, я видел этот сайт в течение длительного времени, они обновляются довольно часто (последнее обновление 1 апреля 2014 года), более того, если вы так боитесь простоя – вы можете загрузить свою базу данных и не полагаться на них (также они бесплатны).
Другая услуга, которая мне действительно нравится , менее известна и имеет openource (она частично зависит от данных от 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 VOF", "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 .