kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 DylanJ
DylanJ
Вопрос

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

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

58 2008-08-04T05:15:35+00:00 14
Paul Ratazzi
Paul Ratazzi
Редактировал вопрос 22-го декабря 2017 в 6:53
Программирование
lookup
ip
country
Warren Blanchet
Warren Blanchet
15-го сентября 2008 в 7:45
2008-09-15T19:45:33+00:00
Дополнительно
Источник
Редактировать
#8407213

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

Для услуг:

  • http://www.hostip.info/use.html (как упомянуто Марком)
  • http://www.team-cymru.org/Services/ip-to-asn.html

Для списков:

  • http://www.maxmind.com/app/geoip_country (как упомянуто Orion)

  • Вы могли самокрутка, загружая списки с RIRs:

    • ftp.arin.net/pub/stats/arin/delegated-arin-latest
    • ftp.ripe.net/ripe/stats/delegated-ripencc-latest
    • ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
    • ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
    • ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest

    Формат зарегистрирован в этом README

 Community
Community
Редактировал ответ 23-го мая 2017 в 12:26
38
0
Решение / Ответ
Orion Edwards
Orion Edwards
4-го августа 2008 в 6:26
2008-08-04T06:26:22+00:00
Дополнительно
Источник
Редактировать
#8407211

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

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

Orion Edwards
Orion Edwards
Редактировал ответ 8-го октября 2014 в 12:17
36
0
Mark Harrison
Mark Harrison
4-го августа 2008 в 5:21
2008-08-04T05:21:59+00:00
Дополнительно
Источник
Редактировать
#8407210

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

10
0
Donny Kurnia
Donny Kurnia
13-го января 2010 в 1:13
2010-01-13T13:13:54+00:00
Дополнительно
Источник
Редактировать
#8407215

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

Brad Koch
Brad Koch
Редактировал ответ 25-го мая 2013 в 1:54
8
0
Chris Miller
Chris Miller
4-го августа 2008 в 2:02
2008-08-04T14:02:14+00:00
Дополнительно
Источник
Редактировать
#8407212

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

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

5
0
 zak
zak
19-го октября 2011 в 2:04
2011-10-19T14:04:01+00:00
Дополнительно
Источник
Редактировать
#8407217

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

Но это возвращает 2 кода страны цифры.

 Community
Community
Редактировал ответ 23-го мая 2017 в 12:02
2
0
 CSharpAtl
CSharpAtl
27-го сентября 2008 в 3:04
2008-09-27T03:04:41+00:00
Дополнительно
Источник
Редактировать
#8407214

Самыми точными являются Цифровые Элементы NetAcuity... не свободный, но Вы получаете то, что Вы платите большую часть времени.... Цифровой Элемент

2
0
Niklas Rosencrantz
Niklas Rosencrantz
13-го января 2010 в 1:25
2010-01-13T13:25:21+00:00
Дополнительно
Источник
Редактировать
#8407216

google' s прибыль clientlocation (мой пример)

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
2
0
 pckabeer
pckabeer
30-го июля 2012 в 8:07
2012-07-30T08:07:35+00:00
Дополнительно
Источник
Редактировать
#8407218

Попробуйте этот кодекс 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];?>
2
0
Ben Dowling
Ben Dowling
26-го августа 2014 в 4:49
2014-08-26T04:49:49+00:00
Дополнительно
Источник
Редактировать
#8407221

Вы можете использовать мое обслуживание, http://ipinfo.io, для этого. 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
}

Если you' ре только после кода страны Вы просто должны добавить / страну к URL:

$ curl ipinfo.io/8.8.8.8/country
US

Here' s универсальный 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

I' ve использовал IP 8.8.8.8 в этих примерах, но если Вы хотите детали для user' s IP просто проходят в '$ _SERVER [' REMOTE_ADDR']' вместо этого. Больше деталей доступно в http://ipinfo.io/developers

2
0
 user3463375
user3463375
26-го мая 2014 в 2:59
2014-05-26T14:59:31+00:00
Дополнительно
Источник
Редактировать
#8407220

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

see example of service: http://ip-api.com and usage: http://whatmyip.info
 user3463375
