Пользователь
0,0
рейтинг
1 января 2012 в 11:25

Разработка → База GeoIP – страны и города, декабрь 2011

Вышла в свет обновленная версия русскоязычной базы данных стран и городов. Основное изменение — удалено большое количество дублей городов.

База распространяется в двух модификациях: «Страны и города» (23Mb, после установки ~130Mb)  и «Только страны» 2Mb, после установки ~12Mb). Также в архивах находится небольшой пример использования базы данных на php.

Точность определения страны ~99%, точность определения городов в среднем ~95%.  Много это или мало – зависит от задач, которые собираетесь решать с помощью этой базы.

Тестовое демо – определение вашей страны и города по IP-адресу

Рабочее демо — подстановка города в форме поиска авиабилетов

Для установки базы рекомендую воспользоваться программами типа mysqldumper или через ssh выполнить
mysql –p –uюзер база_данных < файл.sql

«Скрипт обновления» (~300Kb, после установки ~1Mb) адаптирован только для текущей версии базы (декабрь 2011), обновить с его помощью прежние версии невозможно. Для обновления базы импортируйте файл geo_update_2011_12.sql (содержит две технические таблицы), скачайте свежие архивы с maxmind и ipgeobase и запустите из консоли update_maxmind.php и update_ru.php. Обновление базы городов maxmind выполняется 20-30 минут.

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

В справочнике городов возможны ошибки (в том числе дубли).

В базе «Только страны» есть блоки IP только европейских стран (из ipgeobase, таблица net_euro) и стран всего мира (в том числе европейских, из maxmind, таблица net_country_ip). Теоретически европейские страны должны точнее определяться по первому варианту, но практической проверки не было.

Идеи по усовершенствованию и повышению качества базы приветствуются.

Если при тестировании демо вы обнаружили ошибку — сообщите проверяемый IP-адрес.

Немного статистики


В текущей версии базы 87,501 населенных пунктов.

Количество населенных пунктов по разным странам:
Страна Количество
США 28,991
Германия 16,264
Австралия 4,871
Франция 4,613
Испания 3,253
Канада 3,074
Бразилия 2,926
Российская Федерация 2,301
Швейцария 1,831
Мексика 1,572
Португалия 1,349
Ирландия 1,269
Аргентина 1,189
Япония 851
Польша 712
Италия 699
Болгария 659
Великобритания 652
Колумбия 540
Украина 531
Бельгия 447
Китай 401
Люксембург 387
Индия 365
Австрия 346
Турция 306
Сербия 293
Южно-Африканская Республика 292
Чили 281
Венгрия 269
Казахстан 266
Новая Зеландия 262
Чехия 216
Румыния 215
Алжир 190
Хорватия 170
Венесуэла 144
Беларусь 138
Молдова 129
Греция 128
Перу 126
Литва 115
Эстония 115
Швеция 113
Республика Корея 112
Гватемала 108
Филиппины 101
Израиль 99
Латвия 93
Сальвадор 92
Нидерланды 88
Иран 87
Пуэрто Рико 82
Эквадор 78
Доминиканская республика 75
Коста-Рика 74
Марокко 73
Словакия 70
Индонезия 69
Пакистан 67
Гондурас 66
Тринидад и Тобаго 63
Маврикий 61
Финляндия 59
Босния и Герцеговина 59
Уругвай 52
Нигерия 52
Македония 51
Египет 50
Ямайка 50
Панама 49
Тунис 48
Парагвай 47
Кот-д'Ивуар 45
Армения 44
Никарагуа 40
Вьетнам 38
Барбадос 38
Словения 37
Малайзия 37
Узбекистан 34
Ирак 31

В остальных странах менее 30 населенных пунктов.

Добавлено:
Исправлена ошибка в определении некоторых российских и украинских городов.
@netload
карма
65,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (70)

  • 0
    Привет!
    А если чел подключен с мобильника? Его IP будет правильно привязан к городу?
    • 0
      Не будет, если отъехать от места регистрации провайдерской сетки IP.
      У меня на мегафоне нарисовал Санкт-Петербург, например.
    • +3
      У МТС обычно правильно, про других опсосов не знаю.
      + Если человек пользуется мобильной Оперой, то крайний IP будет «польским» или «исландским».
      • 0
        В нашем случае Опера ни при чем. Мы напрямую ходим за контентом из приложения.
        А IP выдается оператором или базовой станцией? То есть, я в Москве с московским адресом, а в Подмосковье? А если я с МТСом подключусь из Италии?
        Кто-то исследовал эти вопросы?
        • +1
          У меня всегда при подключении через МТС определяется Орел (при фактическом нахождении в Липецке и Москве, в частности). Могу предположить, что у них одна точка входа на большой регион или вообще на всю сеть.
          • +1
            Билайн, 3G. Нахожусь в Томске, определяется Санкт-Петербург.
            • +2
              Это проблема всех операторов. У меня при подключении через 3G обычно определяется как Екатеринбург или Санкт-Петербург (вместо Новосибирска). При этом при подключении через GPRS/EDGE все нормально.
      • +1
        Опера мини работает через свое «прокси», просто смотрите заголовок X_FORWARDER_FOR.
    • +1
      Не будет привязан к городу.
      В данном случае IP зависит от GGSN оператора связи.
      • +1
        О! Спасибо. Главное — знать правильное ключевое слово.
        Если по-простому, получается, что все GPRS-юзеры находятся внутри сетки, а внешний адрес выдается оператором из некоего общего пула, не связанного с географией.
  • +3
    Привет!
    Раньше наш Калининград определяло правильно.
    Теперь я в Абу-Даби =(
    • +24
      Мои поздравления! И как впечатления?
      • +25
        Да чё-то всё по-старому =(
    • +2
      Ошибка. Постараюсь вернуть вас домой.
  • +1
    А есть он-лайн сервис на основе этой базы?
    • –1
      netload.biz/ip.php — чем вам не сервис. Элементарный парсер, вот вам и данные.
      • 0
        На этой странице вы можете узнать информацию только о своём IP.
        • 0
          Ступил согласен.
          • 0
            Но при использовании пары костылей всёже можно использовать)
  • +2
    Да что ж вам не спиться то? :) Но спасибо :)
    • +6
      Страна большая, не все живут в дефолт-сити :)
      • +3
        Это да :)) но мало кто вообще во вменяемом состоянии 1 января :)) а тут уже статьи публикуют :))
        думал я один трезвым новый год встретил :)
    • +16
      Особенно оригинально Ваш вопрос звучит именно с мягким знаком…
      • 0
        Возьму на себя смелость, хоть и боюсь пострадать кармой.
        Коллеги!
        Для проверки правильности написания глаголов в русском языке используйте, пожалуйста, проверочный вопрос: что делать? что сделать? и т.п.

        что же делается? — что же Вам не спится?
        что же сделать? — что же Вам не спиться?


        Ну и кстати, Вам всегда надо писать с большой буквы.

        Это русский язык.

        Я без наезда на Украину, Беларусь, Казахстан — понятно, что там перестали учить русскому языку. Вероятно, и в некоторых городах РФ не учат. Но в Санкт-Петербурге-то?
        • +5
          Ну и кстати, вамс большой буквы писать не надо.
          • +1
            Да, Вы правы.
            вамс — с маленькой ;-) (что бы это слово ни значило).
            Я погорячился. Тут мне один товарищч недавно написал: «понимаешь, я пишу вы только тому, кого уважаю». Я понял, что раз человек это пишет мне, то он меня не уважает by default. О чем можно дальше говорить с таким корреспондентом? А если по делу, то вот:

            Писать Вам надо с большой буквы в личном обращении — вот инструкция.

            А инструкциям великих писателей всех времен и народов безоглядно верить не стоит.
            • +3
              > Да что ж вам не спиться то? :) Но спасибо :)

              1) капитан пробежал и подсказал, что обращались к аудитории, а не лично

              2) очень показательно, что среди рекомендаций словарей и справочников нет ни одного года ранее 1998

              3) twitter.com/#!/ImGearHead/status/153465156557475841/photo/1
              • +1
              • –1
                хе-хе: Татьяна пишет Онегину письмо по-французски, так как «она по-русски плохо знала». Это обратный перевод с французского... Но на самом деле еще зависит от года издания книги и редактора издательства.

                Что касается 1998, то это же просто — денег нет на издание апдейтов. Пока их нет, мы должны придерживаться старых протоколов правил. Язык можно сколько угодно коверкать и изменять (можно вообще русский заменить олбанским, феней или матерным), но есть некоторые правила. И законопослушный пользователь/ юзер/ человек вообще-то их должен придерживаться. Не сочтите меня занудой, но просто неприятно читать неграмотно написанные тексты. И это, кстати, еще одна из причин проблем хабра.
                • +1
                  что касается 1998, я сказал ранее, а не позднее. там только свежеисправленные под современную деградацию издания.

                  по части татьяны, перечитайте письмо. ужели вы думаете, что пушкин пытался повторить лексику и орфографию плохо говорящей по-русски девушки? там бы уж точно побольше было ошибок. издание 1986г.
        • +1
          Эх… мне в школе даже по математике ставили 4, потому что считал я всё правильно, но ответы оформлял с орфографическими ошибками :)
          • 0
            Ну, а вот это уже глупость. Основной предмет у тебя был математика. Значит проверять нужно было исключительно математику.

            P.S. А вот Warning на полях можно было бы и написать. Так что ты незаконно страдал я считаю.
            • 0
              Дак мне так и говорили :)) Решено правильно, но ставлю 4… Учи русский :)
        • –1
          Всегда писать «Вам» с большой буквы НЕ надо.
          Не учите тому, в чём не разбираетесь.
    • +1
      Спиться человеку пожелали. Злой вы! :)
  • 0
    За базу спасибо, но скажите чем вам не угодили функции ip2long и long2ip?
    • +1
      На момент сборки первой версии базы я не знал об этих функциях. Сейчас лень править файл примеров.
      Сам использую sprintf("%u", ip2long($ip));
  • +1
    Исправлена ошибка в определении некоторых российских и украинских городов.
    • +2
      Отлично, я снова в Калининграде! Спасибо за базу, давно ей пользуюсь и дальше планирую.
  • +1
    Челябинск:

    Ваш IP-адрес: 46.147.227.22
    Страна: Не определена
    Город: Не определен
    • –1
      Ошибка, исправил.
  • +1
    IP: 78.106.104.XXX определяется как Москва. На самом деле, Ярославль
  • +1
    IP 176.98.7.XXX не определяется. Хотя на многих сайтах узнает откуда.
    Васильков под Киевом, Украина. Можно определять как Киев =)
  • –3
    Бруклин, США.
    Определилось верно.
    74.90.72.xx
  • +1
    Спасибо за базу. А нет ли случаем версии с одной только Россией и ее городами?
    • +1
      Тут посмотрите.
  • +1
    В Украине, провайдер Peoplenet 3G, в Днепропетровской области показывает Киев.
  • +1
    Существует ли возможность запретить определять мой населенный пункт? Я не хочу чтобы вы узнавали откуда я по моему ip. Мне кажется что это мое право. Нечестно, когда в открытом доступе есть базы по которым можно ограничить в правах человека на основе его ip адреса
    • +1
      Возьмите IP не привязанный географически. А какие ваши права нарушаются?

      • 0
        Как добыть список ip не привязанных географически?
        • 0
          Спутниковый интернет, например.
    • +1
      Используйте прокси (vpn, ssh-туннель и т.п.). Вариант «Сделай сам»
  • +1
    Курский IP, белый. Интернет проводной ex-NetByNet (Мегафон). Сервис сказал, что я в Москве.
    • 0
      У нас после перевода ex-Inetera на стандарты НБН по большей части общий пул IP-адресов для Москвы и ЦФО. Из вне никак не различить, откуда вы.
  • 0
    \\Если при тестировании демо вы обнаружили ошибку — сообщите проверяемый IP-адрес.
    \\

    Ваш IP-адрес: 80.21.88.53
    Страна: Италия
    Город: Не определен

    Правильный город: Болонья.
  • 0
    Посмотрел на размеры этой базы и почему-то подумал про скорый приход IPv6. С ними то что делать? Или там нет такого бардака с выдачей блоков адресов?
  • 0
    А для сайтов предназначенных для США можно использовать эту базу?
  • 0
    Я из Херсона. А определило как Киев =)
  • 0
    Я зашел из Сан-Хуана, Пуэрто-Рико, США. Пуэрто-Рико определило, а город (столицу) нет. (
    • 0
      64.213.247.146
  • 0
    Случайно заметил ошибку, не знаю уж, насколько маленькую:

    В таблице NET_CITY:
    id = 36837; country_id = 20; name_ru = Cанкт-Петербург; name_en = Zelenogorsk
  • 0
    id=322882, name_ru = Набережные Челны
    На английском теперь правильное название (полное, вместо Chelny), но теперь потерялся region (пустое значение), должно быть 73 — Татарстан
    Предыдущий id=77694, сейчас он сместился так сильно, из за региона я так полагаю.
    • 0
      Поясните, пожалуйста, почему 73 — это татарстан? У меня так и не получилось найти связь поля region с чем-либо еще.
      • 0
        т.к. в предыдущей версии 73 стояло у всех городов в Татарстане
        Выставлялось видимо на основе баз geonames.org

        download.geonames.org/export/dump/ здесь есть RU.zip (11Mb), формат:
        484048 Respublika Tatarstan ... 55.33333 ... RU RU 73 ... Europe/Moscow ... 2012-01-16
        

        — но я у них еще файл скачивал region.txt, там только локаль-регионы были, формат:
        ...
        RU,48,"Moscow City"
        RU,66,"Saint Petersburg City"
        ...
        RU,73,"Tatarstan"
        ...
        
        • 0
          Ясно, спасибо.
  • 0
    Спасибо! Пользуюсь. Хорошая база.
  • 0
    Спасибо!
    а насколько реально по IP определить координаты? широту и долготу?
  • НЛО прилетело и опубликовало эту надпись здесь

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