Pull to refresh

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

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

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

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 июня (пока действует ссылка), кто-то кроме хабровчан скачает модуль и отпишет пожелания — поделитесь инфой с коллегами, вдруг кому полезно будет.
Tags:CNGeoipмодуль географииgeoipipphpгородаip-адрес
Hubs: Website development
Rating +26
Views 33.8k Add to bookmarks 96
Comments
Comments 84

Popular right now

Инженер технической поддержки
from 32,000 ₽ITM ХолдингЕкатеринбург
PHP Разработчик
from 800 to 1,000 $White WoodRemote job
PHP-разработчик
from 120,000 to 150,000 ₽7skillsИжевскRemote job
PHP-разработчик
from 80,000 to 150,000 ₽Getman & CoСанкт-ПетербургRemote job
Backend Development Engineer
from 200,000 ₽Pixel Networks LtdRemote job

Top of the last 24 hours