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"