Pull to refresh

Comments 134

Мой город определило как Рига. Печально, но порносайты определяют город точнее.

XKCD в тему: xkcd.com/713/
Месье знает толк в порнографии.
Задолбали уже «Месье»
Да, а у меня вообще не определен, хотя Яндекс показывает. Понятно, что это из-за частных сегментов сетей межрегиональных провов, которые раздают IP сами по себе. Понятно что крупные игроки добывают инфу потщательнее… А у гугла или яндекса в API нет ничего такого, чтобы получать город по IP? Если нет, то вообще тема очень востребованная и непаханая, сделать вменяемый Geo сервис как веб-службу, там можно еще персонализированную информацию и предпочтения добавить… вообщем что-то без фанатизма, но полезное как пользователю так и ресурсу. Премущества именно службы были б в том, что она хранит, как бы, кросссайтовую информацию, то есть могла бы делиться полезной информацией. Яша и Гугл то немалые «портреты» собирают благодаря установленным повсюду Google Analytics и Яндекс.Метрик, а вот обычным ресурсам такая сингулярность недоступна :)
Спасибо! Такая точность мне не нужна :-)

Ваш IP-адрес: 85.113.49.83
Страна: Россия
Город: Пермь

а я живу в городе под названием Неопределён Ж)
Это новый город-миллионник на карте России
не пытались русифицировать через онлайн переводчики (аля гугл-транслэйлт и т.п.?)
для точности можно сравнивать перевод через несколько сервисов, и при 100% совпадание утверждать автоматически
Вряд ли Гугль одобрит 180 тысяч запросов за короткий промежуток времени. Но проверю на досуге.
«Одобрит», вот только лулзов от такого перевода будет тьма. Я переводил свою БД таким образом на русский, замучился править после нее.
только через 1 сервис или несколько, с проверкой совпадений?
До нескольких сервисов я не додумался. Но ваш вариант, боюсь, не сильно упростит дело.
Вот, например, названия городов нашего многогранного мира: West Lake, American Fork, Young. Во всех случаях при переводе на русский вы получите «Западное Озеро», «Американская Вилка» и «Молодой!..». Хотя, в реальной жизни хорошо бы получить «Вэст Лэйк», «Американ Форк» и «Янг» — то есть транскрипцию.
тогда тут речь уже о не переводе
вспоминая 10 летней давности руский язык, названия городов не переводятся
тогда буквально надо транслировать латиницу в кирилицу
Винис, Пэрис, Эспаньа и штат Норс Дакота негодуют!
Без словаря не обойдетесь, иначе или Северная Дакота и Новый Йорк, или Норс Дакота и Нью Йорк.
Да действительно можно не переводить, а делать обратную транслитерацию
Парсить например с www.maxmind.com/app/locate_my_ip, он вроде нормально определяет города.
мне казалось очевидным, что английские названия городов должны оставаться в подобной базе английскими
Как минимум, для русского сайта вы переведете названия стран, чтобы в select'е получить единообразие. Тогда останется открытым вопрос, что делать, например, с адресом: «Таиланд, Chon Buri, Pattaya». Согласитесь, выглядит коряво, когда написано рядом. Многие переводят и регионы с городами поэтому.
но на транслит иностранных названий русскими буквами страшно смотреть :)
Может географические названия лучше через Википедию «переводить»? Конечно, покрытие не очень, но с крупными городами все нормально будет.
Free GeoLite City от maxmind определил город (Ростов-на-Дону), а ваш скрипт нет:

Ваш IP-адрес: 188.114.31.96
Страна: Россия
Город: Не определен
зы.
Ваш IP-адрес: 89.151.14X.X
Страна: Россия
Город: Новочебоксарск
всегда было Чебоксары, но вдруг стало Новчик О_о
Новочебоксарск и Чебоксары, судя по гуглокартам, располагаются достаточно близко друг от друга (~15 км.). По идее это допустимая погрешность для свободных баз подобного рода.
если учесть что компьютер которому выдан этот ip находится на расстоянии 130 км от Чебоксар.
Притом организация которая выдает эти ip находится так же в Чебоксарах.
А у меня — «город не определён». Хотя вроде как за окном — Чебоксары.
Та же самая ситуация, Чебнет?
Екатеринбург, провайдер «Планета» — история та же ( куцая, либо не очень актуальная база.
Но, наверно это лучше что есть из открытого, т.к. nginx тоже использует эту базу: ngx_http_geoip_module
В мою базу из maxmind попали только те диапазоны IP, для названий городов которых я нашёл перевод. Поэтому возможна ситуация, что maxmind определяет ip правильно (по-английски), а мой скрипт не нашёл.

Для тех, кому достаточно английской базы, но важна скорость — посмотрите в сторону модуля nginx GeoIP. Там используется эта же база maxmind.
Для тех, кому достаточно английской базы, но важна скорость — посмотрите в сторону модуля nginx GeoIP. Там используется эта же база maxmind.

тут можно и mod_geoip заюзать, геолокация далеко не накаждой странице нужна.

P.S.
А зачем все это в mysql? почему не оставить в формате maxmind?
Обновлять и уточнять, очевидно. Вы где-нибудь видели описание бинарного формата maxmind? Его нет.
Хотя есть исходники.
Странное демо:

«IP-адрес не определен»

С учетом того, что у меня статический белый адрес. Через анонимайзеры не хожу… Как так, что не смгло определить с какого IP коннект пришел?
И таки maxmind определил все точно.
Ошибка в регулярном выражении. Исправил.
Ваш IP-адрес: 109.254.25.23
Страна: Украина
Город: Не определен

Опять же maxmind определяет без проблем.
Город не определен.
А порнобаннеры, как было сказано выше, определяют)
Нам бы такие бюджеты.
Словари стран, регионов и городов на разных языках есть тут geo.webnabor.com/?link=6

Единственное там не самая полная база данных и как и везде встречаются некоторые косяки.
еще остались люди, которые не слышали до 2010 года про MaxMind?
Спасибо, Волгоград, провайдер ЮТК определил верно.
Кстати думаю было бы супер иметь такой сервис в виде онлайн службы с доступом по API.
Волгограду видимо сегодня везет :)
Меня тоже определил верно, хотя не ЮТК у меня, а Дом.ру
Кто бы сделал быстрый REST-сервис для такого дела…
спонсируй железом и каналами
А сколько есть? Освою все.

Просто не вижу никакой коммерческой выгоды в этом: просто ленивый жаваскриптер пофантазировал на тему модных аббревиатур. Для серьезного сайта нет проблемы использовать настоящий maxmind + какой-нибудь интерфейс.
сервер на сотке всегда найдется. был бы сервис на который не жалко его потратить… Например, эта тема мне нравится и самому интересна.
Допустим. Почему эта затея лучше, чем просто отдать сервер сиротам? (очередному щкольнику под CS) Если вы видите тут перспективы хоть какого-то профита — опишите их.
А там глядишь кто-то и сделает. Может даже я.
В этом случае там через неделю можно будет обнаружить только порнообменник. :)
Просто отдать не могу — это же не пирожок с мясом, он стоит в ДЦ, подключенный, запитанный…
А несерьезный, ну разве он станет за это платить?
UFO just landed and posted this here
У меня тоже определен максминдом и НЕ определен вами. (95.37.123.74 — Нижний Новгород)
У меня все точно определил:
Ваш IP-адрес: 83.69.129.162
Страна: Узбекистан
Город: Ташкент
Тем, что ipgeobase.ru ограничивается городами России.
Ну вы хотя бы для РФ используйте базу от ipgeobase. Я полгода назад тоже делал проект, где нужно было определять с точностью до города — Maxmind по России откровенно сливает.
Хорошая идея, возьму на заметку.
Кстати там даются скачать файлы, если надо скину 2 php скрипта приводящие те файлы к .sql виду для mssql сервера. Под мускул переделать проще простого.
Оба сливают. :) В моём случае показывает Москву, хотя я в Питере.
А какой у вас IP, если не секрет? Просто мне казалось, что по Москве/Питеру диапазоны IP более-менее четко размечены — это в дальних регионах иногда все поряд в одном городе «висят», где монополист МРКшный окопался…
А что мешает использовать обе базы? Если ipgeobase не находит адрес, спрашиваем у maxmind. Maxmind действительно не очень хорошо работает с российскими адресами — ipgeobase в этом плане много лучше.
Видимо потому, что там только русский сегмент адресов.
Хорошо бы иметь для начала возможность определить населенный пункт пусть даже не по IP… Имейте в виду, что в России до сих пор отсутствует простой перечень населенных пунктов. А приведенная на картах информация систематически противоречит реальным данным, собираемым в частности в ходе переписей.
источник — проф. Алексеев А. И. (географический факультет МГУ), доклад на конференции GeoВласть.
P.S. Это не касается крупных городов и большинства городов вообще — они конечно известны точно.
Как это отсутствует?
КЛАДР (Классификатор АДресов России) как раз-таки и содержит официальный перечень не только населенных пунктов, но даже и улиц с адресами домов и квартир (последнее в открытом доступе недоступно), который к тому же еще и регулярно обновляется.
Неточность КЛАДРа постоянно отмечается в форумах — «КЛАДР не является ни полным, ни непротиворечивым».
Да это и очевидно. Основные источники несообразностей сейчас (это из того же доклада Алексеева) — низкая культура делопроизводства и ведения статистики, регулярные изменения статусов населенных пунктов с соответствующей неразберихой в отчетности, активная и плохо контролируемая миграция, задержки с переводом уже построенных населенных пунктов в разряд построенных (таким образом как-то экономят на налогах), всевозможные этнические поселения — особенно возле Москвы, быстрое вымирание русского сельского населения. В учете внутренней миграции элементарно не сходятся концы с концами между регионами.
КЛАДР соответствует некоторой виртуальной реальности, периодически (раз в десять лет обычно — с переписями населения) корректируемой, но в целом не актуальной.
Нужно уже делать КЛАДР-OnLine, было бы здорово. С возможностью свободного добавления/редактирования информации. И с разделением «проверенной» и «не проверенной» информации. Способы голосования. Или например чтобы часть информации переходила в статус проверенной после порога числа её использования.
Полностью согласен, Web 2.0. К этому все и идет… Но только почему же только КЛАДР-OnLine? :) Любую информацию нужно локализовывать в пространстве, и во времени, и выкладывать в общедоступное единое хранилище «непроверенной» информации. Это и есть неогеография :)
Любая информация должна содержать ответы на вопросы «Что? Где? Когда?»
Спасибо, достойная замена давно не обновлявшейся ip2country.csv.
Определило город верно. При том, что хваленные выше, порнобаннеры определяли город как Пермь.
Судя по отзывам точность определения города сильно ниже=) Я не в Ярославле оказался а в Санкт-Петербурге (
Небось какой-нибудь Авангард интернет, который через Петербург всех пускает.
Ваш IP-адрес: 95.79.14.***
Страна: Россия
Город: Не определен

Почему-то ситуация с Нижним Новгородом почти везде такая.
На многих сайтах определяется как Великий Новгород или даже Пермь.
Редко определяется правильно.
Обидно :(
P.S.: Провайдер Дом.ru
Уважаемый netload, вы сделали очень доброе дело. лично я вам очень благодарен, спасибище вам неимоверное! успехов вам во всех начинаниях! давно я таких полезных вещей в нете не видел.
А как по городу и стране определить часовой пояс?
Спасибо, но хотелось бы все города России. Пойду в q&a.
По теме: что лучше для определения страны по этой базе?
MySQL или поиск по 28метровому файлу .dat?
Зависит от того, чем осуществляется поиск по текстовому файлу. Если php — то однозначно mysql.
Если под .dat файлом подразумевается бинарный файл от maxmind — то, однозначно, родное API под нужную платформу.

Решение на MySQL надо еще суметь приготовить, у топикстартера здесь полный провал.
Будьте любезны, укажите конкретные ошибки
у вас не используются индексы.
индекс есть, но он бесполезен.
Допустим, запросы можно оптимизировать. Напишите конкретно, что и как нужно исправить, сделаю и проведу сравнительный анализ.
а меня правильно определил, даже район написал что меня очень удивило)
а мой город не определило вообще, живу в Испании, город Валенсия.
Украина, Луганская обл., Луганск не тянет на испанию
Регистрировался, на хабре, когда жил в Украине, умник;)
Да не глуп.
И как там?
Ваш IP-адрес: 77.34.83.XX
Страна: Россия
Город: Владивосток


