Как стать автором
Обновить

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

— для поиска по странам СНГ подключена база geobaza.ru (идея derketzer)

А какая там версия из lite или из полной? И не пробовали ли использовать базы с ipgeobase.ru?
lite
ipgeobase уже используется для поиска по российским диапазонам
В архиве есть пример запросов, логика такая:
1. проверить, является ли ip российским (ipgeobase)
2. если не российский, то проверить по СНГ (geobaza)
3. если не СНГ, то проверить по миру (maxmind)
На перед НГ ipgeobase появилась база по Украине и еще обещали добавить данные по Беларуси и Молдавии, так что можно тоже воспользоваться (ссылка на новость blog.ipgeobase.ru/?p=73).
Данные по Украине лежат отдельным файлов в разделе «Архив», правда с декабря так и не обновлялись.
Не знал. Использую в следующей сборке базы.
НЛО прилетело и опубликовало эту надпись здесь
Круто, в Германии 18,255 населенных пунктов против 3,186 в Росии. Скажите, в Германии на самом деле так много маленьких сел (хуторов)?
Здесь нет прямой связи с количеством городов в стране. В России большинство мелких населенных пунктов по ip до сих пор приписываются к областным центрам. Как видно из статистики, в некоторых странах ситуация лучше.
Ребята, версии меняются, а у меня всё также непопадание примерно в 900 км.
Может имеет смысл позаимствовать другие базы и наработки? Примеры: MaxMind, бесплатный вариант базы стабильно обновляется тут, прикрутить можно через Pygeoip, нарисовать с помощью Matplotlib.
Скажите свой IP
95.135.46.183. И я не во Львове :)
Проделали отличную работу.
А для каких целей, если не секрет, она нужна?
Где её думаете применять?
Как насчет коммерции?
Русская база geoip потребовалась при разработке одного собственного проекта (он ещё не родился, поэтому без подробностей). Коммерческое использование этой базы не планирую.
Спасибо за базу
Украина плохо проработана, но всё равно спасибо.
Могли бы пояснить фразу: «для перевода названий городов использован API Карт Google»?

Я правильно понимаю, есть в базе англоязычное название города. Например «Moscow», с помощью API Карт Google переводится в «Москва»? Если так, то как это было реализовано и на сколько языков таким образом можно перевести город.

Если можно освятите пожалуйста данный вопрос.
Если сделать запрос maps.google.com/maps/geo?q=Moscow&output=json&oe=utf8&sensor=false&key=ВАШ_КЛЮЧ, то Google вернет информацию о городе, в том числе строчку
«address»: «город Москва, Россия»,
Эта строчка пишется на языке из заголовка Accept-Language (ru-ru, en-us и т.д.), либо на английском (если на требуемом языке названия нет, таких получилось ~30%). Таким образом я через curl делал запросы, а потом с json парсил ответы. Теоретически в Accept-Language можно задать любой язык, но будут ли в базе Google названия на этом языке — не знаю.
вместо Accept-Language можно указать дополнительный парметр hl
&hl=en
&hl=ru
Интересно. Где это описано? Тут не вижу.
Я тоже не вижу, но товарищ прав. Недокументированная функциональность? Думаю нужно было подсмотреть как показывается информация на Google картах и тогда бы вопросов не было.



Всем спасибо за наводку!
уж поверьте я этот параметр не выдумал,
здесь обсуждение

вероятно эта особенность плохо задокументирована для API v3 гугло-карт,
для v2 это есть в документации:
«locale specifies the language to use for returning the results, overriding the Maps API hl parameter, if supplied. If neither locale nore an hl parameter is specified, the browser's default language is used»

Случайно не знаете секретный параметр для задания предпочтительного Accuracy? Например, Google по некоторым запросам даёт улицы (8), а мне нужны только города (4)
напишите пример запроса, где в результате будет улица
Например, при обратном геокодировании, когда мне нужно по координатам определить город.
Да, это удобней. Спасибо.
С Украиной точность будет намного ниже заявленных 95% тк. всех пользователей Укртелекома находит в Киеве. Сильно сомневаюсь, что доля рынка этого провайдера менее 6%.
И не говорите. Сколько раз не проверял, всегда в Киеве оказываюсь… ну и то хорошо.
Я в Луганске вечно обитаю (тоже Укртелеком). Ваш сервис — не исключение.
Многим, наверное, будет полезное, если вы сделаете небольшое АПИ с инсталляцией (чтоб люди могли в 3 клика и вызовом 1 метода у себя в скрипте иметь готовое решение)
Хочу уточнить один момент: если какого-то населенного пункта в базе нет — по крайней мере страна будет определена верно? Или будет полный undefine?
Да, страна определяется отдельно и достаточно точно.
У меня еще вот такой вопрос.

