Сведения о вопросе

Pytdev

16:03, 1st July, 2020

Теги

ip   lookup   country    

Как получить страну по определенному IP?

Просмотров: 548   Ответов: 12

Кто-нибудь знает простой способ получить страну для данного IP-адреса? Предпочтительно в формате ISO_3166-1?



  Сведения об ответе

SILA

18:03, 1st July, 2020

Существует два подхода: использование интернет-сервиса и использование какого-то локального списка (возможно, завернутого в библиотеку). То, что вы хотите, будет зависеть от того, что вы строите.

За услуги:

Для списков:


  Сведения об ответе

9090

18:03, 1st July, 2020

Многие люди (включая мою компанию), кажется, используют MaxMind GeoIP.

У них есть бесплатная версия GeoLite , которая не так точна, как платная версия, но если вы просто ищете что-то простое, это может быть достаточно хорошо.


  Сведения об ответе

PAGE

18:03, 1st July, 2020

Вот хороший бесплатный сервис с общественным API: http://www.hostip.info/use.html


  Сведения об ответе

lesha

18:03, 1st July, 2020

ipinfodb предоставляет бесплатную базу данных и API для IP страны и наоборот. Они используют бесплатные данные из MaxMind. Данные обновляются каждый месяц, и это отличная бесплатная альтернатива с приличной точностью.


  Сведения об ответе

$DOLLAR

18:03, 1st July, 2020

Я не знаю, насколько точен этот сайт hostip.info. Я только что зарегистрировал этот сайт, и он сообщил, что моя страна-Канада. Я нахожусь в US, а ISP, которые использует мой офис, работают только с US. Он действительно позволяет вам исправить это предположение, но если вы используете этот сервис для отслеживания веб-сайтов vistors по странам, у вас не будет возможности узнать, являются ли данные правильными. Конечно, я всего лишь одна точка отсчета данных. Я скачал базу данных стран GeoLite, которая является всего лишь файлом .csv, и мой адрес IP был правильно идентифицирован как US.

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


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

клиентское расположение google возвращает (мой пример )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;


  Сведения об ответе

baggs

18:03, 1st July, 2020

Вы можете использовать решение, предусмотренное для этого вопроса .

Но он возвращает 2-значный код страны.


  Сведения об ответе

PIRLO

18:03, 1st July, 2020

Попробуйте этот код php

  <?php  $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
    $json = json_decode($json,true);
    $timezone = $json[localTimeZone];?>


  Сведения об ответе

baggs

18:03, 1st July, 2020

Наиболее точным является Digital Elements NetAcuity...not free, но вы получаете то, за что платите большую часть времени.... цифровой элемент


  Сведения об ответе

Chhiki

18:03, 1st July, 2020

Для этого вы можете воспользоваться моим сервисом, http://ipinfo.io. The API возвращает целую кучу различных сведений об адресе IP:

$ curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "loc": "37.385999999999996,-122.0838",
  "org": "AS15169 Google Inc.",
  "city": "Mountain View",
  "region": "CA",
  "country": "US",
  "phone": 650
}

Если вы только после кода страны, вам просто нужно добавить /country к URL:

$ curl ipinfo.io/8.8.8.8/country
US

Вот общая функция PHP, которую вы можете использовать:

function ip_details($ip) {
    $json = file_get_contents("http://ipinfo.io/{$ip}");
    $details = json_decode($json);
    return $details;
}

$details = ip_details("8.8.8.8");

echo $details->city;     // => Mountain View
echo $details->country;  // => US
echo $details->org;      // => AS15169 Google Inc.
echo $details->hostname; // => google-public-dns-a.google.com

Я использовал IP 8.8.8.8 в этих примерах, но если вам нужны подробности для IP пользователя, просто передайте вместо этого $_SERVER['REMOTE_ADDR'] . Более подробная информация доступна по адресу http://ipinfo.io/developers


  Сведения об ответе

P_S_S

18:03, 1st July, 2020

используйте функцию ipToCountry ($ip) из http://www.mmtutorialvault.com/php-ip-to-country-function/


  Сведения об ответе

JUST___

18:03, 1st July, 2020

вы можете использовать веб-службы API, которые делают эту работу, как:

see example of service: http://ip-api.com and usage: http://whatmyip.info


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться