Запрос номера из реестра «Россвязи»

    Доброго времени суток!
    Давно искал инструмент, чтобы быстро можно было узнать принадлежность того или иного телефонного номера к тому или иному оператору связи и/или региону.

    Всегда использовал для этих задач МТТ, чего, в принципе всегда хватало.
    Но хотелось чего-то ещё более простого и быстрого.

    Если Вас также как и меня интересовало что-то подобное, прошу под кат.

    Одно время я хотел написать парсер вывода МТТ и отдавать его в структурированном формате. Но всё не доходили руки.
    Совсем недавно обнаружил что интересующая меня информация (оказывается!) есть в свободном доступе на сайте «Россвязи», там же имеется поиск по реестру.
    Так получилось, что у меня появилось немножко свободного времени и желание покодить «для себя».
    В результате с сайта «Россвязи» были скачаны все имеющиеся в открытом доступе реестры, распарсены и экспортированы в базу для последующего удобного поиска.

    Что из всего этого получилось можно посмотреть здесь.
    Имеющуюся информацию можно получить в формате XML по запросу вида: innum.ru/cgi-bin/info.pl?number=79193410000 и получить ответ вида:

    <?xml version="1.0" encoding="UTF-8"?>
    <info>
      <data>
        <begin>3400000</begin>
        <end>3599999</end>
        <operator>Мобильные ТелеСистемы</operator>
        <prefix>919</prefix>
        <region>Челябинская область</region>
      </data>
    </info>
    


    Во избежание хабра-эффекта, действует ограничение — 10 «уникальных» запросов с одного IP-адреса в час.

    После выполнения запроса, результат помещается в кэш на 8(восемь) часов. В течение этих 8ми часов запрос не считается «уникальным» и Вы будете продолжать получать ответы по этому запросу без каких-либо ограничений.

    Что касается практического применения, то я планирую подключить этот веб-сервис к офисному Asterisk'у (например, через FastAGI).

    Буду рад любым пожеланиям/предложениям и аргументированной критике в комментариях.
    Спасибо за внимание.


    UPD: пользователь, которого, к сожалению, нет на хабре Matthew_w написал приложение для Windows Phone, которое использует данный веб-сервис.
    Ждём аналогичного ПО под остальные мобильные платформы ;-)
    Поделиться публикацией

    Комментарии 47

      +13
      Будет удобно для детализаций звонков астериска. «Саша опять звонила подруге в Новосибирск». Спасибо
        0
        А почему я не могу узнать регион приписки номера без его полного набора (не хочу я полностью вводить номер на стороннем сайте, да и для поиска этого не нужно)? Ввожу 917 77 и получаю совсем не то, что нужно.
          +6
          вводи 9177700000
          0
          Молодец. Только у МТТ все же удобнее будет. Там можно указывать по первым цифрам и, как вариант, узнать как разбит диапазон, если указать только DEF код (первые 3 цифры). Ваш вариант подразумевает только точное (полное) указание номера, но зато позволяет работать и с городскими номерами, а не только с мобильными.
            0
            Что касается городских номеров, то в моем сервисе это тоже реализовано — Вам ничего не мешает указать городской.
            По поводу укаания части номера я с Вами согласен, но у Россвязи какая-то странная штука — я так понял, по их логике номер может иметь не обязательно 10 цифр.
            Например, если вызвать запрос innum.ru/cgi-bin/info.pl?number=7919341000, то результат будет но совершенно не тот что по номеру innum.ru/cgi-bin/info.pl?number=79193410000.

            На сайте Россвязи — такая же шутка, поэтому оставил функционал «как есть».

            Если нужно — могу допилить поиск по региону и/или оператору (как на сайте МТТ), также запрос нескольких диапазонов (например по маске «7351xxxxxxx» или типа того)
            На данном этапе это уже вопрос «спроса» пользователей. Как я писал в посте — предложения и адекватная критика приветствуется.
              0
              Эта странная штука определяется приказом МИТС РФ №142 от 17 ноября 2006 года. )
              Национальный номер не более 10 знаков, Международные не более 15 знаков… На сетях действуют например 3-хзначные номера. Например 112 — единый номер экстренных служб.
                0
                Сей приказ вводит в действие «Российскую систему и план нумерации»… В самой базе все номера 10-значные. Префиксы они потому и префиксы, что однозначно определяются от начала.
                  0
                  А разве «внутренние» номера экстренных служб входят в общий реестр нумерации?
                  Ведь нельзя же позвонить (из другого региона), например, по номеру +7 495 112?

                  Ну и опять же, главный вопрос — а разве могут быть российские сотовые номера длиной менее(или более?) 10 знаков? (исключая код страны)
                  Я не совсем понимаю каким образом, например, номер "+7 919 300-000" может принадлежать МТС Калужской области? Это реально?

                  Я всегда был уверен что российский федеральный номер всегда имеет вид "+7 9XX XXX-XX-XX"
                    0
                    Для номеров служб ведется, типа, отдельный реестр. Также как есть отдельный реестр для бесплатных служб 8-800-.
                    Честно говоря, я считаю, что это дурь Россвязи. Скоро им придется делать реестр реестров… Это ведь действующие номера, их бы, по хорошему, было бы неплохо тоже отображать в справочнике.
                      0
                      8-800 находятся в общем реестре и прекрасно «ищутся» моим сервисом.
                      Меня сейчас больше всего смущают именно номерные блоки с номерами общей (вместе с кодом) длиной менее 10 знаков.
                        0
                        А пример такого блока привести можете?
                          0
                          Приводил уже здесь в комментах не один раз.
                          Например, если вызвать запрос innum.ru/cgi-bin/info.pl?number=7919341000, то результат будет но совершенно не тот что по номеру innum.ru/cgi-bin/info.pl?number=79193410000.
                            +2
                            хм… Залез посмотреть.

                            У них (а сайте Россвязи) поле «Номер» очевидно числовое. При преобразовании в строку в соответствии со стандартными правилами преобразования int2str значение дополняется до 7 знаков нолями впереди, вместо конца. То есть про { Код => 919, Номер => 300000 } преобразуется в строку «9190300000» что естественно Калужская область. Последний номер блока 0399999.

                            Без комментариев…
                              0
                              Так вот, в чём дело…
                              Да, вероятно, Вы правы.

                              Теперь сия «аномалия» мне понятна, спасибо за объяснение!
                      0
                      Эти номера согласно закона обязаны быть доступны на всей территории РФ без всяких префиксов. вне зависимости от того в каком регионе я набрал 112 я должен попадать на эту службу. Причем не имеет значение техническая реализация. То ли владелец службы в каждой зоне создаст свой call-center, то ли все вызовы на этот номер будут перенаправляться на какой-то один конкретный call-center. Поэтому мне кажется логичным, если эти данные будут храниться в общем реестре…

                      Федеральный номер короче легко может быть. Это зависит от оператора. В Вашем примере от того, кому принадлежит блок +7919300000Х. Другое дело, захочет ли оператор отказываться от 10 телефонных номеров ради того чтобы сделать номер короче на один знак.

                      Ну и плюс надо учитывать особенности маршрутизации номеров при обработке вызовов…
                0
                Тут хотят сделать номера переносимыми между операторами.
                  0
                  Отличная идея, я считаю!

                  В контексте моего сервиса — придётся чаще синхронизировать справочники с «Россвязью».

                  Я думаю «мимо» них никто номера не будет переносить. Хотя, как говорится, «будем решать проблемы по мере их возникновения».
                    +1
                    А мне кажется это редкостная блажь… Реализация этого функционала довольно нетривиальна. А реальной потребности сохранять за собой номер сотового телефона у физ.лиц нет. Ну, кроме случаев, если это блатные номера.
                    (Вот, кстати, чей бизнес подскочит до небес от введения этой услуги.)
                    Это может быть интересно только малому бизнесу, не имеющего фиксированного офиса и не привязанному к конкретному месту.

                    В моём окружении я один пользуюсь своим самым первым сотовым номером полученным 12 лет назад у регионального сотового оператора. Все остальные за это время как минимум по 3-4 раза поменяли свои номера. Многие имеют симки всех сотовых операторов. А некоторые, целенаправленно раз в 2-3 года меняют номера. Реальный платежный спроc на эту очень мал.
                      +1
                      Я считаю, что пользователю нужно дать возможность выбора.
                      Пользоваться услугой или нет — это уже его дело.

                      Конкретно в данном случае я рассуждаю именно как пользователь. Сложности технической реализации и юридические аспекты (в данном случае меня не интересуют)

                      ЗЫ: лично меня на данном этапе жизни услуга переноса номера от оператора к оператору не интересует, но если такая возможность появится, разумеется, я не расстроюсь.
                        +2
                        Я бы предпочел, чтобы национальные сотовые операторы сделали вменяемые цены на роуминг в том числе и международный… Для этого им ничего делать не надо. Только губу чуть-чуть закатать…
                        При нынешнем платежоспособном спросе цена услуги переносимого номера, будет чуть меньше цены самолета. Для этого придется строить общий центр нумерации, перелопатить софт коммутаторов, отладить взаимодействие и документооборот при переносе номера. Каждый оператор посадит еще полсотни девочек которые будут заниматься обслуживанием этого функционала. Ну и не преминут воспользоваться случаем и согласованно и «законно» очередной раз поднять стоимость минуты разговора для всех, независимо от того, пользуется ли абонент услугой переноса или нет.
                        0
                        Это может быть интересно только малому бизнесу, не имеющего фиксированного офиса и не привязанному к конкретному месту.

                        Любой бизнес — если он заинтересован в своих клиентах всегда будет заинтересован иметь что-то «постоянное». В наше время такими вещами могут быть:
                        1) интернет-сайт
                        2) логины в IM(Mail.Агент,icq,skype,jabber)
                        3) Телефонный номер ( неважно какой..)

                        Причём третий пункт, если доставлять его по SIPy, как делают нормальные операторы тоже получается очень даже динамичным и тоже не зависит от «места»…
                          0
                          Крупный и средний бизнес не испытывает никаких проблем обеспечения себе постоянного телефонного номера и без этого сервиса.
                          Более того, в России среди серьезных компаний использовать сотовый номер в качестве основного это моветон, и является серьезным поводом усомниться в благонадежности.
                      0
                      Спасибо, отличная идея, прикручу ее к своей панели asterisk на extjs. Если поделитесь кодом info.pl буду очень благодарен, нет — сам напишу.
                        0
                        Написал Вам в личку.
                          0
                          Отлично, сейчас попробую прикрутить :)
                        0
                        Скачал базу и перевел в Excel формат и заодно в sql скрипт для вставки в MySQL базу. Может еще кому нужно.
                        sysadminblog.ru/admin/2012/04/14/reestr-nomerov-rossvyazi.html
                          0
                          Кстати, Вы натолкнули меня на интересную мысль. Почему-то я про Excel не подумал… Так было бы (в какой-то степени) проще, и главное — быстрее.
                          У меня базы забирает скрипт через LWP::UserAgent, полученные файлы разбираем с помощью HTML::DOM, что несколько ресурсозатратнее, чем открыть полученные файлы в Excel и сохранить в CSV для дальнейшей работы.
                          Спасибо за «подсказку»!
                            +1
                            А вы собираетесь каждый раз через эексель прогонять каждое обновление базы Россвязи? Получается, что ваш сервис будет жестко привязан к Windows-платформе? Для веб-сервиса идея ниже среднего.

                            Я писал аналогичный скрипт на ruby c nokogiri. Код импорта html-ей в базу sqlite без учета проверки входных данных на корректность занял десяток строк, не больше.
                              0
                              Нет, в настоящий момент обновление справочников происходит в полностью автоматическом режиме, по крону.

                              Процесс обновления длится несколько десятков минут (сервис при этом, разумеется, работает в штатном режиме).

                              Просто мне кажется что при необходимости обновить вручную — через Excel будет быстрее.
                                0
                                Несколько десятков минут?! 0_о Почему так много? На рабочем буке максимум 15-20 секунд. На сервере быстрее чуть ли не напорядок. Правда у меня старые данные не удаляются дабы отслеживать историю изменений. Сотовые операторы любят перебрасывать блоки номеров между регионами. Это приходится отслеживать…
                                  0
                                  HTML::DOM очень медленный.
                                  Основная часть времени уходит на парсинг этим модулем полученнго HTML.

                                  Я уверен, что есть более быстрые способы разбора HTML, но в данном вопросе время — не критичный для меня показатель. Какая, по сути, разница сколько времени будет занимать этот процесс — одну минуту или двадцать? Россвязь обновляет данные, как я понимаю, раз в месяц.
                                    0
                                    Раз в квартал…
                                      0
                                      Тем более! При обновлении справочников раз в квартал, задержка (с моей стороны) минут в 30 погоды не сделает.
                          +1
                          Я просто оставлю тут ссылочку
                            0
                            Полезно, спасибо… Но не универсально… )
                            Насколько актуальные данные в вашей базе? С какой периодичностью обновляете?
                              0
                              Не совсем то, что у автора топика, потому-что выдает только принадлежность к оператору. А вот регионов нет. Если только вам эта информация малосущественна…
                              0
                              Есть у меня давняя идея — отдавать данные о телефонных номерах с помощью протокола DNS. Получим готовую инфрастр
                                0
                                Готовую инфраструктуру для серверов. А информацию о номере нужно дополнить справочники организаций и получится прекрасный сервис для коллцентров. Тема неисчерпаемая и неразвитая.
                                  0
                                  Вот здесь тоже интересное решение, я считаю.
                                  Я бы попробовал что-то аналогичное, но у меня нету ключа к API 2GIS
                                  0
                                  Если я Вас правильно понимаю, то всё уже украдено придумано до нас — нечто аналогичное E.164 называется.
                                    0
                                    E.164 — международный формат номера, который мы с вами используем
                                    ENUM — способ преобразования E.164 в ДНС запросы

                                    Это и есть готовая инфраструктура, которую я имел ввиду.
                                      0
                                      Как способ отдачи информации вполне себе вариант. Как способ хранения данных, ниже всякой критики…

                                      ЕNUM это способ сопоставить PSTN E.164 номер определенному пользователю и/или домену. Обычно используются для обеспечения переадресации между VoIP и PSTN (телефонной сетью общего пользования).

                                      Использовать DNS ENUM для интеграции сервисов удобно, для конечного пользователя слишком заморочено…
                                  0
                                  Хорошая у вас теперь база для спама ^_^
                                    0
                                    Поясните?..
                                      0
                                      Запись в базу проверяемых номеров, в итоге у вас база работающих номеров, пользователей которые заинтересованы этой тематикой. Ну я конечно же шучу, когда писал коммент был видимо пьян, так что извините =)
                                    0
                                    То что доктор прописал! Ссылку добавил в избранное (Opera), взвел галку «Show in panel» и теперь могу не залезая на МТТ оперативно смотреть требуемое. Спасибо! Жаль только favicon отсутствует.
                                    Важно! В панели потом настроить на «Small Screen», иначе не видно всего всплывающего сообщения (а его не подвигать)

                                    PS: чорд, хотел на хабрасторадж скриншот кинуть, а он меня не опознает. страннота.
                                    Рискну выложить на халявный хостинг.
                                      0
                                      через киви кошелёк тоже возможно

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое