Как сгенерировать номера телефонов по DEF-кодам — полное руководство

Марина Козлова · · 7 мин чтения

Что такое DEF-коды и как они работают

Представьте: вам нужна база номеров конкретного оператора — например, все номера МТС в Московском регионе. Парсить их из интернета долго и ненадёжно. Проще сгенерировать самостоятельно.

DEF-код (иногда говорят ABC-DEF, но для простоты используют только DEF) — это трёхзначный код оператора в российском мобильном номере. Он идёт сразу после семёрки:

Структура номера: 7 [DEF] [XXXXXXX]

Каждому оператору присвоены определённые DEF-коды. Например:

Зная DEF-код, вы можете сгенерировать все возможные номера этого оператора — или любой диапазон из них.

Зачем генерировать номера по DEF-кодам

Генерация номеров — легальная и полезная операция в нескольких сценариях:

Важно: генерация номеров сама по себе легальна, но использование для нежелательных рассылок или мошенничества — нет. Всегда соблюдайте законы о персональных данных и не спамьте.

Как устроены DEF-коды в России

Российские мобильные коды имеют чёткую структуру. Все мобильные номера начинаются с 79 (код страны + признак мобильного), дальше идёт двузначный код оператора (XX), и замыкает трёхзначный DEF третья цифра (Y):

7 9 [XX] [Y] [XXXXXXX]

Для простоты три цифры после девятки (XXY) называют DEF-кодом.

Примеры распределения DEF-кодов

Оператор DEF-коды Примеры номеров
МТС 910—919, 980—989 79161234567, 79851234567
Мегафон 920—929, 930—939 79201234567, 79351234567
Билайн 900—909, 960—969 79051234567, 79681234567
Теле2 950—953, 958—959, 970—979 79511234567, 79771234567
Yota 955, 999 79551234567, 79991234567

Важно понимать: один DEF-код может содержать 10 миллионов номеров (от 0000000 до 9999999 в последних семи цифрах). На практике не все комбинации активны — часть зарезервирована, часть не выдана.

Excel-формулы для маленьких диапазонов

Подходит для: маленьких диапазонов (до 10 тысяч номеров)
Время: 10 минут
Сложность: низкая

Excel умеет генерировать последовательности. Создадим столбец номеров для DEF-кода 916 (МТС Москва):

  1. В ячейке A1 напишите начальный номер: 79160000000
  2. В ячейке A2 формула: =A1+1
  3. Протащите формулу вниз на нужное количество строк

Получите последовательность:

79160000000
79160000001
79160000002
...
79160009999

Ограничения:

Для быстрого прототипа на десятке тысяч номеров — подойдёт. Для серьёзной работы — нет.

Python-скрипт для любых объёмов

Подходит для: любых объёмов
Время: 15 минут на написание
Сложность: средняя (нужно знать Python)

Python справляется с генерацией миллионов номеров за секунды:

import random

def generate_numbers(def_code, start, end):
    """
    Генерирует номера для заданного DEF-кода.

    def_code: трёхзначный код оператора (например, 916)
    start: начало диапазона последних 7 цифр (например, 0)
    end: конец диапазона (например, 9999999)
    """
    numbers = []

    for i in range(start, end + 1):
        # Формируем номер: 7 + DEF + 7-значный номер
        phone = f"7{def_code}{i:07d}"
        numbers.append(phone)

    # Перемешиваем для случайности
    random.shuffle(numbers)

    return numbers

# Пример: генерируем первые 10 000 номеров для МТС (916)
phones = generate_numbers('916', 0, 9999)

# Сохраняем в файл
with open('phones_mts_916.csv', 'w') as f:
    for phone in phones:
        f.write(phone + '\n')

print(f'Сгенерировано: {len(phones):,} номеров'.replace(',', ' '))

Этот скрипт:

  1. Генерирует все номера в указанном диапазоне
  2. Перемешивает их (Fisher-Yates shuffle)
  3. Сохраняет в CSV

Для нескольких DEF-кодов:

def_codes = ['916', '926', '999']  # МТС Москва, МТС Питер, Yota

