Пользователь
0,0
рейтинг
9 сентября 2013 в 13:08

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Количество населенных пунктов по разным странам:
Страна Количество
США 14,534
Франция 4,957
Германия 4,148
Италия 3,244
Австралия 2,986
Великобритания 2,496
Испания 2,153
Канада 1,701
Российская Федерация 1,284
Австрия 1,045
Бразилия 805
Польша 775
Швейцария 735
Япония 725
Нидерланды 691
Португалия 585
Ирландия 566
Мексика 554
Швеция 530
Чехия 506
Китай 492
Индия 420
Аргентина 396
Бельгия 394
Греция 370
Украина 357
Турция 338
Филиппины 326
Южно-Африканская Республика 311
Болгария 289
Румыния 269
Хорватия 259
Венгрия 258
Новая Зеландия 258
Дания 247
Норвегия 237
Финляндия 216
Колумбия 214
Таиланд 178
Индонезия 171
Словакия 157
Малайзия 138
Чили 133
Словения 119
Коста-Рика 117
Латвия 102
Казахстан 96
Перу 96
Сербия 95
Израиль 95
Венесуэла 94
Республика Корея 85
Эстония 81
Эквадор 79
Люксембург 79
Иран 71
Вьетнам 70
Беларусь 70
Марокко 60
Шри-Ланка 59
Литва 56
Босния и Герцеговина 56
Кипр 53
Пуэрто Рико 52
Нигерия 51
Пакистан 49
Уругвай 49
Тайвань 48
Доминиканская республика 45
Ямайка 42
Алжир 40
Тунис 39
Сальвадор 39
Армения 38
Панама 36
Македония 35
Молдова 34
Маврикий 34
Исландия 34
Гондурас 34
Тринидад и Тобаго 34
Гватемала 33
@netload
карма
65,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

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

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

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

  • 0
    Ваш IP-адрес: 5.129.246.*
    Страна: Российская Федерация
    Город: Новосибирск

    Мимо :(

    Причем по второй ссылке уже выдал Нижневартовск, что ближе к истине, но мимо.
    • 0
      Такая же фигня, оба раза мимо… :(
    • 0
      С дома всё верно определил.
      вспоминается ситуация когда на Utel сидел, ныне RT, в зависимости от фазы луны выдавались адреса, которые были приписаны то Нижневартовску, то Екатеринбургу, то Ханты-Мансийску. Так что вот непонятно, как же определить положение более менее точно, если только использовать LocationAPI как помощник.
  • 0
    удалено…
  • 0
    Мимо.
    Определил, что я в Краснодаре. А я в Анапе.
    • 0
      У Вас Ростелеком? Йота?
      • 0
        Ростелеком
  • +2
    Просьба — пишите об ошибках определения вашего города. Можно без подробностей. Нужна реальная статистика ошибок.
    На данный момент тестовую страницу посетили примерно 1100 человек.
    • 0
      67.175.165.20 River Grove, а не Elmwood Park

      2ip.ru тоже мимо
  • 0
    Ваш IP-адрес: 81.198.14.2**
    Страна: Латвия
    Город: Не определен

    Пару лет назад написал свой «велосипед» для определения местонахождения пользователя с точностью до города, основанный на запросах к двум сервисам — smart-ip.net и 2ip.ru. Насколько могу судить, пока что всё работает.

    P.S. Кстати, 2ip.ru сейчас мой город определил — Daugavpils.
    • 0
      Вы делаете запросы в реальном времени? Какая производительность?
      • 0
        хреновая там производительность. Веб-сервисы в режиме реального времени нет смысла использовать, только двоичные таблицы в конфигах.
      • +1
        Смысл такой: когда пользователь заходит на сайт, проверяется кука. Если куки нет, тогда через AJAX идет запрос к скрипту, который проверяет, есть ли этот IP в базе и сопоставлена ли ему страна и город. Если сопоставление есть, устанавливается кука и вопрос исчерпан. Если же в базе для этой айпишки нет адреса, либо если он определен более 180 дней назад, тогда идет обращение к smart-ip.net и 2ip.ru. Если данные от них удалось получить, тогда запись в базе обновляется и устанавливается кука. Обычно данные получить удается, в противном случае ставится временная кука (на пару часов), которая запрещает повторять попытки проверки IP адреса.
        Ну и периодически просматриваем базу, что-то в ней правим, проверяем вручную. Но в целом работает вполне удовлетворительно.
  • 0
    Тестовое демо попало: Брянск

    Рабочее демо с авиабилетами не угадало: Белгород
    • 0
      Вероятно, в Брянске нет или почти нет регулярных рейсов.
  • 0
    Тестовое демо попало: Николаев
    Рабочее демо выдало соседний Херсон
    • 0
      В системе нет регулярных рейсов в/из Николаев, поэтому подставился Херсон.
  • 0
    Мимо…

    Ваш IP-адрес: 95.79.87.2**
    Страна: Российская Федерация
    Город: Великий Новгород

    А я в Нижнем Новгороде.
  • 0
    Отличное обновление, как раз делаю благотворительный проект и искал актуальный геоип-дамп. Если проект заживет — будем считать что вы тоже приняли участие в благотворительности ;)
  • +3
    Какая лицензия у этой базы?
    • +1
      Диапазоны IP взяты из maxmind и ipgeobase. У maxmind Creative Commons Attribution-ShareAlike 3.0 Unported License, у ipgeobase не вижу лицензию.
  • 0
    ipgeobase, похоже, почил. Последнее обновление 13 августа.
  • +2
    Нда…
    Ваш IP-адрес:79.134.219.2**
    Страна: Эстония
    Город: Санкт-Петербург
    • 0
      Неудобно получилось.
      Санкт-Петербург конечно в России (в таблице ID 32497).
      Наложились 2 ошибки — неверные данные в таблице net_euro и логическая ошибка в скрипте примера. По ipgeobase (таблица net_euro) определилась страна Эстония. По maxmind определился город Санкт-Петербург, но страна осталась Эстонией.
      Скрипт примера поправил. Данные ipgeobase перепроверю к следующей сборке.
  • 0
    Оба демо город определили верно (Улан-Удэ), спасибо за базу!
  • 0
    Ваш IP-адрес: 194.44.171.*
    Страна: Украина
    Город: Львов

    Мимо. Главный офис моего провайдера во Львове. А я километров 200 в стороне.
  • 0
    Бердичев? Симферополь? Так мать городов русских еще никто не попускал.
    Если база не может определить киевский ай-пишник одного из крупнейших провайдеров столицы, то ценность данной базы стремится к нулю.

    P.S. Хорошо еще, что Украину угадали, а не указали Эквадор, как уверяет наша опозиция и их ручные хомячки.
    • 0
      2ip.ru тоже говорит, что мой офис в Бердичеве (хотя дома все определяет правильно — Киев).
      Видимо на нашей проходной таки есть скрытая пространственная чревоточина :)
  • +1
    Года полтора назад сотрудники Билайна Россия (Домашний интернет) говорили, что пул IPшников на всю страну един и привязки к городу нет.
  • 0
    Раз уж пишите
    Идеи по усовершенствованию и повышению качества базы приветствуются.

    Может, сможете добавить региональную разбивку, пожалуйста?
  • 0
    Спасибо

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