Я хочу получить информацию о городе, штате и стране посетителя с его IP-адреса, чтобы я мог настроить свою веб-страницу в соответствии с их местоположением. Есть ли хороший и надежный способ сделать это в PHP? Я использую JavaScript для сценариев на стороне клиента, PHP для сценариев на стороне сервера и MySQL для базы данных.
php
geolocation
ip
geoip
Бен Доулинг
источник
источник
Ответы:
Вы можете загрузить бесплатную базу данных GeoIP и найти IP-адрес локально, или вы можете использовать стороннюю службу и выполнить удаленный поиск. Это более простой вариант, так как он не требует настройки, но вносит дополнительную задержку.
Один сторонний сервис, который вы можете использовать, мой, http://ipinfo.io . Они предоставляют имя хоста, геолокацию, владельца сети и дополнительную информацию, например:
Вот пример PHP:
Вы также можете использовать его на стороне клиента. Вот простой пример jQuery:
источник
null
название моего города. Это не маленький город или что-то в этом роде, но он все равно не может его найти. Если это не работает в пределах США, я сомневаюсь, как часто это будет также возвращать ноль за пределами США.Мысль я бы опубликовал, так как никто, похоже, не предоставил информацию об этом конкретном API, но он возвращает именно то, что мне нужно, и вы можете получить его в нескольких форматах
json, xml and csv
.Это даст вам все, что вы, возможно, захотите:
источник
Чистый пример Javascript, использующий сервисы https://geolocation-db.com. Они предоставляют решение обратного вызова JSON и JSONP.
Не требуется jQuery!
источник
https://geoilocation-db.com
API?Используя Google APIS:
источник
The geolocation functionality in the Loader hasn't been retired, per se. We stopped documenting it several years ago and have recommended the HTML-based solutions due to their improved accuracy, but the functionality itself has not been removed from the Loader at this time.
code.google.com/p/google-ajax-apis/issues/detail?id=586Вам нужно использовать внешний сервис ... такой как http://www.hostip.info/ если вы выполните поиск в Google по запросу "geo-ip", вы можете получить больше результатов.
API Host-IP основан на HTTP, поэтому вы можете использовать его на PHP или JavaScript в зависимости от ваших потребностей.
источник
Я написал бота с помощью API из ipapi.co , вот как вы можете получить местоположение для IP-адреса (например
1.2.3.4
) вphp
:Установить заголовок:
Получить ответ JSON
получить конкретное поле (страна, часовой пояс и т. д.)
источник
Этот вопрос защищен, что я понимаю. Тем не менее, я не вижу ответа здесь, я вижу, что многие люди показывают, что они придумали, имея один и тот же вопрос.
В настоящее время существует пять региональных интернет-реестров с различной степенью функциональности, которые служат первым контактным лицом в отношении прав собственности на ИС. Процесс постоянно меняется, поэтому различные службы здесь работают иногда, а в другое - нет.
Кто является (очевидно) древним протоколом TCP, однако - изначально он работал путем подключения к порту 43, что затрудняет его маршрутизацию через арендованные соединения, через брандмауэры ... и т. Д.
На данный момент - большинство Who Is делают через RESTful HTTP и ARIN, RIPE и APNIC имеют RESTful-сервисы, которые работают. LACNIC возвращает 503, и AfriNIC, по-видимому, не имеет такого API. (Однако у всех есть онлайн-сервисы.)
Это даст вам - адрес зарегистрированного владельца IP, но - не местоположение вашего клиента - вы должны получить его от них, а также - вы должны попросить его. Кроме того, прокси-серверы - это наименьшее беспокойство при проверке IP-адреса, который, по вашему мнению, является отправителем.
Люди не ценят идею о том, что их отслеживают, поэтому, по моим мыслям, получите это от вашего клиента напрямую и с их разрешения и ожидайте, что многие откажутся от этой идеи.
источник
Посмотрите на API от hostip.info - он предоставляет много информации.
Пример в PHP:
Если вы доверяете hostip.info, похоже, это очень полезный API.
источник
Служба в ответе Бен Даулинга изменилась, так что теперь все стало проще. Чтобы найти местоположение, просто сделайте:
Координаты возвращаются в одной строке, например, '31, -80 ', поэтому оттуда вы просто:
источник
Предполагая, что вы хотите сделать это самостоятельно и не полагаться на других провайдеров, IP2Nation предоставляет базу данных MySQL сопоставлений, которые обновляются по мере того, как региональные реестры меняют ситуацию.
источник
Я запускаю сервис на IPLocate.io , который вы можете подключить бесплатно одним простым вызовом:
$res
Объект будет содержать ваши геолокации поля , какcountry
,city
и т.д.Проверьте документы для получения дополнительной информации.
источник
Мне нравится бесплатный GeoLite City от Maxmind, который работает для большинства приложений и из которого вы можете перейти на платную версию, если она недостаточно точна. Существует PHP API включен, а также для других языков. И если вы используете Lighttpd в качестве веб-сервера, вы можете даже использовать модуль для получения информации в переменной SERVER для каждого посетителя, если это то, что вам нужно.
Я должен добавить, что есть также бесплатная Geolite Country (которая будет быстрее, если вам не нужно точно указывать город, из которого исходит IP) и Geolite ASN (если вы хотите знать, кому принадлежит IP), и что в конечном итоге все это загружается на ваш собственный сервер, обновляется каждый месяц и довольно быстро выполняет поиск с помощью предоставленных API, поскольку в них указано «тысячи поисков в секунду».
источник
У PHP есть расширение для этого.
С PHP.net:
Например:
источник
Ipdata.co - это быстрый высокодоступный API-интерфейс для определения географического местоположения с надежной производительностью.
Это чрезвычайно масштабируемая система с 10 конечными точками по всему миру, каждая из которых способна обрабатывать> 10 000 запросов в секунду!
В php
Вот пример на стороне клиента, показывающий, как вы получите страну, регион и город;
Отказ от ответственности;
Я построил сервис.
Для примеров на нескольких языках см. Документы
Также посмотрите этот подробный анализ лучших API геолокации IP.
источник
В случае, если кто-то наткнется на эту тему, вот другое решение. На timezoneapi.io вы можете запросить IP-адрес и получить взамен несколько объектов (я создал сервис). Он был создан потому, что мне нужно было узнать, в каком часовом поясе находятся мои пользователи, где в мире и в какое время он сейчас.
В PHP - возвращает местоположение, часовой пояс и дату / время:
Используя jQuery:
источник
Ниже приведена измененная версия фрагмента, который я обнаружил и использует http://ipinfodb.com/ip_locator.php. для получения информации. Имейте в виду, что вы также можете подать заявку на ключ API и использовать API напрямую, чтобы получить предоставленную информацию по своему усмотрению.
отрывок
Использовать
источник
Если вам нужно узнать местоположение с IP-адреса, вы можете использовать надежный гео-IP-сервис, вы можете получить более подробную информацию здесь . Он поддерживает IPv6.
В качестве бонуса он позволяет проверить, является ли ip адрес узлом tor, публичным прокси или спамером.
Вы можете использовать JavaScript или PHP, как показано ниже.
Код Javascript:
Код php:
Вывод:
источник
Я создал обертку для ipinfo.io . Вы можете установить его с помощью композитора.
Вы можете использовать это следующим образом:
источник
Вы также можете воспользоваться услугой «smart-ip»:
источник
Я провел несколько тестов со службами IP-адресов, и вот несколько способов сделать это самому. Во-первых, куча ссылок на полезные веб-сайты, которые я использую:
https://db-ip.com/db Имеет бесплатный сервис ip-lookup и имеет несколько бесплатных csv-файлов, которые вы можете скачать. При этом используется бесплатный ключ API, прикрепленный к вашей электронной почте. Он ограничивает 2000 запросов в день.
http://ipinfo.io/ Бесплатный сервис ip-lookup без PHP-функций API-ключа:
В итоге вы получите что-то вроде этого:
http://www.geoplugin.com/ Немного старше, но этот сервис дает вам кучу дополнительной полезной информации, такой как валюта страны, код континента, долгота и многое другое.
http://lite.ip2location.com/database-ip-country-region-city-latitude-longitude Предлагает несколько загружаемых файлов с инструкциями по их импорту в вашу базу данных. Если у вас есть один из этих файлов в вашей базе данных, вы можете выбрать данные довольно легко.
Используйте функцию php ip2long (); превратить IP-адрес в числовое значение. Например, 1.1.1.1 становится 16843009. Это позволяет сканировать диапазоны IP-адресов, предоставленные вам файлом базы данных.
Таким образом, чтобы выяснить, где 1.1.1.1 принадлежит всему, что мы делаем, запустим этот запрос:
Это возвращает эти данные в качестве примера.
источник
Существует два широких подхода к выполнению геолокации IP: один - загрузить набор данных, разместить его в своей инфраструктуре и поддерживать его в актуальном состоянии. Это требует времени и усилий, особенно если вам необходимо поддерживать большое количество запросов. Другое решение состоит в том, чтобы использовать существующий сервис API, который управляет всей работой за вас и многое другое.
Существует много сервисов API Geolocation: Maxmind, Ip2location, Ipstack, IpInfo и т. Д. Недавно компания, в которой я работаю, перешла на Ipregistry ( https://ipregistry.co ), и я участвовал в процессе принятия решений и реализации. Вот некоторые элементы, которые вы должны учитывать при поиске API геолокации IP:
Вот пример, чтобы получить информацию о геолокации IP (но также информацию об угрозе и пользовательском агенте, используя один вызов):
Примечание: я здесь не для того, чтобы рекламировать Ipregistry и сказать, что это лучшее, но я потратил много времени на анализ существующих решений, и их решение действительно многообещающе.
источник
Если вы ищете обновленную / точную базу данных, я рекомендую использовать ее здесь, потому что она показывала мое точное местоположение, которое не было включено во многие другие службы, когда я тестировал.
(Мой город был,
Rasht
и моя страна былаIran
с этим IP-адресом:2.187.21.235
когда я тестировал.)Я рекомендую использовать базу данных, а не методы API, потому что она будет обрабатываться намного быстрее локально.
источник
Хорошо, ребята, спасибо за ваши предложения; Несмотря на то, что у меня есть 6k + IP-адресов, некоторые службы не смогли выполнить мои запросы из-за некоторых ограничений; Таким образом, вы можете использовать их все в резервном режиме;
Если у нас есть исходный файл в следующем формате:
чем вы могли бы использовать эту простую команду примера (PoC) для Yii:
Это какой-то дерьмовый код, но он работает. использование:
Не стесняйтесь использовать, модифицировать и делать это лучше)
источник