Данные о геолокации IP (JSON / CSV)

Автор:Lisa Farrell · 2025-11-09

База данных геолокации IP сопоставляет непрерывные IP-интервалы (ip_from ~ ip_to) с страной/регионом, административной единицей, городом и координатами (широта/долгота). Применяется для географической маршрутизации трафика, комплаенса и управления рисками, ближайшего распределения нагрузок и операционной аналитики. Данные публикуются двумя независимыми наборами — для IPv6 и IPv4 — с одинаковыми полями и форматами файлов.

Структура данных (описание столбцов)

  • ip_from VARCHAR(39) NOT NULL: начальный IP (совместим с IPv4/IPv6).
  • ip_to VARCHAR(39) NOT NULL: конечный IP (совместим с IPv4/IPv6).
  • country_code CHAR(2): ISO 3166-1 Alpha-2 (напр., US, CN).
  • region VARCHAR(100): провинция/штат/единица первого админ. уровня.
  • city VARCHAR(100): название города.
  • latitude DECIMAL(9,5): широта.
  • longitude DECIMAL(9,5): долгота.
SQL создания таблицы (пример для MySQL)
CREATE TABLE geoip_ranges (
  ip_from      VARCHAR(39)  NOT NULL,
  ip_to        VARCHAR(39)  NOT NULL,
  country_code CHAR(2),
  region       VARCHAR(100),
  city         VARCHAR(100),
  latitude     DECIMAL(9,5),
  longitude    DECIMAL(9,5),
  PRIMARY KEY (ip_from, ip_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Загрузка онлайн

Для каждого стека (IPv6 / IPv4) доступны три формата: JSON (.gz), CSV (.gz), SQL (.gz).

Источник Тип Формат Скачать Описание
IPIN IPv6 JSON (.gz) Скачать Интервалы IPv6 → геоданные (массив JSON).
IPIN IPv6 CSV (.gz) Скачать Стандартный CSV с заголовком; удобно для ETL/таблиц.
IPIN IPv6 SQL (.gz) Скачать Содержит создание таблицы и пакетные INSERT; прямой импорт в MySQL.
IPIN IPv4 JSON (.gz) Скачать Интервалы IPv4 → геоданные (массив JSON).
IPIN IPv4 CSV (.gz) Скачать Стандартный CSV с заголовком; удобно для ETL/таблиц.
IPIN IPv4 SQL (.gz) Скачать Содержит создание таблицы и пакетные INSERT; прямой импорт в MySQL.

Примечание: все файлы распространяются в виде архивов .gz. Распакуйте с помощью gunzip или обрабатывайте их потоком прямо в приложении.

Быстрая загрузка через командную строку

curl

# IPv6
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

wget

# Автоматически использовать имя файла сервера (--content-disposition)
# IPv6
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

# Свое имя файла + докачка
wget -c -O ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget -c -O ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget -c -O ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
wget -c -O ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget -c -O ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget -c -O ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

aria2c (многопоточно)

# IPv6
aria2c -x16 -s16 -k1M -o ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
aria2c -x16 -s16 -k1M -o ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

PowerShell

# IPv6
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz" -OutFile "ipv6_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz"  -OutFile "ipv6_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz"  -OutFile "ipv6_ip_location.sql.gz"

# IPv4
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz" -OutFile "ipv4_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz"  -OutFile "ipv4_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz"  -OutFile "ipv4_ip_location.sql.gz"

Подсказка: загружаемые файлы — архивы .gz. Можно распаковать с помощью gunzip либо обрабатывать как поток напрямую в программе.

Описание форматов

JSON

Массив; каждый элемент содержит ip_from, ip_to, country_code, region, city, latitude, longitude.

[
  {
    "ip_from": "2400:cb00::",
    "ip_to":   "2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff",
    "country_code": "US",
    "region": "California",
    "city": "Los Angeles",
    "latitude": 34.05460,
    "longitude": -118.24400
  }
]
CSV

Первая строка — заголовок; поля с запятыми/кавычками экранированы по RFC 4180.

ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700
SQL

Содержит создание таблицы и пакетные INSERT; подходит для прямого импорта в MySQL.

-- Определение таблицы см. выше
INSERT INTO geoip_ranges
(ip_from, ip_to, country_code, region, city, latitude, longitude) VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);

Как использовать (быстрый старт)

  1. Выберите и скачайте по потребности файлы IPv6 или IPv4 в форматах JSON / CSV / SQL.
  2. Распакуйте и импортируйте в СУБД (или разбирайте напрямую в приложении).
  3. Реализуйте стратегии распределения и комплаенса по стране/региону/городу или координатам; можно учитывать расстояние для близлежащего размещения (грубая гранулярность).
  4. Настройте периодические задачи (ежедневно/еженедельно) для обновления перезаписью и поддержания актуальности базы.

Дополнительные сведения

  • IPv6 и IPv4 используют одинаковое определение столбцов; различается только покрываемое адресное пространство.
  • Координаты и административные деления дают приближённую геолокацию и не являются точным адресом; соблюдайте требования конфиденциальности и комплаенса.
  • Для высокопроизводительных запросов преобразуйте IPv4 в диапазоны 32-битных целых; для IPv6 используйте префиксные деревья/интервальные деревья или специализированные индексы.