промазал километров этак на 150… :)
меня определил верно
Ваш IP-адрес:92.241.xxx.237
Страна: Россия
Город: Ижевск
Определило как Таиланд, Бангкок, но я на самом деле нахожусь в Чианг Мае!
Я в Тюмени, мне сказали что в Тобольске. Обычно Тюмень определяют как Ебург, реже как Пермь… Но как Тобольск — первый раз)
Может попробовать через википедию перевести?
Делаем парсер, который:
1. Смотрит страничку с названием города на английском языке.
2. Проверяет, город ли это (например, если в правом углу отобразились коодринаты, то точно город)
3. Смотрит название статьи по-русски.

Учитывая то, что в википедии есть даже мелкие городки под 10 000 человек, можно перевести очень много названий и весьма точно.
Что касается MaxMind. Есть один недостаток, заключается он в том, что названия стран, городов хранятся в базе на английском варианте латиницей.

Есть ещё достойные аналоги MaxMind, например:

CNGeoip — платная база адресов с модулем определения города и страны по IP-адресу. По заявлению разработчиков база содержит русские и английские названия городов, стран, регионов и областей. Выполнена улучшенная поддержка городов бывшего СССР, что отличает её в лучшую сторону от базы GeoIP. Если Вы собираетесь создавать коммерческий сервис в Рунете на русском языке, который требует определения страны и города по IP, возможно, стоит посмотреть в сторону CNGeoip.
ООО «Юмисофт» разработчик системы управления сайтами UMI.CMS официальный партнер CNGeoip.

