LINUX.ORG.RU

Ищу БД IP-адресов.


0

1

сабж.

Буду счастлив, если оттуда по IP можно будет вытащить:
- Кириллическое название города
- Кириллическое название региона
- Кириллическое название страны
- Часовой пояс

Совсем хорошо, если это будет csv, sql или другой легко преобразуемый текстовый формат. У меня на винте режит какое-то бинарное чудо с библиотекой доступа к ней, но оно мне не нравится.

Немного поясню стоящую передо мной задачу. Мне надо не просто получать инфу о городе по IP, мне надо все адреса этой базы влить в SQL дамп для дальнейших сексуальных утех.

★☆☆

Последнее исправление: r_asian (всего исправлений: 2)

Ответ на: комментарий от xorik

> geoip

Оно у меня и лежит, но там формат бинарный. Разбираться в нём меня ломает, а составлять базу методом перебора IP и вводом в geoip ломает мой комп.

r_asian ★☆☆
() автор топика

worldatlas.com/geoquiz/thelist.htm openconcept.ca/blog/mgifford/text_list_all_countries world-gazetteer.com/dataen.zip omnis.com robtex.com

ZenitharChampion ★★★★★
()
Ответ на: комментарий от Tigger

Ничего, я уже беру geoip брутфорсом :-). Всё равно мне потом надо было бы конвертить в свои таблицы, а так двух зайцев разом, съкономив собственные трудовые ресурсы и растранжирив машинные. Распихается всё по табличкам:

CREATE TABLE IF NOT EXISTS `geoip_city` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `region_id` int(11) unsigned NOT NULL,
  `land_id` int(11) unsigned NOT NULL,
  `hid` varchar(32) CHARACTER SET utf8 NOT NULL,
  `code` varchar(8) CHARACTER SET utf8 NOT NULL,
  `name_ru` varchar(255) CHARACTER SET utf8 NOT NULL,
  `name_en` varchar(255) CHARACTER SET utf8 NOT NULL,
  `lat` float(9,5) NOT NULL,
  `lon` float(9,5) NOT NULL,
  `population` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `region_id` (`region_id`),
  KEY `land_id` (`land_id`),
  KEY `name_ru` (`name_ru`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `geoip_land` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `hid` varchar(32) NOT NULL,
  `code` varchar(8) NOT NULL,
  `name_ru` varchar(255) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  `lat` float(9,5) NOT NULL,
  `lon` float(9,5) NOT NULL,
  `population` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `code` (`code`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `geoip_net` (
  `address` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `mask` char(16) NOT NULL,
  `city_id` int(11) unsigned NOT NULL,
  `region_id` int(11) unsigned NOT NULL,
  `land_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`address`),
  KEY `land_id` (`land_id`),
  KEY `region_id` (`region_id`),
  KEY `city_id` (`city_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `geoip_region` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `land_id` int(11) unsigned NOT NULL,
  `hid` varchar(32) NOT NULL,
  `code` varchar(8) NOT NULL,
  `name_ru` varchar(255) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  `lat` float(9,5) NOT NULL,
  `lon` float(9,5) NOT NULL,
  `population` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `land_id` (`land_id`),
  KEY `code` (`code`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

И будет красота.

При весьма суровом nice за час обработано 13%.

p.s. желающих рассказать мне про InnoDB, нормальные формы, задание маски подсети числом и пр. просьба не беспокоиться. Так задумано :-D

r_asian ★☆☆
() автор топика
Ответ на: комментарий от r_asian

>там без смещения по UTC
Смещение по UTC во всех остальных файлах в той папке. Но они компилируются в бинарный вид из исходников специальным компилятором. Можно посмотреть исходники, оттуда вытянуть.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Благодарствую. Мне оказалось проще скопипасить предложенную выше таблицу из википедии, и распарсить. Единственное, чего я так и не добился - привязки городов(или хотя бы регионов) к таймзонам. Теоретически это можно сделать для тех, именем которых таймзоны названы, что с остальными - не ясно.

А так у меня получается 2 разорванные части: таймзоны в 2 таблицах, и соответствия IP-шников городам. В заархивированном дампе - что-то около 30МБ.

r_asian ★☆☆
() автор топика
Ответ на: комментарий от r_asian

Единственное, чего я так и не добился - привязки городов(или хотя бы регионов) к таймзонам.

http://www.geonames.org - много всего интересного, есть API (как бесплатный, так и за денежку)

Или вот так (пример для конкретного населённого пункта):

1. Получаем координаты объекта (www.geonames.org, www.fallingrain.com, и т.п. )
2. По координатам получает часовой пояс (www.geonames.org/export/web-services.html#timezone)
3. ...
4. PROFIT!

shrub ★★★★★
()
Ответ на: комментарий от r_asian

Вариант №2 (в качестве бреда)

Единственное, чего я так и не добился - привязки городов(или хотя бы регионов) к таймзонам.

Для городов, о которых есть статья в википедии, распарсить википедию на предмет часового пояса города :)

shrub ★★★★★
()
Ответ на: комментарий от shrub

Координаты для всех городов у меня уже есть. Они были в ограбленной БД, но мне нужно не астрономическое время. Астрономическое я и так могу получить несложными преобразованиями долготы.

r_asian ★☆☆
() автор топика
Ответ на: комментарий от r_asian

Вы по этой ссылке всё прочитали? http://www.geonames.org/export/web-services.html#timezone

Там есть timezoneId - полностью совместим с БД Олсона, ссылку на которую вам выше давали уже. Плюс там есть смещение относительно UTC (rawOffset: the amount of time in hours to add to UTC to get standard time in this time zone.) которого вам нехватало чуть выше по треду

Вот пример для Магнитогорска.

shrub ★★★★★
()
Ответ на: комментарий от shrub

Вот спасибо хорошо. Надо попробывать.

r_asian ★☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.