В феврале, марте и т.д. выйдет новая версия базы maxmind.
Как вы будет добавить/обновлять/синхронизировать текущую базу с базой maxmind?

Или дальнейшая поддержка БД не планируется.

Я так понимаю провайдеры меняются. Айпи меняются. И что очень редко, названия городов меняются ;)
Планирую делать обновления. Как именно это будет — покажет время.
А как попадают в подобные базы провайдеры?
Какие базы используют youtube, speedtest?
В большинстве своем геобазы используют за основу whois-информацию. Как пример, база ripe-а лежит в открытом доступе, готовая к парсингу: ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz (файлик 150 Мб в архиве и 2.3 Гб распакованный). Более глубокие уточнения можно проводить уже непосредственно с провайдером (позвонить и спросить его диапазоны сетей) или используя косвенную инфу от пользователей: например, если на сайте пользователи из сети a.b.c.d/mask смотрят погоду в Мухосранске чаще, чем в других городах, то сеть наверняка относится к Мухосранску.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Замечание по лицензиям справедливое, учту.

MySQL для меня основная СУБД, но в самой базе нет привязки к платформе. При желании можно портировать базу в PostgreSQL или другую реляционную СУБД.

Для api нужно делать более частые обновления базы, на что у меня нет времени. Если кому-то
это интересно — флаг в руки.
Как выше предлагал gjf может имеет смысл добавить бинарный формат базы и api для популярных языков (perl, php, python,...) — кода будет строчек 20-50 на каждом из языков. Резолв по ней будет в десятки раз быстрее. Это намного универсальние (даже к nginx-у есть модуль для резолва по таким базам), чем mysql и проблема «Не рекомендую устанавливать базу городов на виртуальный хостинг, не выдержит нагрузки.» отпадет сама собой.
Я (пока) слабо знаком с perl и python, но если заставить php часто дергать огромный файл, то это создаст серьезную нагрузку на хостинг, даже больше, чем mysql
Если у кого-то будет желание перевести базу в бинарный формат и написать код на популярных языках — не возражаю и постараюсь помочь. Но сам я не смогу этого сделать.
Так большой файл не надо весь читать. Открыть файл, перейти на позицию N1, считать пару байт, перейти на позицию N2, считать пару байт,..., закрыть. Или воспользовать mmap-ом. В общем это быстрее БД. Потестил сейчас лежащую под рукой такую реализую геобазы: выдала 100 тысяч запросов в секунду (и это только на одном ядре в один поток).
А у вас там коды регионов в таблице net_city. Они к чему привязаны?
Я думаю это региональные коды в соответствии с FIPS (http://www.maxmind.com/app/fips10_4)
Сижу из Питера

Ваш IP-адрес: 109.188.214.56
Страна: Россия
Город: Москва

Указало верно только страну.
Спасибо за проделанную работу!

Используем Вашу базу в продакшене на двух проектах Incamp.ru и Языкомания.рф. Причем, если IP не из стран СНГ, используется автоматически MaxMind GeoIPCityLite.

Кстати, самый обычный виртуальный хостинг от РБК (на примере проекта Incamp) отлично справляется с нагрузкой.

Дополнили базу, привязав российские города в net_city к базе КЛАДР России (сопоставление по региону и названию города, несопоставленные сопоставляли вручную).
Неприятно удивлен, обнаружив много мусора. Комкор-ТВ офисный не определяет — нет в диапазонах.

Есть какие-то обновления с момента написания поста?

Вообще, работа отличная, вяжется прекрасно — если бы не недочеты с дублированием городов
В Германии около 400 городов с буквой «ё», названия обрываются на ней, видно кодировка ее не поддерживает.
Хотя может при импорте косяк был…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории