Черный и белый списки. Один из вариантов реализации

в 6:51, , рубрики: android, Алгоритмы, белый список, Спам (и антиспам), телефония, черный список, метки: , ,

Черный и белый списки. Один из вариантов реализации

Какое-то время назад мы уже рассказывали о нашем проекте РосСпам — приложении для Android, которое позволяет максимально автоматизировать отправку жалобы в ФАС на рекламные SMS. Конечно же, получая большое количество информации об отправителях рекламных SMS, нельзя было ею не воспользоваться. Потому мы реализовали централизованный Черный список. Однако, логика работы нашего списка совсем непростая.

Глобальный черный список

Он же — централизованный черный список. Тут все относительно просто. От пользователей, которые отметили, что полученная ими SMS является спамом, мы получаем информацию об отправителе SMS, а также текст этой SMS. Если на одного отправителя пожаловалось несколько разных пользователей, то он попадает в Глобальный черный список. Черный список ежедневно обновляется на устройствах пользователей. Но тут возникает несколько проблем.

Проблема 1. Спам ли это?

Один отправитель может отсылать разные SMS — как полезные, так и рекламные. Например, два сообщения отправителя 900 (Сбербанк):

ECMC1234: 16.12.13 22:00 операция зачисления на сумму 5000.00 руб. ITT 103233 2216 выполнена успешно. Доступно: 30721.32 руб.

Жилищный кредит на специальных условиях до 31.12.13 Генеральная лицензия Банка России на осуществление банковских операций №1481 от 08.08.2012г. Подробная информация по телефону: т. +79161234567 и на сайте Банка www.sberbank.ru

Для кого-то первая SMS полезна, а вторая — спам. Для кого-то другого — полезны обе SMS.
На серверной стороне есть возможность добавить отправителя в игнор-лист. Тогда сколько пользователи ни будут на отправителя SMS жаловаться, в Глобальный черный список он не попадет. Но в описанном выше случае это не поможет.

Проблема 2. Время появления

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

Проблема 3. Будет пропущена нужная SMS

Допустим, на отправителя пожаловалось определенное количество человек. Модераторы вовремя «хорошего» отправителя не отследили, он попал в Глобальный черный список, нужная SMS была заблокирована.

Как это решается?

Начнем с проблемы 3 — конечно же, полученные SMS не удаляются полностью. Все заблокированные SMS сохраняются в Истории приложения. Но этого мало. Вернемся к этой проблеме ниже.

Локальный черный список

Позволяет решить частично Проблему 1 и полностью Проблему 2. Как только пользователь пожаловался на рекламную, по его мнению, SMS, ее отправитель тут же попадает в Локальный черный список. И неважно добавлен ли отправитель в игнор-лист на стороне сервера, пожаловались ли на него другие пользователи — SMS от данного отправителя пользователь больше не увидит. Но если пользователь ошибся, то у него, конечно же, есть возможность удалить отправителя из Локального черного списка (удалить отправителя из Глобального списка — нельзя).

Белый список

По умолчанию белый список — это адресная книга пользователя. Если отправитель есть в адресной книге, то его сообщение не будет считаться спамом. Но не каждый захочет добавлять в адресную книги банки, авиакомпании и прочих отправителей, чьи SMS нужны. Потом в приложении существует свой Белый список. Любого отправителя из Глобального списка можно добавить в Белый список. Белый список имеет приоритет над двумя Черными списками. Если отправитель найден в Белом списке — это точно не спам.

Но как помочь пользователю идентифицировать хороших по его мнению отправителей в Глобальном черном списке и вовремя добавить их в Белый список (проблема 3)? Особенно, когда записей в Глобальном черном списке очень много (на момент написания этого текста в базе РосСпам таких отправителей около 600)? Для этого в нашем приложении новые записи в списке считаются «непрочитанными» и подсвечиваются голубым. Как только пользователь увидит новую запись (точнее, посмотрит на нее не менее 5 секунд) — она отмечается «прочитанной» (как письма в MS Outlook). Достаточно периодически заходить в Глобальный черный список, чтобы просматривать новые записи и переносить их в Белый список, если нужно. Небольшой бонус, облегчающий жизнь пользователя, — отправители в списке сортируются без учета специальных символов в их названии (потому, например, как на картинке выше — L_Gorod. и .L.Gorod идут друг за другом).
Да, Белый список — локальный. Из него также можно удалять записи.

Что думаете вы про такую реализацию черного и белого списков?

Автор: and7ey

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js