IP География

    Недавно мне пришлось иметь дело с программой для ведения статистики кликов некой системы обмена объявлений. При щелчке как обычно собиралась информация о клике (на какой странице произошло, во сколько, браузер, ИН объявления и 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 -> город производить после загрузки страницы.

    Это мой первый топик, заранее прощу прощения за ошибки. Надеюсь кому-нибудь пригодится
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 32

      0
      Интересный опыт, но я бы предпочел собственную geoip базу
      Это более надежно (в плане отказоустойчивости и независимости) и в любом случае быстрее

      Хотя всякие сервисы конечно могут добавить свои "фишки" (вроде той же карто-локации)
      Все зависит от задачи
        0
        Кстати стоит почитать на эту тему (+комменты)

        http://feedbee.habrahabr.ru/blog/38991.h…

        http://feedbee.habrahabr.ru/blog/39246.h…
          0
          очень странно что решили не использовать maxmind
          "выборки из таблиц" зачем??
          у них есть вполне себе быстрый собственный оптимизирорванный формат и API которое позволяет выбирать из него с очень большой скоростью ...

          с точки зрения точности maxmind вполне себе не плох
          хотя конечно ему прежде всего не хватает инстурмента редактирования
            0
            с точки зрения точности очень даже плох, ip2city куда более достоверные данные дает, хотя тоже не понравился.
              0
              ip2city - открытая база. если что то можно сообщить об ошибке и данные внесут.
                0
                у меня просто статичтические методы проверки правильности базы были, поэтому не я не могу выдать какие именно адреса неверные.
            +3
            Очорт. Сервер хабра стоит в Кремле я знал

            Сейчас, видимо, прилетит НЛО)
              0
              Geo IP Tool - странный сервис, мало того что определил меня находящемся в Новгороде (вместо Нижнего Новгорода), но и при этом в Приморском регионе! пос. Посьет, т.е. флажок местонахождения там нарисовал.

              Country: Russian Federation russian federation
              Country code: RU (RUS)
              Region: Primor'ye
              City: Novgorod
                0
                А меня отправил в Смоленск в город Анохина :-)
                  0
                  У меня есть опыт использования базы с сайта ipgeobase.ru
                  Могу сказать, что как минимум с российскими адресами все ок.
                    0
                    да, забыл сказать: распространяется эта база бесплатно.
                    0
                    Как-то Вы не учли базу CNGeoip
                      0
                      этот сервис мою страну угадал верно, но вот карту вывел США :)
                        0
                        А где он карту выводит? Там только название и координаты. Напишите сообщение - разберемся что неверно определяет.
                          0
                          координаты: /.
                          если кликнуть на этот слэш, то показывает какую-то деревню в США
                            0
                            Спасибо, понял. Исправили. Если координат нет, теперь не показываем. Хотя там еще осталось, что попричесывать. А ведь координаты действительно есть у не у всех - словари у нас не полные еще пока. Кстати, если не видели - можете скачать полную версию геомодуля здесь http://dalv.habrahabr.ru/blog/42645.html
                      +1
                      Я себе в "закладки" внёс вот эту базу http://ipgeo-base.ru/
                      Денег не просит, источник данных - RU-CENTER.
                        0
                        Плохо, что только по России
                        0
                        Врёёёт - офигеть. Из 10 айпи адресов угадал один.
                          0
                          Думаю автору стоило бы сперва сравнить скорость работы своего варианта с maxmind'овской базой.
                          Что-то мне не верится, что выборка, если её хоть маломальски оптимизировать, будет медленнее, чем запрос на внешний сервер и парсинг ответа.
                            0
                            сколько себя помню - пользуюсь browseip.com - можно по ip, можно по именм домена.
                              0
                              Использовать внешний бесплатный сервис это очень не надежно. Лучше иметь базу у себя.

                              МаксМайнд хорошая вещь, в основном им пользуюсь. Бесплатная версия конечно не идеал, но тоже довольно точная. Тем более если вам важная высокая точность и частое обновление, то вы можете пользоваться платной версией, стоит совсем немного.
                                0
                                http://geoiptool.com/ выдал что я в Пензе, а http://www.cn-software.com/ru/cngeoip/ выдал что я в Москве. На самом деле я в С.-Петербурге. :) http://ipgeo-base.ru/ выдал данные верно!
                                  0
                                  http://geoiptool.com/ промах на 37,5 км или пять городов по карте
                                  http://www.cn-software.com/ru/cngeoip/ угадал страну, в которой я нахожусь
                                  http://ipgeo-base.ru/ угадал, в какой стране меня нет
                                    0
                                    Как имеющий отношение к компании производящей CNGeoip - прошу написать в личку, сюда, или на адрес support@ cn-software.com свой IPшник - обязательно разберемся. Как только разберусь как тут публиковать сообщения - дам ссылку на текущую полную версию CNGeoip хабранароду для тестирования.
                                    0
                                    с моим IP http://www.ip2city.ru ошибся всего-то на полстраны :)
                                      0
                                      geoiptool меня не находит вообщe, ip2city отправил в москву, ipgeo-base единственный попал точно.
                                        0
                                        Вот где лежит обещанная ссылка на полную версию CNGeoip с некоторыми пояснениями, что, зачем и почему http://dalv.habrahabr.ru/blog/42645.html
                                          0
                                          Ну надо же.
                                          Оказывается моим творением (http://www.ip2city.ru/) кто-то пользуется.
                                          А я его уже похоронил давно.

                                          Немножко о проекте:
                                          Первоначальное наполнение ip2city.ru было собрано из открытых источников.
                                          После чего проект пошел в совершенно независимое плавание — он пополняется по запросам пользователей. Т.е. если у базы спросили IP, а она про него ничего не знает, то спрашиваем в WhoIs и пытаемся от туда выдернуть данные.

                                          В виду того, что данные в WhoIs для русского сегмента не структурированы да и к тому же они меняются информация в БД постепенно теряет свою актуальность.

                                          В связи со всем вышеперчисленным, тех кто пользуется данным сервисом и хочет поучавствовать в его улучшении, просьба связаться со мной (в личку или на ip2city@laconix.net), я дам доступ в админку через которую можно модерировать данные.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              0
                                              Не работает уже давно — отключено так как хостеры жаловались на большую нагрузку :-(
                                              • НЛО прилетело и опубликовало эту надпись здесь

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое