Конвертация геоданных из MaxMind и IP2Location
Скопировано

13 октября 2026

ID 233259

Конвертация геоданных из MaxMind и IP2Location

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

В KUMA можно использовать геоданные, полученные из MaxMind, IP2Location, а также совместимые с ними по формату. Перед использованием архивы с файлами геоданных в формате CSV требуется конвертировать в поддерживаемый решением формат. Наименование конвертируемых CSV-файлов внутри архивов должно соответствовать шаблонам:

  • (GeoIP2|GeoLite2|RU-GeoIP)-(City|Country)-Blocks-IPv(4|6).csv
  • (GeoIP2|GeoLite2|RU-GeoIP)-(City|Country)-Locations-%s.csv

CSV-файлы с геоданными не должны содержать дублирующихся записей. Например, если в файле мало столбцов, в разные записи могут попадать данные одной и той же сети с теми же геоданными и такой файл конвертировать не удастся. Для успешной конвертации нужно проверить, что дублирующиеся строки отсутствуют и все строки уникальны по какому-либо полю.

Конвертацию можно произвести с помощью скрипта, который можно скачать по ссылке:

Скачать скрипт

Для запуска скрипта требуется Python 2.7 или выше.

Команда запуска скрипта

python converter.py --type <geographic_data_type> --out <directory> --input <path>

где:

<geographic_data_type> – тип обрабатываемых геоданных: ("maxmind" или "ip2location");

<directory> – директория, в которую будет помещен CSV-файл с геоданными в формате KUMA;

<path> – путь к ZIP-архиву с геоданными из MaxMind или IP2location.

При запуске скрипта с флагом --help отображается справка по доступным параметрам запуска скрипта:

python converter.py --help

Команда для конвертации файла с российской базой диапазонов IP-адресов из ZIP-архива MaxMind

python converter.py --type maxmind --lang ru --input MaxMind.zip --out geoip_maxmind_ru.csv

Без указания параметра --lang скрипт по умолчанию получает информацию из файла GeoLite2-City-Locations-en.csv из ZIP-архива. Отсутствие параметра --lang для MaxMind равнозначно команде:

python converter.py --type maxmind --input MaxMind.zip --out geoip_maxmind.csv

Команда для конвертации файла из ZIP-архива IP2Location

python converter.py --type ip2location --input IP2LOCATION-LITE-DB11.CSV.ZIP --out geoip_ip2location.csv

Команда для конвертации файла из нескольких ZIP-архивов IP2Location

python converter.py --type ip2location --input IP2LOCATION-LITE-DB11.CSV.ZIP IP2LOCATION-LITE-DB11.IPV6.CSV.ZIP --out geoip_ip2location_ipv4_ipv6.csv

Параметр --lang для IP2Location не используется.

Обязательные наборы полей

Исходные файлы MaxMind GeoLite2-City-Blocks-IPv4.csv и GeoLite2-City-Blocks-IPv6.csv должны содержать следующий набор полей: network, geoname_id, registered_country_geoname_id, represented_country_geoname_id, is_anonymous_proxy, is_satellite_provider, postal_code, latitude, longitude, accuracy_radius

Пример набора исходных данных

network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,

is_anonymous_proxy,is_satellite_provider,postal_code,latitude,longitude,accuracy_radius

1.0.0.0/24,2077456,2077456,,0,0,,-33.4940,143.2104,1000

1.0.1.0/24,1814991,1814991,,0,0,,34.7732,113.7220,1000

Остальные CSV-файлы с кодом локализации должны содержать следующий набор полей: geoname_id, locale_code, continent_code, continent_name, country_iso_code, country_name, subdivision_1_iso_code, subdivision_1_name, subdivision_2_iso_code, subdivision_2_name, city_name, metro_code, time_zone, is_in_european_union

Пример набора исходных данных

geoname_id,locale_code,continent_code,continent_name,country_iso_code,country_name,
subdivision_1_iso_code,subdivision_1_name,subdivision_2_iso_code,subdivision_2_name,
city_name,metro_code,time_zone,is_in_european_union

1392,de,AS,Asien,IR,Iran,02,Mazandaran,,,,,Asia/Tehran,0

7240,de,AS,Asien,IR,Iran,28,Nord-Chorasan,,,,,Asia/Tehran,0

Исходные файлы IP2Location должны содержать данные о диапазонах сетей: Country, Region, City, Latitude, Longitude.

Пример набора исходных данных

"0","16777215","-","-","-","-","0.000000","0.000000","-","-"

"16777216","16777471","US","United States of America","California","Los Angeles","34.052230","-118.243680","90001","-07:00"

"16777472","16778239","CN","China","Fujian","Fuzhou","26.061390","119.306110","350004","+08:00"

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!