Надежный городской Geo-IP, бесплатная локальная база данных

Я хочу собрать PHP-скрипт для разрешения названия города (больше ничего не нужно) с хорошим разрешением только для одной страны (ИРАН). Поскольку мне приходится запрашивать БД несколько раз, лучше использовать загружаемую локальную версию. Я прочитал большинство сообщений в stackoverflow и с тех пор протестировал их:

  • GeoIP City от maxmind звучит неплохо, но не бесплатно.
  • GeoIP от maxmind имеет низкий уровень точности (около 50-60%).
  • ip2country.net имеет базу данных IP-2-City, но она платная и не разрешает названия городов Ирана.
  • Я также попробовал DB#.Lite с ipinfodb.com, который имеет API здесь безуспешно. Проблема в том, что он не определяет многие названия городов.
  • Я также попробовал API hostip.info, но он оказался слишком медленным.
  • Существует бесплатный класс php с локальной БД, который разрешает только название страны.
  • Я не знаю, есть ли шанс использовать Piwik с этим плагином GeoIP. Было бы полезно иметь идеи, если кто-то знает об этом.
  • ipinfo.io – это еще одна служба, которая не позволяет точно определять названия городов.
  • Я не знаю, есть ли способ использовать аналитику Google для определения названий городов, поскольку я думаю, что Google будет лучше, чем любой другой сервис для таких стран, как Иран.

Любая хорошая идея будет действительно оценена.


person Pmpr    schedule 04.08.2013    source источник
comment
Пробовали ли вы developers.google.com/fusiontables? Вы также можете получить данные из en.wikipedia.org/wiki/Category:Cities_in_Iran.   -  person Robert Seddon-Smith    schedule 04.08.2013


Ответы (3)


Это сложно и трудно сделать надежно. Я попробовал это в прошлом, и это было что-то вроде этого

  • Получите базу данных IP-адресов, а также городов и стран (http://lite.ip2location.com/database-ip-country-region-city ИЛИ http://ipinfodb.com/ip_database.php)
  • Получите IP-адрес и запросите его в этих таблицах, чтобы найти город и страну.
  • Наконец, проверьте, находится ли он в Иране, используя столбец страны.

Есть платные сервисы, которые могут сделать это очень быстро за вас. Вам может потребоваться целая вечность, чтобы заставить работать что-то, что все еще ненадежно, потому что у вас просто нет данных. Я бы серьезно рассмотрел http://www.maxmind.com/en/city_per - если только конечно, это совершенно некоммерческий проект, и $ нет, нет.

Если вы можете получить широту и долготу из таблицы IP-адресов, даже без данных о городе, вы можете использовать что-то вроде этого, чтобы проверить наличие ближайшего города в Javascript — это вариант — Поиск ближайшего города из списка (массива?) из известного местоположения.

А как насчет функции браузера «Поделиться местоположением»?

person Jake N    schedule 04.08.2013
comment
Спасибо за Ваш ответ. Я не думаю, что функция совместного использования местоположения в браузерах широко поддерживается всеми основными браузерами. Имеет ли это? - person Pmpr; 04.08.2013
comment
Неа. Я просто выбросил его туда - person Jake N; 04.08.2013
comment
Мы используем IP2Location LITE, который является бесплатным и поддерживает почтовый индекс. - person Michael C.; 05.08.2013


Иногда нам нужно использовать локальную базу данных Geo-IP вместо веб-сервисов для определенных целей. Это мой опыт: я скачал форму базы данных https://db-ip.com. Я много искал и, наконец, нашел этот более надежный. но еще две проблемы:

  • 1-База данных «IP-адрес в город» слишком велика для загрузки в базу данных MYSQL на хостинге, поскольку она превышает лимит времени.
  • 2-База данных основана на сравнении IP-адресов http://lite.ip2location.com. IP-номера.

Поэтому я разработал простое приложение .NET для решения этих проблем. Решение можно скачать отсюда: https://github.com/atoosi/IP2Location-Database-Luncher

person Alireza    schedule 28.09.2017