как узнать какой провайдер по номеру телефона
Как определить мобильного оператора и домашний регион по номеру телефона
Когда мы пытаемся определить какому оператору принадлежит номер телефона, то обычно смотрим на его DEF код. Например, если номер начинается на 916, то это МТС, на 968 – Билайн, 926 – Мегафон (все зависит от вашего региона). Но этот метод очень условный и совершенно не подходит когда нужны точные данные. В реальности все сложнее: DEF коды часто делят между собой несколько операторов, и совсем необязательно, что искомый номер относится к операторам большой четверки. Ну и наконец, номер можно просто портировать.
В статье я расскажу о том, как по номеру телефона достоверно определить мобильного оператора который его обслуживает, а также получить дополнительную, «бесплатную» информацию – домашний регион абонента. Использовать эти данные можно как угодно, начиная от предзаполнения адреса в анкете пользователя и перенаправления на региональную версию вашего сервиса, до использования этих данных в процессинге и статистике. В конце статьи будет ссылка на github с исходниками.
Сразу оговорюсь, что домашний регион абонента, по большому счету, никак не связан с текущим месторасположением пользователя, т.е. определяемый регион отвечает на вопрос «Откуда номер?», а не «Где пользователь?».
Источники данных
Россвязь
Свой номер телефона мы получаем когда заключаем договор на обслуживание с оператором связи. В свою очередь, распределением диапазонов номеров между операторами связи, а также стандартизацией и общим контролем за услугами связи занимаются соответствующие государственные и международные организации. В России такой организацией является Федеральное агентство связи (Россвязь).
Таким образом, самым надежным источником информации кто обслуживает российский номер телефона является Россвязь, причем это открытые данные, которые агентство публикует у себя на сайте: www.rossvyaz.ru/opendata. Свежий список диапазонов мобильных номеров находится в CSV по ссылке. Каждая строка в файле выглядит как:
DEF-код, начало диапазона, конец диапазона, название оператора, название региона
Однако, с 2013 года появилась возможность переносить номер от оператора к оператору. Значит, руководствуясь только реестрами Россвязи, нельзя однозначно сказать, что номер обслуживается определенным оператором. Зато это вполне можно сказать про регион, ведь переносимость номера работает только в рамках домашнего региона и перенести номер из МТС Новосибирск в Tele2 Санкт-Петербург не получится в принципе.
Таким образом, если по задаче нужно определить только регион пользователя, то реестров Россвязи будет достаточно.
База Данных Перенесенных Номеров
Структура этой базы крайне проста: это три CSV файла в которых в формате «номер, название оператора» перечислены:
Суммируя: у нас есть некие диапазоны номеров, которые соответствуют определенным операторам и регионам (Россвязь), и список номеров-исключений из этих диапазонов (БДПН), который распространяется только на название оператора.
Как определять абонентов
Самое очевидное решение этой задачи: посмотреть на слово «диапазон» и использовать перечисленные емкости буквально. Т.е. для определения номера, сортируем всех операторов по их диапазонам и ищем запись, которая относится к минимальному диапазону, в который попадает конкретный номер. Сложность этого алгоритма будет как у бинарного поиска, что довольно неплохо.
Но есть более оригинальный и универсальный способ реализации, сложность которого – константа, независимо от размера данных. Этот метод предполагает использование масок номеров.
Маска номера
Маска номера – это строка состоящая из цифр и спецсимвола со значением «wildcard одиночного символа» («?»), который говорит, что на его месте может быть любая цифра. Причем после знака вопроса может стоять только знак вопроса.
Таким образом, один из диапазонов Билайн в Москве «79031000000 – 79031999999», в виде маски будет записан как «79031. ».
С такими масками очень удобно работать, например, задавать их вручную в конфигурации. Кроме того, представление диапазонов в виде масок дает возможность использовать более эффективные методы хранения и простые алгоритмы поиска.
Хеш-таблица
Например, один из таких алгоритмов это хранение соответствий «маска-оператор» в хеш-таблице (или любом другом key-value хранилище). Суть алгоритма в следующем: все подобные маски складываются в хеш-таблицу, где они являются ключами. Значениями в таблице являются объекты-операторы с регионами.
Работу поиска нагляднее всего объяснить на примере. Скажем, мы ищем информацию по номеру: 7(903)100-1234, и у нас есть маска 79031. – Билайн, Москва.
Сперва ищем в таблице запись по ключу в точности как исходный номер: 79031001234.
Если не найдено, то меняем последнюю цифру номера на «?» и ищем по ключу 7903100123?.
Если опять ничего не нашли, то снова меняем последнюю цифру на «?» и ищем по 790310012. и так далее.
В конце концов мы сделаем поиск по ключу 79031. и обнаружим, что номер относится к оператору Билайн, Москва.
Видно, что в данном случае сложность алгоритма равна сложности нескольких взятий из хеш-таблицы, что при правильной реализации обычно равно константе. Сложность поиска в таком дереве зависит от длины телефонных номеров, которая по рекомендации ITU-T E.164 не превышает 15 символов.
Этот же алгоритм можно применить и к портированным номерам – их можно просто добавить в ту же самую хеш-таблицу.
Префиксное дерево
Гораздо более эффективный по производительности метод – построение префиксного дерева из масок, который будет опираться на то, что номера состоят из цифр. Каждая нода этого дерева сможет иметь до 10 цифровых нод-потомков (0-9) и одной wildcard-ноды. Wildcard-нода может иметь только wildcard-потомков. При добавлении очередной маски в дерево, каждый символ маски последовательно превратится в ноду. Таким образом, фактически мы представляем все имеющиеся у нас маски в виде одного дерева.
Например, дерево состоящее из масок: 7913? – Mno1 791?? – Mno3 7952 – Mno2 7953 – Mno3 795? – Mno1 будет иметь вид, как на картинке (перечисленные маски в дереве идут слева направо). |
Алгоритм поиска в дереве, думаю, уже понятен: берем по порядку каждую цифру из искомого номера и последовательно спускаемся по дереву начиная с корня. В первую очередь спускаемся по цифровым нодам, если цифровых нод нет, то смотрим есть ли «?»-нода. Если есть, то в конечном итоге проверяем длину маски, и если она соответствует номеру, то оператор найден.
Заключение
В зависимости от ограничений, можно комбинировать эти подходы и разделять хранилища перенесенных номеров и масок Россвязи. Например, по памяти выгоднее для портированных номеров использовать подход с хеш-таблицей, а для реестров Россвязи всегда выгоднее использовать дерево масок. При поиске сначала смотреть в таблице, а если в ней ничего не найдено, то искать в дереве. Разделение хранилищ в первую очередь удобно для их автообновления, т.е. если изменилась БДПН (а она меняется постоянно), то совсем необязательно перечитывать диапазоны Россвязи.
Для максимальной производительности можно хранить всю информацию прямо в оперативной памяти. В моей реализации на Java, дерево масок Россвязи занимает не более 20-30Мб, хеш-таблица с масками портированных номеров: около 500-600 Мб. Если же портированные номера хранить в префиксном дереве, то из-за того, что ноды дерева получаются очень разреженные, памяти потребуется примерно в 1.5 раза больше. Но зато, это дает достаточно весомый прирост производительности.
Как определить оператора и регион по номеру телефона
Полезно знать, какого телефонного оператора выбрал клиент и в каком регионе. Тогда можно разбить клиентскую базу географически и не звонить ночами. Или проводить промоакции вместе с операторами. А некоторые наши заказчики экономят: для каждого оператора выбирают самого дешевого СМС-агрегатора.
Поэтому «Дадата» с давних пор находит оператора по номеру телефона. Алгоритм простой — сделай и пользуйся. Разве что в 2013 году, когда отменили «мобильное рабство», пришлось чуть скорректировать процесс. В этой статье расскажу, как у нас все работает.
В процессе есть большая сложность — получить доступ к базе перенесенных номеров. Частным лицам его не выдают, да и компаниям придется тяжело. Об этом — в отдельном разделе.
Разбить телефонный номер на части
Первое, что нужно сделать, — разобрать телефон на три части:
Если не знать, какая часть номера из каких цифр состоит, дальше будет непросто. Выход — поставить маску, чтобы пользователи сразу вводили номера по частям. Или разбирать уже после, с задачей справится библиотека Google для работы с телефонами.
Найти оператора по номеру телефона, заглянув в план нумерации
Главный российский документ, согласно которому операторы получают телефонные номера, — это план нумерации Россвязи. В нем ясно прописали все расклады: какие коды и номера каким операторам в каких регионах принадлежат. Что приятно, справочник Россвязи свободно лежит на странице rossvyaz.ru/deyatelnost/resurs-numeracii/vypiska-iz-reestra-sistemy-i-plana-numeracii.
Справочник выложили сразу в двух форматах, что очень мило со стороны Россвязи. Обновляют раз в месяц
Внутри плана нумерации четыре файла: три для стационарных номеров и один — для мобильных. Разница между содержимым файлов заметна, если посмотреть на префиксы в названиях:
Номер +7 495 999-99-34 может быть прямым мобильным. А может быть, это офис покупает у сотового оператора фиксированную связь — знает только сам оператор.
Но я отвлекся, вернемся к плану нумерации. Внутри файлов все очень просто — таблица на шесть полей.
Порядок полей таков: ABC- или DEF-код зоны, начало диапазона, конец диапазона, емкость, оператор, регион. Емкость — просто количество номеров, входящих в диапазон
Искать по плану нумерации регион и оператора — одно удовольствие.
Порой телефон не укладывается ни в один диапазон. Это значит, что номер неправильный. Исключений нет. На этом, надо сказать, прокалывается упомянутая библиотека Google — она одобряет внешне верный телефон, не сопоставляя с планом нумерации.
Раньше на этом шаге изыскания заканчивались. Но в 2013 году власти приняли закон об отмене «мобильного рабства». С тех пор номера телефонов прибиты к операторам не так уж крепко.
Теперь закон разрешает: меняйте оператора, сохранив номер. Но, внимание, только внутри региона. Нельзя вытащить телефон из региона, предусмотренного Россвязью. Как нельзя и «сломать» диапазоны распределения номеров. Поэтому, если интересен лишь регион телефонного номера, дальше можно не читать. А я продолжу и расскажу, как найти сменившие операторов номера.
Получить доступ к базе перенесенных номеров
Это шаг бюрократический, соответственно, самый сложный. А для большинства компаний и вовсе непроходимый, к сожалению.
Номера, сменившие оператора, хранят в базе данных перенесенных абонентских номеров (БДПН). Ее оператор — уже не Россвязь, но Центральный научно-исследовательский институт связи.
Проблема в том, что получить доступ к БДПН очень непросто. Конечно, если вы не мобильный оператор, субъект национальной платежной системы, силовая структура или другое ведомство.
Все, что может рядовой пользователь — вручную проверить конкретный номер
Мы получили доступ к БДПН в далеком 2013 году как «иная организация». Но с тех пор правила, похоже, ужесточили. Даже бланк заявления сильно изменился, свежий лежит на сайте Института связи. Поэтому посоветовать здесь ничего не могу, увы.
UPD. В комментариях пишут, что с доступом все не так сурово: «Работал в энергосбытовой компании, без проблем за несколько дней получил доступ к бдпн. заполнил заявление, подписал директором, поставил печать и отправил по электронике. Потом созвонился для верности».
Проверить, не ушел ли номер к другому оператору
Если получили доступ к официальной базе перенесенных номеров, дальше легко. Проверяем, не поменял ли абонент оператора, сбросив оковы «мобильного рабства».
Институт связи выкладывает БДПН на SFTP-сервер, в три папки.
В первой папке лежит полный справочник. Во второй — инкрементальные обновления. А третья хранит номера, вернувшиеся «владельцам»
В название инкрементов вставляют дату и время обновления. Если хотите максимально срочно получать перенесенные номера — вот, пожалуйста. Если срочности нет, проще раз в сутки загружать полный справочник
Формат файлов — CSV, сжатые в ZIP. Внутри — проще некуда.
В файлах справочника три поля: номер, оператор и количество строк. Причем третье поле заполняют только для первой строки — изящное решение
Историю в БДПН не хранят: каждый день на сервер выкладывают все перенесенные номера. Если телефона нет в полном справочнике или в инкрементах за день, значит, он подчиняется плану Россвязи. Поэтому для наших целей папка с вернувшимися номерами — ReturnIncrementNew — не нужна.
Каждый день мы загружаем с сервера свежую БДПН. Для этого годится любой SFTP-клиент: на Windows подойдет WinSCP или FileZilla FTP Client, на Ubuntu — Nautilus. Классическая ошибка при этом: оставить в настройках дефолтный FTP вместо положенного SFTP. Так можно долго промучиться, не повторяйте наших ошибок.
Когда справочник перенесенных номеров под рукой, осталось поискать в нем исследуемый номер. Варианта два:
А можно разобрать номер «Дадатой»
Еще вариант — отдать номер телефона «Дадате», сервис вытащит из него полезное.
Распозна́ем оператора, исправим опечатки в номере, покажем страну, регион и часовой пояс. Наконец, отделим стационарник от мобильного
Как узнать сотового оператора по номеру телефона
Во время недоступности сотовой сети на мобильный могут поступать звонки от неизвестных абонентов. Не переживайте из-за пропуска важного звонка, ведь существует вариант того, как узнать сотового оператора по номеру телефона. Полученные данные помогут не тратиться на связь с другим регионом или позволят проигнорировать следующий звонок незнакомца.
Можно ли определить оператора по номеру телефона
РФ имеет немного провайдеров мобильной связи и каждые обладают индивидуальными комбинациями цифр. Как узнать сотового оператора по номеру телефона? Легко. Если номер начинается на +7, тогда вам звонил абонент из России. В начале комбинации стоит другое число, значит это звонок из другой страны или региона. Зная коды разных стран, можно легко проверить, откуда звонят.
Помимо этого кода, следующие 3 цифры в мобильном обозначают принадлежность определенной компании связи. Зависит число от места продажи симок: купить SIM-карту с определенным префиксом допускается в конкретном регионе. Префикс провайдера уникальный для каждого региона, на его основе ведется поиск адреса субъекта. Индикатором определения принадлежности пользователя служат def-коды после кода страны. Они уникальны, всегда стабильны и фиксированы.
Как найти какому оператору принадлежит номер сотового телефона
Существует множество бесплатных сайтов, где просто, доступно выясняется, какой это оператор связи по номеру телефона. Их принцип работы заключается в том, чтобы ввести данные в специальную графу, нажать старт. Дальше система проанализирует введенную комбинацию цифр, выдав информацию. Некоторые службы запрашивают лишь первые 5 цифр, чтобы достоверно определить данные владельца. Сотовый оператор по номеру телефона пробивается за считаные секунды, сама же служба показывает принадлежность кода.
В прошлом году введена услуга сохранения данных при переходе на обслуживание другим провайдером. Например, абонент Билайн мог стать пользователем Теле 2, оставив при этом префикс Билайна. Поэтому система поиска может работать несовершенно, ведь проверить, совершил человек переход с одного оператора связи на другой, сложно. Сами компании могут не вести учет о переходах, тем более такие данные не сохранены и в поисковиках. Проверка через подобные приложения может быть безрезультатной.
Коды и префиксы самых крупных сотовых операторов России
Наша страна имеет всего 4 крупные компании, оказывающие услуги мобильной связи. Узнать номера сотовых операторов России можно, взглянув на трехзначный код, который индивидуален при выдаче SIM-карты каждой компании. Поэтому возможность предоставлять информацию, чей это абонент, занимает немного времени. Системная информация проверяется за доли секунды, достоверность же результата зависит от того, проводилась ли смена провайдера. Если смены не было, то данные не менялись, поэтому могут использоваться как достоверные.
Мегафон
Для Мегафона характерны следующие серии: 920-932, 933, 938. Комбинации цифр разные для отдельных регионов, например, в Москве это 925, а в Кировской области 922. Помимо этого, Мегафон предоставляет серию 929 и 997. Оператор мобильной связи делится сериями телефонов с МТС и Билайн. Каталог кодов закладывается внутрь анализирующих систем, используясь потом при проверках.
Мобильные ТелеСистемы (МТС)
Для МТС характерны следующие серии: 910-919, 980-983, 988. Эти цифры помогают узнать, где возможно приобрести SIM-карту. Для Москвы используется 910, а для Сибири 913, 983. У МТС существует особенность распределения префиксов между городами, например, после кода характерными московскими являются цифры от 0 до 4, а петербургскими от 0 до 2 или от 7 до 9. Остальные числа принадлежат другим областям и городам.
Билайн
Для Билайна после международного кода характерны серии: 903, 905-906, 909, 960-965, 967. Здесь коды привязаны к субъектам страны, при проверке система выдаст название компании с регионом. Для Москвы характерны серии 903, а для Дальнего Востока 964. У Билайна градация отличается только на территории Дальнего Востока. Все префиксы могут использоваться внутри государства, а Дальневосточному округу предназначена уникальная комбинация цифр. Такое преимущество округ получил из-за размеров территории, количества населения, популярности мобильной связи.
Теле 2
Самый молодой провайдер, но уже имеющий свою базу кодов. Для Теле 2 характерны следующие префиксы: 900, 902, 904, 908, 950-953. У него имеются свои особенности – провайдера нет в некоторых субъектах страны, поэтому совпадение префиксов с данными показывает, что оказывает услугу местная компания, действующая на территории одной области или края. Узнать информацию помогут все те же бесплатные сервисы, которые наглядно продемонстрируют, откуда совершался звонок, обозначат это место на карте.
Как узнать регион по номеру телефона
Любая мобильная система имеет свои комбинации цифр, которые зависят от того, в каком регионе человек купил симку. Это означает, что каждая комбинация кодов уникальна внутри определенного субъекта РФ. Сервисы, определяющие принадлежность пользователя, располагают этими данными, поэтому выдают информацию о крае или области, откуда звонил абонент. Узнать оператора по номеру телефона возможно из официальных сайтов компаний мобильной связи.
Популярный сервис проверки субъекта страны и абонента мобильной связи – GSM-inform. Для определения пользователя нужно ввести первые 5 цифр телефона. Воспользовавшись программкой Spravportal, вы сможете наглядно на карте увидеть, откуда звонили. Оба сервиса работают на безоплатной основе.
Сотовые операторы России
В России среди сотовых операторов выделяются три компании — МТС, Мегафон, Билайн. Они имеют наибольшее число абонентов. Остальные сотовые операторы имеют значительно меньше клиентов и представлены только в отдельных регионах РФ. Популярными операторами, но не входящими в «большую тройку», можно назвать Tele2, Ростелеком, Смартс. Общее число действующих операторов сотовой связи в России составляет более сотни. Некоторые региональные операторы являются дочерними организациями крупных российских компаний. Например, «Вотек Мобайл» в Туле и «Белгородская Сотовая Связь» принадлежат Tele2.
Ниже перечислены все коды, используемые сотовыми операторами РФ. По каждому коду имеется детальная информация: операторы, регионы, год ввода.
Что представляет из себя номер сотового телефона? Согласно телефонному плану нумерации Российской федерации коды сотовых операторов представлены трехзначным числом, начинающегося с 9. После кода следует семизначный номера абонента.
Общий вид кода: 9xx
Общий вид телефонного номера: +7 9хх ххх-хх-хх
Коды сотовых операторов называют негеографическими телефонными кодами или def-кодами. Сотовым компаниям выделен определенный код (или несколько кодов) и диапазон номеров для абонентов.
Кроме того, для «мобильной тройки» выделены целые серии кодов, имеющих одинаковую вторую цифру:
92x, 93x — Мегафон
91x, 98x — МТС
96x — Билайн
Таким образом, если вам звонят с номера, начинающего, например, на +7 92. то вы можете быть уверены, что звонят с Мегафона. В разных регионах один и тот же сотовый оператор может располагать разным диапазоном номеров. Например, код 905 и номер из диапазона 2500000-2899999 принадлежит Билайну (ОАО «Вымпел-Коммуникации») по Санкт-Петербургу, а код 905 и диапазон 1830000-1849999 — тоже Билайн, но уже по Ульяновской области.
Нумерация def-кодов со временем претерпевала изменения. Одно из изменений связано с переходом сотовых компаний из географических кодов (4xx) в зону негеографических кодов (9xx). Так, в Москве МТС перешла с 495 на 985, Мегафон — с 495 на 925. Таким образом, коды 925 и 985 в настоящее время дублируют прямые московские номера. Другое изменение связано с освобождением оператором одних кодов и переход на другие. Например, оператор МТС в 2002 и 2003 годах перешел с 902 на привычные сейчас 910, 912, 916.
Таблица соответствия есть для каждого кода (список кодов представлен на этой странице чуть выше). Однако после отмены «мобильного рабства» нельзя будет однозначно ответить на вопросы «какой оператор с кодом 903?», «код 910 какого оператора?» и подобные.
Популярные операторы
В таблице ниже показаны коды, названия компаний и регионы, в которых работают популярные операторы России.
Билайн
МТС
прямые московские номера, старый код 495
Мегафон
прямые московские номера, старый код 495
Tele2 (Теле2)
Отдельная серия номеров с кодом 999 принадлежат Ростелекому, МАТРИКС телеком, МИТ-ТЕЛ
У крупных сотовых операторов в некоторых густонаселенных регионах России имеется несколько кодов. ffЕсли говорить о систематизации кодов относительно их распределения по регионам, то четкого структурного распределения не наблюдается, однако у отдельных компаний прослеживается «порядок». Так, коды 921 и 931 используются Мегафоном в Калининградской области и северных регионах, 936 и 926 — в Москве. В то же время у Билайна код 903 используется во многих регионах и явной систематизации по паре код-регион не прослеживается.