Pull to refresh

IP География

Reading time 2 min
Views 14K
Недавно мне пришлось иметь дело с программой для ведения статистики кликов некой системы обмена объявлений. При щелчке как обычно собиралась информация о клике (на какой странице произошло, во сколько, браузер, ИН объявления и IP). В представлении статистики состояла задача — узнать город из которого произошел переход. Раньше я этим не интересовался особо поэтому только сечас у меня началось более глубокое знакомство с GeoIP системами.

Кроме того как это удалось

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

сокращенная база
maxmind.com — сам сайт. там же можно и проверить geoip базу.

Вариант в моем случае отпал — пришлось бы весь список, а он не маленький и делать выборки из таблиц. а через некоторое вермя надо будет обновлять таблицу. вобщем лень заставила меня искать другие пути. пока искал нашел интересный сервис http://geoiptool.com/ который выполняет стандартную операцию любого geoip сервиса, но еще и накладывает на гуглокарту.



Очень забавно. Хабр — тут

В итоге я нашел http://www.ip2city.ru/ — открытую базу IP адресов. На нем я и остановился. Что же выделило его среди других сервисов, так это возможности предоставления данных вида
field1=value1
field2=value2

что вызывается простым get запросом www.ip2city.ru/ip2city.php?ip=ххх.ххх.ххх.ххх

а такие данные достаточно легко принимаются со сторонних серверов и парсятся

$IP = «00.00.00.00»; // или ай-пи откуда угодно (в моем случае из БД)

$lines = file('http://www.ip2city.ru/ip2city.php?ip='.$IP);

$city = trim(str_replace('=','',strstr($lines['0'],'=')));

$country = trim(str_replace('=','',strstr($lines['4'],'=')));

Естественно при такой работе PHP будет долго рисовать страницу, пока не примет все данные с сервера (сам парсинг проходит быстро), так что я бы рекомендовал операцию IP -> город производить после загрузки страницы.

Это мой первый топик, заранее прощу прощения за ошибки. Надеюсь кому-нибудь пригодится
Tags:
Hubs:
+16
Comments 32
Comments Comments 32

Articles