Загрузка баз в формате CSV, JSON И MMDB для интеграции с собственными сервисами.
IP2Country база
Помимо получения подробной информации о конкретном IP-адресе, можно загрузить базу принадлежности IP-адреса к стране в формате JSON, CSV и MMDB.
Пример:# curl -s 'https://ip2api.ru/api/v1/cc?token=ВашТокен&format=json' | bunzip2 > cc.json
При выполнении запроса будет загружен архив с файлом вида: сс.json.bz2, где json – формат полученного файла (также доступны csv и mmdb форматы), а bz2 – метод сжатия, который необходимо разархивировать перед использованием.
Каждая запись полученного файла будет состоять из трех полей (network, cc, country) независимо от выбранного формата.
Пример содержимого файла CSV:
Copied!1.0.0.0/24,AU,Australia 1.0.1.0/24,CN,China 1.0.2.0/23,CN,China ...
Пример содержимого файла в формате JSON:
Copied!{"network":"1.0.0.0/24","cc":"AU","country":"Australia"} {"network":"1.0.1.0/24","cc":"CN","country":"China"} {"network":"1.0.2.0/23","cc":"CN","country":"China"} ...
Интеграция с веб-сервером Nginx
Для интеграции с веб-сервером Nginx можно использовать специально сформированный файл в формате MMDB. Для получения файла выполните команду:
Пример:# curl -s 'https://ip2api.ru/api/v1/cc?token=ВашТокен&format=mmdb' | bzip2 -d > /etc/nginx/snippets/cc.mmdb
При выполнении запроса будет загружен MMDB-файл в каталог /etc/nginx/snippets/. Для проверки целостности полученного файла воспользуйтесь утилитой mmdblookup – стандартной утилитой для работы с MMDB-файлами.
Пример:# mmdblookup --file /etc/nginx/snippets/cc.mmdb --ip 8.8.8.8
Пример ответа:
Copied!{ "cc": "US" "country": "United States" "network": "8.8.0.0/15" }
После проверки целостности файла и корректности получаемых данных необходимо добавить следующую конфигурацию в секцию http:
Copied!geoip2 /etc/nginx/snippets/cc.mmdb { $geoip2_data_cc cc; $geoip2_data_country country; $geoip2_data_network network; }
Если необходимо на основе GeoIP-данных, например, производить блокировку запросов, то дополнительно добавляем в секцию http условие, при котором будут заблокированы запросы от источников с IP-адресом из региона CN:
Copied!map $geoip2_data_cc $allowed_cc { default yes; CN no; }
Также необходимо добавить условие, при котором будет возвращен клиенту код ответа 403:
Copied!if ($allowed_cc = no) { return 403; }