Спам-фильтр для реального мира: как метят звонки и посылки
Те же байесовские классификаторы, что чистят почту, теперь фильтруют телефонные звонки, SMS и даже посылки на складе. Разбираем, как работает детекция спама там, где нет заголовков письма.

Голосовой ассистент отвечает на входящий звонок, задаёт звонящему пару вопросов и вешает трубку, если распознаёт робота, — так работает Call Screen у Google Pixel. Оператор МТС в приложении помечает номер как «Возможно, спам» ещё до того, как вы возьмёте трубку. Почтовый сортировочный центр отсеивает посылки без корректного трек-кода в отдельный поток. Всё это — детекция спама, вынесенная из ящика Gmail в физический мир, где нет ни заголовков письма, ни ссылок для анализа. Задачи те же, а вот сигналы, на которых учатся модели, совсем другие.
Что общего у спам-письма и спам-звонка
Классическая антиспам-задача формулируется просто: есть поток объектов, каждый нужно отнести к одному из двух классов — «легитимный» или «нежелательный». Для почты объект — письмо, признаки — слова в теме и теле, адрес отправителя, репутация IP. Модель, которую использовали ещё в SpamAssassin двадцать лет назад, — наивный байесовский классификатор: он считает, насколько слово «виагра» типичнее для спама, чем для нормальной переписки, и перемножает вероятности.
Перенесите ту же логику на телефонный звонок — и признаки меняются радикально. Текста нет вообще, пока звонящий не заговорит. Зато есть:
- частота набора — робот обзванивает тысячи номеров в минуту с одного источника;
- длительность разговоров — у автообзвона она аномально короткая и однообразная;
- шаблон номера — подмена (spoofing) часто выдаёт себя тем, что номер по формату локальный, а маршрутизация международная;
- жалобы пользователей — краудсорсинговый сигнал, самый ценный и самый шумный одновременно.
Именно поэтому детекция в реальном мире — это не «тот же фильтр, что для почты». Это отдельный класс задач, где признаки собираются с датчиков, сетевой телеметрии и поведения людей, а не парсятся из структурированного документа.
Три уровня, где ловят «физический» спам
Условно приложения делятся на три группы по природе сигнала.
| Уровень | Что фильтруют | Ключевые признаки | Кто анализирует |
|---|---|---|---|
| Сеть связи | Звонки, SMS, робозвонки | Частота, длительность, репутация номера, spoofing | Оператор, ОС смартфона |
| Логистика | Посылки без адресата, фрод-заказы | Трек-код, вес, маршрут, история отправителя | Сортировочный центр, маркетплейс |
| Физическое пространство | Листовки в подъезде, QR-наклейки, «серые» объявления | Компьютерное зрение, геометки, повторяемость | Камеры, модерация фото |
SMS и звонки: телеком как самый горячий фронт
Оператор видит поток вызовов на уровне сигнализации SS7 и SIP ещё до соединения. Это даёт возможность классифицировать вызов за миллисекунды, не слушая содержимое. Признаки берутся из метаданных: сколько уникальных номеров вызвал источник за час, какова доля непринятых вызовов, совпадает ли заявленный Caller ID с реальным маршрутом.
Против подмены номера в ряде стран внедряют протокол STIR/SHAKEN — криптографическую подпись, которая подтверждает, что оператор-отправитель действительно вправе использовать этот номер. Это не машинное обучение, а инфраструктурная мера, и она закрывает ровно ту дыру, которую модель по метаданным поймать не может: honest-looking подмену локального номера.
Хороший антиспам в телекоме — это не одна модель, а слоёный пирог: криптоподпись отсекает подмену, поведенческая модель ловит массовость, а краудсорсинг жалоб добивает то, что прошло первые два слоя.
Проблема краудсорсинга — задержка и накрутка. Пока пользователи нажмут «Спам» достаточное число раз, кампания робозвона уже отработает. Плюс конкуренты и мошенники научились массово помечать чужие легитимные номера, чтобы вывести их из строя. Поэтому голоса взвешивают по репутации самого жалующегося — ровно как в антифроде рекламных кликов.
Почему нельзя просто слушать разговор
Транскрибировать звонок и прогнать текст через языковую модель технически можно, и Call Screen у Google делает нечто похожее локально на устройстве. Но масштабировать это на уровне оператора мешают три вещи: стоимость распознавания речи на миллиардах вызовов, задержка (классифицировать надо до соединения) и приватность — прослушивание содержимого регулируется куда жёстче, чем анализ метаданных.
Логистика: спам в виде посылок и заказов
На маркетплейсах и в службах доставки «спам» принимает форму фрод-заказов и bulk-отправлений без реального получателя. Здесь признаки — из транзакционных данных: как часто с одного аккаунта уходят посылки, совпадает ли адрес отправителя с историей, не выбивается ли вес и габариты из заявленной категории товара.
Отдельная история — brushing*, когда продавец сам себе отправляет пустые или дешёвые посылки на реальные чужие адреса, чтобы накрутить количество «подтверждённых заказов» и поднять карточку в выдаче. Внешне это выглядит как обычная логистика, а по сути — спам в физическом канале. Ловят его по несоответствию: получатель ничего не заказывал, отправитель гонит однотипные лёгкие посылки веером по адресам.
Как это устроено под капотом
Архитектура почти всегда одинаковая, меняются только источники признаков:
- Сбор сигналов — телеметрия сети, метаданные транзакции, кадр с камеры. Всё сводится к вектору признаков.
- Быстрый фильтр — простые правила и лёгкая модель (логистическая регрессия, градиентный бустинг), которые отсекают очевидное за миллисекунды.
- Тяжёлый анализ — для пограничных случаев запускают модель побольше или отправляют объект на ручную модерацию.
- Обратная связь — жалобы и подтверждения возвращаются в обучающую выборку. Без этого цикла модель деградирует за недели, потому что спамеры меняют тактику.
Главный враг тут — concept drift*: распределение спама сдвигается быстрее, чем распределение обычных сообщений. Модель, обученная на прошлогодних робозвонах, к новой кампании уже слепа. Поэтому в проде переобучение идёт постоянно, а не раз в квартал.
Ключевой вывод для инженера: не пытайтесь тащить в физический мир текстовые фичи из почтового антиспама. Сильный сигнал почти всегда лежит в поведении и метаданных — частоте, повторяемости, несоответствии заявленного и фактического, — а не в содержимом. Содержимое дорого анализировать, оно упирается в приватность, и спамер меняет его первым.
* Brushing — накрутка отзывов и рейтинга продавца через фиктивные отправления реальным людям, которые ничего не заказывали.
* Concept drift — постепенное изменение статистических свойств данных со временем, из-за которого обученная модель теряет точность.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: FCC — STIR/SHAKEN Caller ID Authentication, Google — How Call Screen works (Pixel Help)
Частые вопросы
Чем детекция спама в звонках принципиально отличается от почтовой?
Что такое STIR/SHAKEN и заменяет ли он машинное обучение?
Почему нельзя просто распознавать речь и анализировать её текст?
Что такое brushing и как его отличают от нормальной логистики?
Почему антиспам-модель приходится постоянно переобучать?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.