user3463375
Редактировал ответ 28-го мая 2014 в 12:57
1
0
 saifur
saifur
27-го июня 2013 в 5:54
2013-06-27T17:54:01+00:00
Дополнительно
Источник
Редактировать
#8407219

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

1
0
 Vlam
Vlam
27-го февраля 2018 в 5:32
2018-02-27T05:32:26+00:00
Дополнительно
Источник
Редактировать
#8407223

Вы можете попробовать свободное база данных IP2Location LITE

Составлять таблицу в MySQL

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db1`(
    `ip_from` INT(10) UNSIGNED,
    `ip_to` INT(10) UNSIGNED,
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    INDEX `idx_ip_to` (`ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Импортировать данные

LOAD DATA LOCAL
    INFILE 'IP2LOCATION-LITE-DB1.CSV'
INTO TABLE
    `ip2location_db1`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

PHP кодируют, чтобы подвергнуть сомнению MySQL

<?php
// Replace this MYSQL server variables with actual configuration
$mysql_server = "mysql_server.com";
$mysql_user_name = "UserName";
$mysql_user_pass = "Password";

// Retrieve visitor IP address from server variable REMOTE_ADDR
$ipaddress = $_SERVER["REMOTE_ADDR"];

// Convert IP address to IP number for querying database
$ipno = Dot2LongIP($ipaddress);

// Connect to the database server
$link = mysql_connect($mysql_server, $mysql_user_name, $mysql_user_pass) or die("Could not connect to MySQL database");

// Connect to the IP2Location database
mysql_select_db("ip2location") or die("Could not select database");

// SQL query string to match the recordset that the IP number fall between the valid range
$query = "SELECT * FROM ip2location_db1 WHERE $ipno <= ip_to LIMIT 1";

// Execute SQL query
$result = mysql_query($query) or die("IP2Location Query Failed");

// Retrieve the recordset (only one)
$row = mysql_fetch_object($result);

// Keep the country information into two different variables
$country_code = $row->country_code;
$country_name = $row->country_name;

echo "Country_code: " . $country_code . "<br/>";
echo "Country_name: " . $country_name . "<br />";

// Free recordset and close database connection
mysql_free_result($result);
mysql_close($link);

// Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to 256^4-1)
function Dot2LongIP ($IPaddr) {
 if ($IPaddr == "")
 {
   return 0;
 } else {
   $ips = explode(".", $IPaddr);
   return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256);
 }
}
?>
0
0
 Jonathan
Jonathan
18-го февраля 2018 в 7:05
2018-02-18T19:05:11+00:00
Дополнительно
Источник
Редактировать
#8407222

Посмотрите ipdata.co, который дает Вам несколько точек данных от IP-адреса.

API довольно быстр с 10 глобальными конечными точками каждый, который в состоянии обращаться с > 800M ежедневно звонит.

Here' s пример завитка;

curl https://api.ipdata.co/78.8.53.5
{
    "ip": "78.8.53.5",
    "city": "G\u0142og\u00f3w",
    "region": "Lower Silesia",
    "region_code": "DS",
    "country_name": "Poland",
    "country_code": "PL",
    "continent_name": "Europe",
    "continent_code": "EU",
    "latitude": 51.6461,
    "longitude": 16.1678,
    "asn": "AS12741",
    "organisation": "Netia SA",
    "postal": "67-200",
    "currency": "PLN",
    "currency_symbol": "z\u0142",
    "calling_code": "48",
    "flag": "https://ipdata.co/flags/pl.png",
    "emoji_flag": "\ud83c\uddf5\ud83c\uddf1",
    "time_zone": "Europe/Warsaw",
    "is_eu": true,
    "suspicious_factors": {
        "is_tor": false
    }
}⏎  
0
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Денис Васьков
Зарегистрирован 17 часов назад
2
Dima Patrushev
Зарегистрирован 2 дня назад
3
sirojidddin otaboyev
Зарегистрирован 1 неделю назад
4
Елена Гайдамамакинат
Зарегистрирован 1 неделю назад
5
Иван Степанюк
Зарегистрирован 1 неделю назад
ID
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией