Skip to content

atlorium-api/ip-geolocation-api-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API геолокации по IP — страна, город, ASN, детект VPN и прокси

Русский · English

examples license API

Готовые примеры работы с API «Профиль IP» на шести языках: Python, TypeScript (Node.js), Go, Java, C#, PHP. Определить страну и город по IP, получить координаты и часовой пояс, узнать владельца сети (ASN), а в расширенном режиме — обнаружить VPN, прокси, Tor и резидентный прокси и проверить репутацию адреса.

Каждый пример запускается сразу — без регистрации, без ключа, без карты. В коде зашит публичный демо-ключ.

git clone https://github.com/atlorium-api/ip-geolocation-api-client
cd ip-geolocation-api-client/python && pip install -r requirements.txt && python main.py
8.8.8.8
  Местоположение: Челябинск, Курганская область, SG
  Координаты: 4.58673, -87.687 (±104 км)
  Часовой пояс: Europe/Berlin
  Hostname: ксения.макар.info
  Сеть: AS20751 Баранов Сбыт · 32.114.83.0/24 · тип isp

Риск-флагов не обнаружено.
  [i] Часовой пояс: Europe/Berlin — локализуйте время и окно уведомлений
  [i] Страна: SG — язык, валюта и ближайший регион обслуживания
  [i] Координаты приблизительные: радиус ±104 км — не опирайтесь на город
  [i] Контакт для жалоб: abuse@макар.info

Уровень профиля: Extended.

Демо-ключ отвечает правдоподобными моками, а не реальными геоданными — поэтому в примере выше у 8.8.8.8 оказался «Челябинск» и вымышленный провайдер. Так и задумано: интеграцию можно написать и протестировать до оплаты. Подставьте боевой ключ — тот же код начнёт возвращать настоящие данные.


Зачем это нужно

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

Примеры не просто печатают JSON, а применяют данные: в каждом есть функция assessVisitorRisk(), которая по профилю IP выносит вердикт — не скрывает ли посетитель настоящее местоположение (VPN, прокси, Tor, relay), не сидит ли он на резидентном прокси (такие сети покупают ровно ради обхода антифрода), не отмечен ли адрес в базах жалоб и не датацентр ли это вместо домашнего провайдера (тогда за адресом скорее бот, чем человек). Заодно оттуда же берутся часовой пояс и страна — для локализации и выбора региона обслуживания.

Быстрый старт за 60 секунд

Проверить API вообще без клонирования:

curl -H "Authorization: Bearer ak_sandbox_demo_mockdata_v1" \
     "https://atlorium.com/api/ipinfo/8.8.8.8?extended=true"
Язык Запуск Требуется
Python pip install -r requirements.txt && python main.py Python 3.10+
TypeScript / Node.js npm install && npm start Node.js 20+
Go go run . Go 1.22+
Java java Main.java JDK 17+ (без зависимостей)
C# dotnet run .NET 8+
PHP php main.php PHP 8.1+

Передать свой IP аргументом: python main.py 1.1.1.1

Аутентификация

Ключ передаётся в заголовке Authorization:

Authorization: Bearer ВАШ_КЛЮЧ
Ключ Что делает
ak_sandbox_demo_mockdata_v1 Демо-ключ. Публичный, один на всех. Возвращает моки, денег не списывает, регистрации не требует. Ответы детерминированы — на них можно писать стабильные тесты.
Боевой ключ Реальные геоданные. Получить в личном кабинете: atlorium.com

Переход на боевой ключ не требует правок в коде — все примеры читают переменную окружения:

export ATLORIUM_API_KEY="ak_ваш_боевой_ключ"

Каждый ответ песочницы помечен заголовком X-Atlorium-Sandbox: true — перепутать мок с реальными данными невозможно.

Эндпоинты

Базовый адрес: https://atlorium.com

Метод Путь Назначение
GET /api/ipinfo/{ip} Профиль IP-адреса: геолокация, а при extended=true — ASN, признаки анонимизации и репутация

GET /api/ipinfo/{ip}

Параметр Где Тип Описание
ip путь string IPv4 или IPv6. Например, 8.8.8.8 или 2606:4700:4700::1111. Приватные и зарезервированные диапазоны отклоняются с 400
extended query bool Расширенный профиль: владелец сети (ASN/организация), hostname, признаки анонимизации (VPN, прокси, Tor, relay, резидентный прокси), контакт для жалоб, отметка о репутации. По умолчанию false. Тарифицируется отдельно и отвечает медленнее

Поля ответа

Поле Тип Что содержит
ip string Адрес, по которому построен профиль
tier string Basic — только геолокация; Extended — полный профиль
isBogon bool Признак риска. Адрес не маршрутизируется в публичном интернете (подделанный или внутренний)
hostname string Обратная DNS-запись адреса (при extended=true)
geo object Геолокация — см. таблицу ниже
asn object Владелец сети (при extended=true): { asn, name, domain, route, type, rpkiValid }. typeisp, hosting, business, education, government
company object Организация, за которой закреплён адрес: { name, domain, route, type }
flags object Характеристики сети: { isAnonymous, isAnycast, isHosting, isMobile, isSatellite }
carrier object Мобильный оператор для адресов сотовых сетей: { name, mcc, mnc }
privacy object Признаки анонимизации — см. таблицу ниже
abuse object Контакт для жалоб: { name, email, phone, address, country, network }
hostedDomains object Сколько доменов размещено на адресе: { total }
abuseReports object Репутация адреса: { flagged, detailsUrl } — фигурирует ли IP в базах жалоб

geo

Поле Тип Что содержит
city / region / regionCode string Город и регион
country / countryCode string Страна и её код по ISO 3166-1 alpha-2
continent / continentCode string Континент
latitude / longitude number Координаты — центр области, а не точка нахождения устройства
accuracyRadiusKm int Радиус, в пределах которого координаты можно считать верными
postal string Почтовый индекс
timezone string Часовой пояс в формате IANA, например Europe/Moscow
dmaCode / geonameId string Коды справочников GeoNames и DMA

privacy (только при extended=true)

Поле Тип Что содержит
isVpn bool Адрес принадлежит VPN-сервису
isProxy bool Открытый или коммерческий прокси
isTor bool Выходной узел сети Tor
isRelay bool Приватный relay (iCloud Private Relay и подобные)
isHosting bool Датацентр, а не домашний провайдер
isResidentialProxy bool Самый весомый флаг фрода. Чужой домашний IP, перепроданный как «чистый»
serviceName string Имя сервиса-анонимайзера, если он опознан
lastSeen / percentDaysSeen string / int Когда и как часто адрес наблюдался в этой роли

Обработка ошибок

Код Причина Что делать
400 Неверный IP-адрес Проверьте формат. Приватные (192.168.0.0/16, 10.0.0.0/8) и зарезервированные диапазоны не принимаются
401 Ключ отсутствует, просрочен или недействителен Проверьте заголовок Authorization
402 Недостаточно кредитов на балансе Пополнить на atlorium.com
404 Профиль для адреса не найден Адрес корректен, но данных по нему нет
429 Превышен rate-limit Повторить с задержкой
503 Источник геоданных временно недоступен Повторить позже. За сбой на нашей стороне деньги не списываются

Во всех шести примерах коды разложены в человекочитаемые причины — смотрите класс AtloriumError.

Цены и лимиты

Оплата pay-as-you-go, без подписки: платите только за выполненные запросы. Расширенный профиль (extended=true) тарифицируется отдельно от базового.

Актуальные цены и лимиты: atlorium.com/pricing

Частые вопросы

Насколько точна геолокация по IP? Это оценка, а не координаты устройства. Ответ честно отдаёт accuracyRadiusKm — радиус достоверности; в примере выше он равен 104 км, и опираться на «город» в таком случае нельзя. Страна определяется надёжно почти всегда, регион — обычно, конкретный город — далеко не всегда. Для экстренных служб и юридически значимых решений IP-геолокация не годится.

Детект VPN и прокси работает на 100 %? Нет, и никто такого не даёт. Новые VPN-сети и свежие прокси попадают в базы с задержкой, а isVpn = true сам по себе не означает мошенника: люди пользуются VPN и по совершенно законным причинам. Правильное применение — не блокировка по одному флагу, а повышение веса риска в общем скоринге, как в assessVisitorRisk().

Чем это отличается от бесплатных сервисов вроде «узнать свой IP»? Бесплатные обычно дают только страну и город. Здесь в одном ответе — геолокация, владелец сети (ASN и его тип), обратная DNS-запись, признаки анонимизации, контакт для жалоб и отметка о репутации, то есть ровно то, из чего собирается антифрод-правило.

Обязательна ли регистрация, чтобы попробовать? Нет. Демо-ключ публичный и работает без аккаунта — но возвращает моки, а не реальные данные.

Что даёт extended=true? Всё, кроме базовой геолокации: asn, company, hostname, flags, privacy, abuse, abuseReports. Без него оценивать риск нечем — поэтому во всех шести примерах assessVisitorRisk() вызывается именно с расширенным профилем. Тарифицируется отдельно.

Поддерживается ли IPv6? Да, эндпоинт принимает и IPv4, и IPv6 — например, 2606:4700:4700::1111.

Можно ли отдать в API адрес из X-Forwarded-For? Да, но проверяйте флаг isBogon: если клиент подставил в заголовок приватный или зарезервированный адрес, профиль это покажет.

Другие API Atlorium

Оценка риска редко упирается в один IP. Из того же аккаунта и тем же ключом доступны:

Полный каталог — atlorium.com

Ссылки

Лицензия

MIT — берите код и используйте как хотите, в том числе в коммерческих проектах.

About

API геолокации IP: страна, город, координаты, часовой пояс, ASN, детект VPN, прокси и Tor. Примеры на Python, TypeScript, Go, Java, C#, PHP. IP geolocation and VPN detection API client.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors