Определение региона по телефонному номеру для поиска знахарок

Цель статьи – показать, как с помощью современных технологий и открытых баз данных можно определить географический регион владельца телефонного номера, а затем использовать эту информацию для построения эффективных сервисов поиска традиционных целителей (знахарок) в любой точке России.


Почему регион телефона важен при поиске знахарок?

Знахарки, как правило, работают в небольших населённых пунктах и часто не имеют официальных онлайн‑страниц. Их клиентская база формируется через рекомендации, телефонные звонки и местные рекламные листовки. Если у вас есть номер телефона потенциального клиента или партнёра, знание его региона позволяет:

  • Сократить список возможных мест проживания знахарки.
  • Подстроить рекламные сообщения под локальные особенности (язык, традиции, праздники).
  • Оптимизировать маршруты полевых визитов специалистов‑посредников.
  • Собрать статистику спроса на услуги знахарок по регионам.

Структура телефонных номеров в России

Российская телефонная нумерация построена по международному плану E.164 и имеет следующий вид:

+7 (Код региона) ХХХ-ХХ-ХХ

Где:

  • +7 – международный код России.
  • Код региона (3‑значный) – определяет географический район (область, крупный город или мобильный оператор).
  • ХХХ-ХХ-ХХ – абонентская часть номера.

Коды фиксированных линий

Для стационарных телефонов коды региона (так называемые DEF‑коды) привязаны к конкретным субъектам РФ. Примеры:

  • 495 – Москва.
  • 812 – Санкт‑Петербург.
  • 383 – Тюмень.
  • 351 – Нижний Новгород.

Коды мобильных операторов

Мобильные номера начинаются с 9, а дальше – с 3‑значного префикса, который изначально указывал на оператора и регион:

  • 903, 904, 905 – МТС (разные регионы).
  • 916, 917, 918 – Мегафон.
  • 910, 911, 912 – Билайн.
  • 950, 951, 952 – Теле2.

С 2013 года в России действует услуга переноса номера (MNP), поэтому привязка к оператору и региону может быть изменена. Поэтому для точного определения региона необходимо использовать актуальные базы данных, учитывающие перенесённые номера.

Основные источники данных о регионах телефонов

Официальные документы Роскомнадзора и Роскомсвязи

План нумерации, опубликованный на сайте Роскомнадзора, содержит официальные диапазоны кодов для всех регионов РФ. Однако он не учитывает перенос номеров.

Публичные API

Существует несколько бесплатных и платных сервисов, предоставляющих JSON‑ответы с информацией о регионе и операторе:

  1. Regius API – пример запроса. Возвращает region, mnc, oper и страну.
  2. MNP API – сервис определения оператора и региона с учётом перенесённых номеров. Возвращает массив region (id, name).
  3. Numverify – международный сервис, поддерживает российские номера, но в бесплатной версии ограничен по запросам.

Открытые базы данных

На GitHub можно найти репозитории с CSV‑файлами, содержащими более 290 000 записей о диапазонах номеров (данные 2025‑2026 годов). Пример репозитория: ru-phone-codes.

Как построить собственный сервис определения региона

Выбор подхода

Существует два основных пути:

  • Локальная база – загрузить CSV‑файл в свою СУБД (PostgreSQL, MySQL) и выполнять поиск по префиксу.
  • Внешний API – отправлять запросы к готовому сервису (Regius, MNP) и получать готовый ответ.

Пример реализации на Python (локальная база)

import csv
from bisect import bisect_left

ranges = [] # список кортежей (начало, конец, регион)
with open('ru_phone_ranges.csv', newline='', encoding='utf-8') as f:
 reader = csv.DictReader(f)
 for row in reader:
 start = int(row['range_start'])
 end = int(row['range_end'])
 region = row['region_name']
 ranges.append((start, end, region))

ranges.sort(key=lambda x: x[0])

