Определение города по IP-адресу
Такая потребность может возникнуть при геотаргетинге информации, работе картографических сервисов, анализе статистики посещений сайта.
Задача решается следующим образом.
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 для тестирования - http://www.cn-software.com/datastore.php…
Ссылка действует до 20 июня 2008 года.
В качестве фидбэка хочется получить предложения по улучшению, репорты об ошибках (их лучше слать сюда http://www.cn-software.com/ru/contacts/), предложения по стартапированию продукта (реально ли это? или только веб 2.0 нынче в почете).
добавлено.
Да, коллеги, нам не жалко если до 20 июня (пока действует ссылка), кто-то кроме хабровчан скачает модуль и отпишет пожелания - поделитесь инфой с коллегами, вдруг кому полезно будет.
Задача решается следующим образом.
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 для тестирования - http://www.cn-software.com/datastore.php…
Ссылка действует до 20 июня 2008 года.
В качестве фидбэка хочется получить предложения по улучшению, репорты об ошибках (их лучше слать сюда http://www.cn-software.com/ru/contacts/), предложения по стартапированию продукта (реально ли это? или только веб 2.0 нынче в почете).
добавлено.
Да, коллеги, нам не жалко если до 20 июня (пока действует ссылка), кто-то кроме хабровчан скачает модуль и отпишет пожелания - поделитесь инфой с коллегами, вдруг кому полезно будет.



комментарии (84)