WorldIP от «WIPmania» — база данных, позволяющая определять реальные физические расположения IP-адресов. Она позволяет определять страну пользователя и абсолютно бесплатна для персонального и бизнес-использования. Изюминка базы WorldIP заключается в определении реальной страны размещения пользователя, а не местоположения интернет-провайдера, которому принадлежит пул IP-адресов.
WIPmania сам пользуюсь, но там базы с точностью до страны.
Что-то много комментариев о том, что город определился неправильно. Нужно выдерживать баланс =)
Мой город (Томск) определен верно.
На данный момент в топике около 20 сообщений об ошибке. За это время демо-скрипт запускался ~3,000 раз. Если предположить, что каждый 15-й товарищ решил написать об ошибке, то получим точность 90%, как и было заявлено в тексте статьи.
Есть над чем поработать. Постараюсь в следующей версии повысить точность определения по России за счет ipgeobase.ru
А трудно исправить скрипт. Чел информирует систему об ошибке. если такие комментаторов с разных хотя и похожих IP много, то система вносит изменения.
Получится что то типа Вики.
А у maxmind база по городам разве не платная? да и потом базу все равно нужно в актуальном состоянии держать…
Есть бесплатная версия (менее точная). Обновляется раз в месяц.
Иркутск, Россия — полёт нормальный)
Я в Уфе, а пишет Москву. Для города-миллионника можно было бы и точнее. ~1500км разница. На WIPmania все точно, даже провайдер.
Ваш IP-адрес: 194.50.xxx.xxx
Страна: Украина
Город: Бар

Ошибся км на 90
меня определил
Бруклин, США
возьму БД на всякий случай, спасибо
Ваш IP-адрес: 91.210.149.74
Страна: Украина
Город: Ялта

Хоть городок и маленький, а определило верно.
Кстати, можно попробовать с помощью API Яндекс.Карта определить местоположение пользователя.

Например, переходя по указанной ссылке ниже, получим название страны, города и возможно название региона:
api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==

Всё что нам нужно, это: var YMaps;
Ого! Думаю, что это довольно точный вариант.
Только похоже API никакого нет у них для того, чтобы получить местонахождение по произвольному IP.
То есть придется инициализировать скрипт у клиента, а потом уже результат распознавания AJAXом переправлять на сервер.
Хм… Яндекс с MaxMind`ом никак не могут решить я в Чикаго или Нью-Йорке.
Хотя я бы с ними с радостью согласился, но за окном Москва…
Определил правильно мой маленький городок но с ошибкой в русском варианте. Не значительно правда — вместо ШебоЙган — ШебоИган.
UFO just landed and posted this here
netload.biz/ip.php

Ваш IP-адрес: 195.122.234.170
Страна: Россия
Город: Не определен


www.techinfo.net.ru/ip2ruscity/
IP2RusCity — определение города и региона России по ip адресу

Ваш ip — 195.122.234.170, город/регион: Нижний Новгород(8312)/Нижегородская область
БД Ip2Country, страна: Россия


плохо искали — очень плохо!
вообще искать в буржуляндии базы по России дело очень не благодарное. Я вот живу в Нижнем Новгороде, и почти все (я вот не вспомню сейчас какая правильно определяла, но стоила она не менее 100 баксов точно, даж больше) говорят, что я живу в Новгороде (ну а от порнобанеров только улыбка — «Наташа в Новгороде онлайн-зацени» :) )! даже гугл это не сразу распозновал. ну ушь про колво городов в России — я просто молчу. Как уже сказали — город миллионник, и Москва со своими 10-15М (сколько там сейчас точно не знаю) нервно курит в углу :)

Кстати, база www.techinfo.net.ru/ip2ruscity/ платная — 2к в год, но оно того стоит.
Ваш IP-адрес: 95.135.2.200
Страна: Украина
Город: Киев


Пролёт чуть меньше чем в 1000 км :) Прямо снайперская точность!
А вообще имхо автор просто решил этой статьёй познакомить хабраобщество и найти земляков :)
прикрутил последнюю версию БД от ТС, пробил все айпи, указанные в двух ветках по теме.
Все теперь определяется правильно, и Нижний Новгород, и прочие проблемные города.

Скорость исполнения скрипта в среднем около 0,001. Понравилось, буду использовать, спасибо :)
Расскажите пожалуйста, по каким словарям переводили города? Если сохранились исходники скриптов, выложите пожалуйста!
Sign up to leave a comment.

Articles