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

Определение города по IP-адресу

Время на прочтение 2 мин
Количество просмотров 35K
Такая потребность может возникнуть при геотаргетинге информации, работе картографических сервисов, анализе статистики посещений сайта.

Задача решается следующим образом.

1. Выкачиваем и правильно складываем базы whois.
2. Для каждой подсети определяем город.
3. Пакуем базу в бинарный файл.

Но зачем это все делать самим, когда уже есть готовые решения. Одно из них (полную версию) я выкладываю сюда для теста и получения фидбэка.

А теперь немного более подробно по задачам.

1. Выкачиваем и правильно складываем базы whois — для этого пишем многопоточную качалку-парсер, которая выбирает всю значимую информацию в диапазонах 0.0.0.0-255.255.255.255.
Сложности — правильно вычислять значимые диапазоны подсетей и договориться с сервисами whois чтобы не забанили и разрешили делать соответствующую нагрузку.
Результат — примерно 20 Гб записей.

2. Для каждой подсети определяем город — для этого пишем параллельно работающую распознавалку, которая с помощью словаря вариантов написаний городов, телефонных кодов и прочих признаков определяет город.
Сложности — создание и поддержка словарей вариантов, большие объемы информации.
Результат — несколько миллионов выделенных и распознанных подсетей.

3. Пакуем базу в бинарный файл — для этого паковщик пробегает все диапазоны и собирает данные в бинарное дерево возвращающее по IP-адресу запись о городе, координатах, регионе, стране, в том числе национальные написания.
Сложности — составление словарей с национальными написаниями названий городов, оптимизация алгоритмов паковщика.
Результат — бинарная база примерно 11 Мб.

Что получаем в итоге:
— геобаза по всему миру;
— доступная цена;
— честная, не ворованная база соответствий IP-адрес -> город;
— названия городов, стран, регионов на русском;
— возможность локализации базы (технология позволяет использовать национальные алфавиты, особенности в названиях);
— улучшенная поддержка exUSSR (никаких тебе городов — ul.Lenina и т.д.);
— интерфейсы для работы с бинарной базой на c, php, perl;
— отработана технология построения различных вариантов/версий базы.

А вот и сама ссылка на полную версию CNGeoip для тестирования — www.cn-software.com/datastore.php?7ae24a71bad7583b551289f0b03062c9
Ссылка действует до 20 июня 2008 года.

В качестве фидбэка хочется получить предложения по улучшению, репорты об ошибках (их лучше слать сюда www.cn-software.com/ru/contacts), предложения по стартапированию продукта (реально ли это? или только веб 2.0 нынче в почете).

добавлено.
Да, коллеги, нам не жалко если до 20 июня (пока действует ссылка), кто-то кроме хабровчан скачает модуль и отпишет пожелания — поделитесь инфой с коллегами, вдруг кому полезно будет.
Теги:
Хабы:
+26
Комментарии 84
Комментарии Комментарии 84

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн