Руководство по определению местоположения IP в JavaScript

Получите местоположение одного IP-адреса из браузера или Node.js.

Поиск IP-адреса в JavaScript

Запрос принимает один адрес IPv4 или IPv6 и запрашивает JSON. Замените адрес из примера на тот, который нужно исследовать.

Запрос местоположения одного IP
const ip = '8.8.8.8'; // Replace with an IPv4 or IPv6 address.
const response = await fetch(
  'https://api.ipquery.io/' + encodeURIComponent(ip) + '?format=json',
  { signal: AbortSignal.timeout(8000) }
);
if (!response.ok) throw new Error('IPQuery returned HTTP ' + response.status);
const data = await response.json();
if (data.ip !== ip || !data.location || !data.isp) {
  throw new Error('Unexpected IPQuery response');
}
console.log(data.location.country, data.location.city, data.isp.asn);

Запускайте пример в современном браузере или Node.js с поддержкой fetch и AbortSignal.timeout. Запрос из браузера определяет указанный вами адрес; эндпоинт собственного IP определяет адрес соединения браузера.

Чтение полей местоположения и сети

location.country и location.country_code указывают приблизительную страну. location.city может быть пустым или неточным. isp.asn идентифицирует сеть, которая может не совпадать с человеком или компанией, использующими адрес.

Чтобы получить адрес, с которого выполняется запрос, вызовите https://api.ipquery.io/?format=json. Запрос с сервера возвращает IP, с которого сервер устанавливает соединение; запрос из браузера возвращает видимый извне адрес его соединения.

Все поля ответа

Использование IPQuery в Dashy

Виджет Public IP в Dashy поддерживает IPQuery без ключа API. Добавьте эту запись в список widgets одного из разделов Dashy:

Виджет Public IP в Dashy
- type: public-ip
  options:
    provider: ipquery

Если настройки прокси в Dashy отключены, запрос отправляет браузер, а виджет показывает публичный IP и приблизительное местоположение этого соединения. Установка useProxy: true на верхнем уровне виджета или включение appConfig.widgetsAlwaysUseProxy направляет запрос через сервер Dashy, и вместо IP браузера отображается публичный IP сервера. Установка useProxy: false на верхнем уровне виджета не переопределяет настройку для всей панели.

Виджет использует эндпоинт собственного IP в IPQuery. Чтобы исследовать другой адрес, используйте приведённый выше JavaScript-запрос для одного IP.

Настройки виджета Public IP в Dashy

Точность и безопасность

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

Если приложение читает X-Forwarded-For, доверяйте ему только тогда, когда его передаёт контролируемый вами прокси. Заголовки, переданные клиентом, можно подделать. Проверяйте адреса перед выполнением запросов и обрабатывайте тайм-ауты и ошибки HTTP отдельно от успешного результата.

Справочник API

Доступ к полным спискам.

По вопросам стоимости и доступа к полным спискам напишите на contact@ipquery.io.

Выбранный список
Выбранные записи
Записей в этом списке