def find_region(phone):
 # Убираем все символы, оставляем только цифры
 digits = ''.join(filter(str.isdigit, phone))
 if len(digits) != 11 or not digits.startswith('7'):
 return 'Некорректный номер'
 number = int(digits[1:]) # без кода страны
 # Бинарный поиск
 i = bisect_left(ranges, (number, ))
 if i < len(ranges) and ranges[i][0] <= number <= ranges[i][1]:
 return ranges[i][2]
 elif i > 0 and ranges[i-1][0] <= number <= ranges[i-1][1]:
 return ranges[i-1][2]
 else:
 return 'Регион не найден'

print(find_region('+7 -95 123-45-67')) # → Москва

Пример обращения к внешнему API (cURL)

curl -G "https://api.regius.name/ifaces/phone-number/asterisk" 
 --data-urlencode "phone=+7 -95 1234567" 
 -H "Accept: application/json"

Ответ (пример):

{
 "phone": "+7 -95 1234567",
 "region": {"id": 77, "name": "Москва"},
 "mnc": "250",
 "oper": {"id": 1, "name": "МТС"},
 "country": "RU"
}

Специфика поиска знахарок

Географическая гранулярность

Для традиционных целителей достаточно знать не только субъект РФ, но и конкретный район/населённый пункт. Поэтому после получения области следует:

  • Сопоставить её с базой КЛАДР (Классификатор адресов России) для получения списка городов и сельских поселений.
  • Использовать открытые реестры «Росреестр» и «Госуслуги», где иногда указаны контакты традиционных целителей.

Фильтрация по типу услуги

В базе знахарок обычно присутствуют поля:

  • Тип практики (традиционная медицина, народные целебные травы, рунические практики и т.д.).
  • Год основания (для оценки репутации).
  • Контактный телефон.

Сопоставив регион телефона с полем «регион» в базе знахарок, можно быстро сформировать список подходящих специалистов.

Пример SQL‑запроса

SELECT z.id, z.name, z.phone, r.name AS region
FROM знахарки z
JOIN regions r ON z.region_id = r.id
WHERE r.name = :region_name
 AND z.phone IS NOT NULL
ORDER BY z.rating DESC
LIMIT 20;

Ограничения и юридические аспекты

Точность при наличии MNP

Перенос номера может изменить регион, но не всегда обновляется мгновенно в открытых базах. Поэтому рекомендуется:

  • Сочетать несколько источников (офиц. реестр + API).
  • Периодически (раз в месяц) обновлять локальную базу.

Защита персональных данных

Обработка телефонных номеров подпадает под действие ФЗ‑152 «О персональных данных». Требования:

  • Получать согласие субъекта на хранение и обработку номера.
  • Обеспечить шифрование базы (TLS при запросах к API, AES‑256 при хранении).
  • Вести журнал доступа и предоставлять возможность удаления данных по запросу.

Этические вопросы

Знахарки часто работают в рамках традиций, а их услуги могут восприниматься как альтернативная медицина. При публикации результатов поиска следует:

  • Указывать, что информация предоставлена «как есть» без гарантии качества.
  • Не использовать данные для навязывания услуг без явного согласия пользователя.

Лучшие практики внедрения

  1. Кеширование результатов – храните ответ API в Redis (TTL 24 ч) для снижения нагрузки.
  2. Пакетная обработка – если нужно определить регион для тысяч номеров, используйте bulk‑запросы (некоторые API поддерживают массив номеров).
  3. Обратная связь – позволяйте пользователям исправлять неверно определённый регион (формой «Мой регион»).
  4. Мониторинг качества – сравнивайте результаты с реальными адресами, полученными от клиентов, и корректируйте базу.

Определение региона по телефонному номеру – ключевой элемент при построении сервисов поиска знахарок по всей России. Современные открытые API (Regius, MNP) и регулярно обновляемые CSV‑базы позволяют получать точные данные даже в условиях переноса номеров. При правильном сочетании технических решений, юридической ответственности и этических принципов можно создать надёжный и полезный инструмент, который поможет людям находить проверенных традиционных целителей рядом с домом.

Если вы планируете реализовать такой сервис, начните с выбора источника данных, интегрируйте его в ваш бекенд, позаботьтесь о защите персональных данных и протестируйте работу на реальных примерах. Удачной разработки!