Нужно определить город по IP-адресу в вашем приложении? Это практичный гайд для копирования — плюс оговорки, которые удержат вас от чрезмерного доверия данным о городе.
Самый быстрый способ
Вызовите API IP-геолокации и прочитайте поле city. С detectip.ai:
curl "https://detectip.ai/api/v1/verdict?token=TOKEN" \ -H "X-API-Key: sk_live_..."
Ответ включает country, region, city, приблизительные координаты, часовой пояс и валюту. Получите бесплатный ключ, чтобы попробовать.
В коде
Python
import requests
r = requests.get("https://detectip.ai/api/v1/verdict",
params={"token": token}, headers={"X-API-Key": KEY})
city = r.json().get("city")
JavaScript
const r = await fetch(
"https://detectip.ai/api/v1/verdict?token=" + token,
{ headers: { "X-API-Key": KEY } });
const { city } = await r.json();
Важные оговорки
- Город приблизителен. Мобильные и корпоративные сети могут сильно промахиваться; см. точность простыми словами.
- Проверяйте VPN/прокси. Если IP замаскирован, город бессмыслен — читайте и флаги угроз.
- Не делайте жёсткий гейт по городу. Используйте его для персонализации, а не контроля доступа (для этого — страна).
- Дайте пользователям исправить там, где важна точность, например при доставке.
Серверная сторона против клиентской
Делайте запрос на сервере, чтобы контролировать API-ключ и логировать ответственно. IP посетителя доступен на соединении; у браузера ничего спрашивать не нужно.
FAQ
Почему город иногда неверен? IP идёт через региональный узел, пользователь на VPN, или блок недавно переназначили.
Можно ли получить почтовый индекс? Некоторые тарифы открывают более детальные поля; см. тарифы.