База данных геолокации 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);
Как использовать (быстрый старт)
- Выберите и скачайте по потребности файлы IPv6 или IPv4 в форматах JSON / CSV / SQL.
- Распакуйте и импортируйте в СУБД (или разбирайте напрямую в приложении).
- Реализуйте стратегии распределения и комплаенса по стране/региону/городу или координатам; можно учитывать расстояние для близлежащего размещения (грубая гранулярность).
- Настройте периодические задачи (ежедневно/еженедельно) для обновления перезаписью и поддержания актуальности базы.
Дополнительные сведения
- IPv6 и IPv4 используют одинаковое определение столбцов; различается только покрываемое адресное пространство.
- Координаты и административные деления дают приближённую геолокацию и не являются точным адресом; соблюдайте требования конфиденциальности и комплаенса.
- Для высокопроизводительных запросов преобразуйте IPv4 в диапазоны 32-битных целых; для IPv6 используйте префиксные деревья/интервальные деревья или специализированные индексы.