Три быстрых способа определить мобильного оператора и регион абонента
Мне часто звонят с незнакомых номеров. Уверена – такое случается не только со мной. Многие звонки связаны с работой, но часто, перезванивая, я натыкаюсь на спам. Поэтому мне проще сначала проверить откуда звонили, а уже потом перезванивать.
Конечно, я как и все, смотрю на первые цифры в номере и по ним пытаюсь понять, кто оператор. Логика простая: когда номер начинается на 921, то это Мегафон, 960 – Билайн, 911 – МТС и так далее.
Но эта схема работает только в домашнем регионе и далеко не всегда – сегодня многие абоненты с легкостью переходят от одного оператора к другому с сохранением номера, да и некоторые DEF коды часто используют разные операторы.
Когда сталкиваюсь с номерами из других регионов, то вообще начинается путаница. К примеру, код Мегафона 922 используется в 11 регионах России. Я нашла несколько простых способов, которые помогают определить мобильного оператора и регион абонента с высокой точностью.
Проверка номера на сайте Центрального научно-исследовательского института связи
На сайте института связи есть сервис, с помощью которого можно посмотреть, к какому оператору относится номер. Система определяет даже портированные номера – те, которые пользователи переносили от одного оператора к другому.
Но если стоит задача выяснить из какого города поступил звонок, то этот сервис вряд ли поможет. На сайте ЦНИИС можно определить только оператора.
Сервис для проверки от Мегафона
Бесплатный сервис Мегафона для определения телефонных кодов операторов. Корректно определяет принадлежность к оператору и региону. С портированными номерами тоже нет проблем.
Проверяла на своем старом номере, который я когда-то переносила с Мегафона на Билайн.
Но странная история с симкой от Ростелекома. При проверке определяется как Tele2. В СМИ писали , что госкорпорация собирается купить 100% акций мобильного оператора. Но это не точно.
Мобильное приложение “Кто звонит”
“ Кто звонит ” – приложение для iOS от российских разработчиков. Более информативный способ получить данные об абоненте. Вводишь в главном окне номер и получаешь полноценный отчет – регион, оператор и отзывы о номере от других пользователей. Сомнений, что они настоящие, нет.
Если правильно настроить приложение, то номера будут определяться во время входящего вызова. Удобная программа, но платная – 379 рублей.
Есть лайфхак для бережливых – онлайн-сервис » Кто звонит «. Там можно бесплатно смотреть отзывы о номерах.
Пишите свои способы определения телефонных номеров! Всем удачи
Как определить мобильного оператора и домашний регион по номеру телефона
Когда мы пытаемся определить какому оператору принадлежит номер телефона, то обычно смотрим на его DEF код. Например, если номер начинается на 916, то это МТС, на 968 – Билайн, 926 – Мегафон (все зависит от вашего региона). Но этот метод очень условный и совершенно не подходит когда нужны точные данные. В реальности все сложнее: DEF коды часто делят между собой несколько операторов, и совсем необязательно, что искомый номер относится к операторам большой четверки. Ну и наконец, номер можно просто портировать.
В статье я расскажу о том, как по номеру телефона достоверно определить мобильного оператора который его обслуживает, а также получить дополнительную, «бесплатную» информацию – домашний регион абонента. Использовать эти данные можно как угодно, начиная от предзаполнения адреса в анкете пользователя и перенаправления на региональную версию вашего сервиса, до использования этих данных в процессинге и статистике. В конце статьи будет ссылка на github с исходниками.
Сразу оговорюсь, что домашний регион абонента, по большому счету, никак не связан с текущим месторасположением пользователя, т.е. определяемый регион отвечает на вопрос «Откуда номер?», а не «Где пользователь?».
Источники данных
Россвязь
Свой номер телефона мы получаем когда заключаем договор на обслуживание с оператором связи. В свою очередь, распределением диапазонов номеров между операторами связи, а также стандартизацией и общим контролем за услугами связи занимаются соответствующие государственные и международные организации. В России такой организацией является Федеральное агентство связи (Россвязь).
Таким образом, самым надежным источником информации кто обслуживает российский номер телефона является Россвязь, причем это открытые данные, которые агентство публикует у себя на сайте: www.rossvyaz.ru/opendata. Свежий список диапазонов мобильных номеров находится в CSV по ссылке. Каждая строка в файле выглядит как:
DEF-код, начало диапазона, конец диапазона, название оператора, название региона
Однако, с 2013 года появилась возможность переносить номер от оператора к оператору. Значит, руководствуясь только реестрами Россвязи, нельзя однозначно сказать, что номер обслуживается определенным оператором. Зато это вполне можно сказать про регион, ведь переносимость номера работает только в рамках домашнего региона и перенести номер из МТС Новосибирск в Tele2 Санкт-Петербург не получится в принципе.
Таким образом, если по задаче нужно определить только регион пользователя, то реестров Россвязи будет достаточно.
База Данных Перенесенных Номеров
Если нужно точно определять оператора, тогда не обойтись без Базы Данных Перенесенных Номеров, оператором которой является ЦНИИC . Процедуру подключения к базе можно найти у них на сайте: zniis.ru. Но, к сожалению, насколько я знаю, напрямую подключиться к ним не просто, а получив подключение, делиться базой ни с кем нельзя.
Структура этой базы крайне проста: это три CSV файла в которых в формате «номер, название оператора» перечислены:
- все перенесенные номера на текущий день (обновляется раз в день);
- все перенесенные номера за последний час (обновляется раз в час);
- все номера возращенные родному оператору обратно за последний час (обновляется раз в час).
На момент написания статьи, в БДПН находится около 6 миллионов записей.
Суммируя: у нас есть некие диапазоны номеров, которые соответствуют определенным операторам и регионам (Россвязь), и список номеров-исключений из этих диапазонов (БДПН), который распространяется только на название оператора.
Как определять абонентов
Самое очевидное решение этой задачи: посмотреть на слово «диапазон» и использовать перечисленные емкости буквально. Т.е. для определения номера, сортируем всех операторов по их диапазонам и ищем запись, которая относится к минимальному диапазону, в который попадает конкретный номер. Сложность этого алгоритма будет как у бинарного поиска, что довольно неплохо.
Но есть более оригинальный и универсальный способ реализации, сложность которого – константа, независимо от размера данных. Этот метод предполагает использование масок номеров.
Маска номера
Маска номера – это строка состоящая из цифр и спецсимвола со значением «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 раза больше. Но зато, это дает достаточно весомый прирост производительности.
Определить оператора по номеру телефона — все способы
Вам часто поступают звонки с незнакомых номеров? Определить оператора по номеру телефона и выяснить, откуда он звонил, довольно легко.
Благодаря полученной информации вам не придется перезванивать незнакомцу в другой регион и тратить лишние деньги на звонок другого сотового оператора.
Поиск оператора по номеру телефона: сложно ли это?
В РФ не так много провайдеров мобильной связи и все они имеют свою собственную комбинацию цифр.
Начнем с простого: если номер начинается на +7, значит, абонент звонил из России.
После первой цифры следующие три обозначают, к какой мобильной компании принадлежит владелец номера телефона.
Число зависит от региона продажи SIM-карты. Уникальный для каждого региона префикс провайдера помогает в случае чего отследить адрес субъекта.
Найти оператора по номеру сотового можно на специальных сайтах (при помощи программ). Там вы просто вводите номер в специальную графу и сайт выдает вам результат. Результат вы получаете быстро и бесплатно.
Поэтому сейчас сайты, определяющие принадлежность номера к тому или иному оператору мобильной связи, не всегда дают достоверную информацию.
Кроме того, даже если с виду префикс принадлежит МТС (например, 978 в Крыму), то цифра «9», которая следует за префиксом, указывает на оператора WinMobile, действующем там же на полуострове.
Самые крупные мобильные операторы России: коды и префиксы
Сейчас в нашей стране действует 4 самых крупных оператора, которые предоставляют услуги мобильной связи. Познакомимся с ними получше:
«Мегафон»
Для этого оператора характерны следующие коды: 920-932.
Префикс зависит от региона использования:
- 920 – Центральный регион и Поволжье;
- 921 – Северо-Западный регион;
- 922 – Урал;
- 923 – Сибирь;
- 924 – Дальний Восток;
- 925-926 – столичный регион и область;
- 927 – Поволжье;
- 928 – Краснодар и Северный Кавказ.
«МТС» (Мобильные ТелеСистемы)
Пожалуй, самый популярный мобильный оператор в России. В компании действует интересная особенность распределения префиксов – каждый из них отвечает за конкретный регион страны.
К слову, характерные для москвичей номера также можно «опознать» по цифрам после префикса – обычно это 0 и 4, в «северной столице» – от 0 до 2 и от 7 до 9.
Диапазон номеров МТС:
- 910, 915 – центральные регионы;
- 911, 981 – Северо-Западный регион;
- 912, 982 – Урал;
- 913, 983 – Сибирь;
- 914, 984 – Дальний Восток;
- 917, 916, 985 – столица и область;
- 987 – Поволжье;
- 918, 988 – Северный Кавказ и Краснодар.
«Билайн»
Этой компании принадлежат такие коды:
- 903, 963 и 909, 964-968 – все регионы РФ;
- 905 и 906 – все регионы (кроме Дальнего Востока);
- 951 и 953 – Приморский край;
- 960 – все регионы (кроме Урала).
Перечисленные выше комбинации начальных цифр относятся ко всей территории России.
Особая градация в «Билайне» действует на Дальнем Востоке. Это связано с популярностью этого мобильного оператора в данном регионе.
«Теле 2»
Самый молодой провайдер, который уже успел завоевать симпатию многих российских граждан.
Префиксы «Теле 2» следующие:
- 900-902, 908, 953, 958 – все регионы;
- 904 – Ростов, Липецк, Курск;
- 950 – 952 – ряд регионов (уточнить можно на официальном сайте);
- 977 – Москва и область;
- 991 – Санкт-Петербург и Новгород;
- 992 – Челябинск, Курск и области;
- 993 – Тамбов, Тыва, Хакасия;
- 994 – Сахалин, Магадан и Камчатка;
- 995 – Краснодар и Калмыкия.
В некоторых регионах страны (например, в Крыму) компания свои услуги не оказывает. Поэтому совпадение с провайдером случайно – чаще всего местные операторы просто «арендуют» префикс для локальных мелких провайдеров.
Заключение
Перед тем, как поднять трубку или перезвонить по незнакомому номеру, хорошо подумайте. Проверка незнакомого номера просто необходима!
С чужого телефона могут звонить мошенники. Стоит вам только ответить на звонок – и вас могут списаться деньги с мобильного счета.
Установить оператора по номеру мобильного
1.5.0 (22.03.2017)
* Исправление работы с базами
1.4.9 (24.09.2014)
* Исправление работы с журналом вызовов
1.4.8 (23.09.2014)
* Исправление работы с базами
1.4.7 (02.08.2014)
+ Добавлены правила обработки номеров Грузии и Японии
1.4.6 (01.08.2014)
+ Добавлены правила обработки номеров Таиланда и Тайваня
1.4.5 (29.07.2014)
* Исправлено обновление баз
1.4.4 (1.10.2012)
* Исправлена ошибка обработки номеров Литвы
1.4.3 (28.09.2012)
+ Добавлены правила обработки номеров Молдавии и Литвы
+ Небольшое изменение внешнего вида списка баз
1.4.2 (03.08.2012)
+ Добавлены правила обработки номеров Латвии
1.4.1 (20.07.2012)
+ Добавлено уведомление об ошибке при использовании старых баз номеров
* Исправлена ошибка поиска номеров с совпадающими префиксами
* Исправлена ошибка зависания сообщения при USSD-запросе
* Исправлена ошибка, приводящая к падению приложения на Android 4.1, при выборе номера из списка Контактов
1.4.0 (19.07.2012)
+ Изменён формат баз номеров (базы для версий 1.3.x более не поддерживаются)
+ Улучшен алгоритм поиска номеров
* Исправлены ошибки обработки номеров стран с переменной длиной номера (Германия и т.п.)
1.3.9 (03.07.2012)
+ Улучшен алгоритм поиска номеров
+ Небольшие оптимизации ресурсов
* Исправлены обработчики ошибок
1.3.8 (28.06.2012)
* Исправлена ошибка вывода, приводящая к нестабильности отображения сообщения на некоторых устройствах HTC и Samsung
1.3.7 (27.06.2012)
+ Добавлена возможность выбора отображать или нет информацию об абонентах в Контактах
* Исправлен выбор номера из Контактов
* Исправлены правила обработки номеров Казахстана
1.3.6 (14.06.2012)
+ Небольшие изменения интерфейса
+ Добавлена опция «Скрывать сообщение при нажатии»
+ Улучшены правила обработки номеров совпадающих диапазонов
* Исправлена ошибка правил обработки стран для которых отсутствуют базы номеров
1.3.5 (31.05.2012)
+ Сгруппированы настройки для вх./исх. вызовов
* Исправлены правила обработки номеров Сербии и некоторых других стран
* Исправлена ошибка обработки номеров Германии
1.3.4 (15.05.2012)
* Исправлены правила обработки номеров Казахстана и некоторых других стран
1.3.3 (12.05.2012)
+ Небольшие изменения в процедурах скачивания и установки баз
+ Изменена пиктограмма приложения
1.3.2 (27.04.2012)
+ Изменения в настройках внешнего вида сообщения. Добавлены «Фон», «Рамка» и т.п.
— Удалена настройка «Стиль сообщения»
* Исправлена (на этот раз точно) ошибка отображения города в сообщениях и уведомлениях
1.3.1 (21.04.2012)
+ Добавлены кнопки выбора номера из Списка контактов и Журнала вызовов
* Исправлена ошибка настроек при изменении стиля сообщения
* Исправлена ошибка создания папки для хранения баз при первой установке приложения
1.3 (17.04.2012)
+ Изменён формат базы
+ Добавлена возможность установки и обновления баз через Интернет
+ Добавлена поддержка установки на SD-карту (с Android 2.1 и выше)
+ Изменены настройки по умолчанию «Прозрачность» (25%) и «Расположение» (внизу)
* Исправлена ошибка отображения города в сообщениях и уведомлениях
1.2.11 (17.10.2011)
* Исправлена ошибка с отсутствующим полем города в окне «Результаты поиска»
* Исправлена ошибка в списке стран на устройствах с английской локалью
* Исправлен баг с нечитаемыми надписями в настройках приложения на устройствах с английской локалью
1.2.10 (14.10.2011)
* Исправлен баг в ресурсах, приводящий к падению приложения на устройствах с английской локалью
1.2.9 (14.10.2011)
+ Добавлены настройки времени показа для исх./вх. сообщений (показывать до завершения, до ответа, заданное время)
* Исправлены настройки «Смещение по X/Y» (убраны «мёртвые зоны»)
* Исправлен баг настройки «Размер текста»
1.2.8 (11.10.2011)
+ Добавлены настройки для сообщений и уведомлений с выбором ВСЕХ отображаемых данных (Номер, Страна, Регион, Оператор)
+ Добавлены настройки «Смещение сообщения по вертикали и горизонтали»
+ Добавлены поясняющие сообщения в окно Поиска
* Исправлены баги с настройками
* Исправлен баг с пустым сообщением при USSD-запросе (в очередной раз)
1.2.7 (10.10.2011)
+ Изменена настройка «Прозрачность» (инвертировано значение)
* Исправлены баги предыдущей версии
1.2.6 (9.10.2011)
+ Добавлена настройка «Скрыть сообщение после ответа на входящий вызов»
+ Добавлены подсказки при вводе номера и сообщения об ошибках
+ Изменения настройки «Ваше местонахождение»
* Исправлен баг при анализе номера с несуществующим кодом страны
* Исправлен баг при анализе очень коротких номеров
* Исправлен баг с пустым сообщением при USSD-запросе
1.2.5 (7.10.2011)
+ Добавлена возможность определения номера в местном (не в международном) формате
+ Добавлена настройка «Размер текста»
+ Добавлены настройки для выбора отображаемых данных (Номер, Страна) в сообщении
* Изменён вид настройки «Прозрачность сообщения»
* Оптимизация кода: списки параметров, списки стран
1.2.4 (30.09.2011)
+ Добавлен параметр «Прозрачность сообщения»
* Исправлен баг с опциями показа в настройках
* Исправлен баг с Тестом сообщения в настройках
* Исправлены настройки положения при выборе сообщения вида «Полоса»
1.2.3 (28.09.2011)
+ Добавлены параметры в настройки (расположение сообщения, выравнивание текста в нём)
+ Добавлены виды сообщений (тост, полоса, только текст без фона)
+ Изменён способ вывода сообщений (теперь стабильно работает со всеми сторонними приложениями типа Full/BIG/Smart Screen CallerID, оболочками MIUI и HTC Sense)
* Незначительные оптимизации кода
1.2.2 (20.09.2011)
* Исправлен баг (неработоспособность до первого запуска приложения) после перезагрузки или засыпания устройства
1.2.1 (19.09.2011)
+ Добавлен тест всплывающего сообщения в настройках
* Исправлен баг при определении стран
1.2 (19.09.2011)
+ Изменён формат базы
* Исправлен баг при звонках на USSD-номера
* Исправлен баг работы с базой на Android 2.3 и выше
1.1.1 (16.09.2011)
+ Добавлен пункт меню «Базы данных» для отображения состояния SD-карты и баз
1.1 (15.09.2011)
+ Изменён формат базы
+ Добавлены базы России и Украины
+ Добавлены Настройки сообщений и уведомлений
+ Добавлено отображение сообщений и уведомлений при исходящих звонках
+ Добавлены настройки расположения сообщения на экране
+ Всплывающее сообщение показывается на протяжении всего разговора
1.0 (01.09.2011)
+ Первая версия
- Добавить возможность отражать или нет инфу о тех абонентах, что есть в телефонной книге
- Добавить выбор цвета шрифта и фона
- Добавить форматирование номера (т.е. например +7 (495) 123-45-67)
- Добавить несколько расположений окна сообщения (отдельно для исх., входящих вызовов и т.д.)
- Изменить настройки — сгруппировать: для входящих звонков, для исходящих.
- Добавить проверку обновлений раз в сутки и авто-обновления баз
- Добавить возможность скрывать сообщение при нажатии на него
- Расширенный журнал звонков. Добавить к номерам информацию о регионе, плюс к тому прикрутить к пропущенным звонкам время дозвона или количество гудков дозвона (чтобы иметь косвенное представление о важности этого звонка: звонили до посинения, позвонили случайно. ). и возможность открытия пропущенного зонка из трея в данной программе, а не в стоковой звонилке.
Если у вас есть предложения по функционалу, которого вам не хватало в аналогичных приложениях, пишите их в этой теме, они будут непременно учтены при разработке будущих версий.
Поддержите разработчика и помогите развитию проекта!
(Яндекс.Деньги): https://money.yandex.ru/to/410011150391193
Сообщение отредактировал igoRRRek — 08.01.19, 21:03