Геолокаіця клієнта

Скрипти для визначення місця перебування клієнта за допомогою технології IP-геолокації та зворотного виклику в Інтернеті, які обробляють запити на основі IP-адреси. Огляд можливих сервісів.

    База MaxMind GeoLite

    Title Data Key->Value
    Continent Name North America $ipdat->geoplugin_continentName
    Country Name United States $ipdat->geoplugin_countryName
    City Columbus $ipdat->geoplugin_city
    Latitude 39.9625 $ipdat->geoplugin_latitude
    Longitude -83.0061 $ipdat->geoplugin_longitude
    Currency Symbol $ $ipdat->geoplugin_currencySymbol
    Currency Code USD $ipdat->geoplugin_currencyCode
    Timezone America/New_York $ipdat->geoplugin_timezone

    Публічний IP: 3.144.86.38 Дані отримані з онлайн-сервісу geoPlugin на основі відповіді клієнта. Цей скрипт включає базу GeoLite2, створену компанією MaxMind. Оскільки сервіс безплатний, то він не віддає параметр City, хоча для публічних проксі або VPN і TOR, назва міста (містечка) може й відбиватися.

    Окремого визначення IP в цьому випадку не потрібно, а достатньо звернення до бази даних тому, що geoPlugin сам знайде адресу, з якої прийшов виклик.

    База IP-api, зворотний виклик

    Інколи, необхідно виконати зворотний виклик іншим сервером та уже від нього отримати реальну (за виключенням приватної) адресу респондента. При цьому, підключення через VPN або TOR не завадить знайти місце положення його входу у мережу.

    UkraineKyiv50.4398,30.5156Europe/Kievip 193.201.217.70I-lan LLC

    Дані про користувача IP 193.201.217.70 були отримані на безплатному онлайн-сервісі ip-api.com, а зворотний виклик клієнта здійснений через сервіс ipify.org. Слід пам'ятати, що IP буде отримано від роутера, або маршрутизатора, які першими зреагували на зовнішній запит. Для порівняння нашого прикладу за означеним IP, перейдіть до відповіді на нього зі строннього сервісу.

    Сервіс IP-api теж безплатний і лише з обмеженням до 45 запитів на хвилину. Формати відповіді (Response Formats) можливі у JSON, XML, CSV, Newline, або PHP, як в прикладі вище. Однак, бажано користуватися запитом JSON, з тої причини, що майже всі PHP-сайти тепер підтримують json_decode(), і це швидше, ніж unserialize()

    JSON Full Data
    DataKey->Value
    success$data->status
    Ukraine$data->country
    UA$data->countryCode
    30$data->region
    Kyiv City$data->regionName
    Kyiv$data->city
    01010$data->zip
    50.4398$data->lat
    30.5156$data->lon
    Europe/Kiev$data->timezone
    I-lan LLC$data->isp
    I-LAN$data->org
    AS43312 I-LAN LLC$data->as
    193.201.217.70$data->query

    Приклад скрипта PHP для виклику повного лістингу з бази даних ip-api.com у форматі JSON приведений нижче. За потреби $ip_address можна винайти й інший спосіб, який відповідає вашим задачам, наприклад через змінну $_SERVER['REMOTE_ADDR']