all_phones = []
for code in def_codes:
    all_phones.extend(generate_numbers(code, 0, 999999))  # По 1 млн на код

random.shuffle(all_phones)

with open('phones_multiple_def.csv', 'w') as f:
    for phone in all_phones:
        f.write(phone + '\n')

Ограничения:

Basalt — генератор с интерфейсом

Подходит для: любых объёмов, без программирования
Время: 2 минуты
Сложность: нулевая

Basalt предоставляет удобный интерфейс для генерации номеров по DEF-кодам.

Инструкция:

  1. Откройте функцию «Генерация номеров»
  2. Добавьте строки с параметрами:
    • DEF-код: 916 (или другой)
    • От: 0 (начало диапазона последних 7 цифр)
    • До: 9999999 (конец диапазона)
  3. Можете добавить несколько строк для разных кодов (например, 916, 926, 999)
  4. Нажмите «Запустить»

Basalt автоматически:

Пример результата:

Сгенерировано: 10 000 000 номеров
Размер архива: 95 МБ
Время: 1 минута 23 секунды

Файл готов к использованию — просто распакуйте архив и получите CSV с номерами.

Почему Basalt быстрый

Программа использует несколько оптимизаций:

  1. Потоковая запись — номера записываются сразу в файл, не загружаясь целиком в память
  2. Эффективное перемешивание — Fisher-Yates работает за O(n) без дополнительной памяти
  3. Сжатие на лету — большие файлы упаковываются в ZIP с максимальной компрессией

Результат: генерация 10 миллионов номеров занимает меньше двух минут даже на слабом ноутбуке.

Валидность сгенерированных номеров

Важный вопрос: все ли сгенерированные номера реально существуют?

Короткий ответ: нет. Не все комбинации выданы абонентам.

Когда вы генерируете все номера для DEF-кода 916 (от 79160000000 до 79169999999), вы создаёте 10 миллионов комбинаций. На практике:

По оценкам, у крупных операторов (МТС, Мегафон, Билайн) активны примерно 30—50% номеров из доступного диапазона. Это означает, что из 10 миллионов сгенерированных номеров реально работают 3—5 миллионов.

Как проверить активность?

Теоретически можно прозвонить каждый номер и проверить, отвечает ли абонент. На практике это:

Для большинства задач (тестирование, аналитика) неважно, активен ли номер — достаточно, что он корректно сформирован и принадлежит нужному оператору.

Правовые аспекты

Генерация телефонных номеров — не запрещена законом. Вы создаёте математические последовательности, а не получаете персональные данные.

Но:

В России действует закон «О персональных данных» (152-ФЗ). Телефонный номер считается персональными данными, только если он привязан к конкретному человеку. Сгенерированный номер без привязки к владельцу — не персональные данные.

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

Практические советы

1. Всегда перемешивайте

Номера, сгенерированные по порядку (79160000000, 79160000001...), выглядят подозрительно. Перемешивайте их перед использованием — так база кажется естественнее.

2. Генерируйте только нужные диапазоны

Не нужно генерировать все 10 миллионов номеров, если вам достаточно 100 тысяч. Укажите диапазон в последних семи цифрах:

3. Используйте ZIP для больших файлов

Файл с 10 миллионами номеров весит около 120 МБ в CSV. В ZIP он сжимается до 20—30 МБ. Basalt делает это автоматически, но если вы генерируете вручную — не забудьте упаковать.

4. Проверяйте актуальность DEF-кодов

Операторы иногда получают новые диапазоны или отдают старые. Перед генерацией проверьте, что DEF-код действительно принадлежит нужному оператору. Используйте справочники Роскомнадзора или операторов.

Генерация номеров — просто и быстро

Создание базы телефонных номеров по DEF-кодам — несложная задача, если знать структуру нумерации.

Что запомнить:

Выбор инструмента:

Главное — понимайте, зачем вам нужна база, и используйте её ответственно. Генерация для тестирования или анализа — отличная идея. Генерация для спама — плохая и незаконная.