Пять лет назад модератор Reddit по ошибке увидел то, что видеть не должен. Вместо обычной надписи Removed: Auto в логе удалений появились внутренние причины. Так он заглянул в антиспам-систему Reddit.
Оказалось, Reddit использует поле banner для хранения настоящих причин удаления — но видеть их могут только админы. Из-за бага данные утекли в клиент Relay. Внутри оказалось несколько систем. Domain просто банит ссылки на определённые сайты. Spammit оценивает пост в процентах — например, «72.98% spammy». Есть блокировка по shadowban (пользователь не подозревает, что его никто не видит) и по banall performed — когда админы массово вычищают ботов.
Но самое интересное — spamurai. Это продвинутая система правил, которая использует Perspective API от Google. Reddit применяет экспериментальный атрибут SPAM, обученный на единственном датасете комментариев New York Times. Уязвимость оказалась вопиющей: подбирая символы к тексту, можно легко обойти фильтр. Две случайные буквы снижают спам-скору с 86% до 1%. Кириллица тоже сбивает детектор — слово «рroduct» (с русской «р») получает вдвое ниже оценку, чем английский аналог. Perspective игнорирует регистр, цифры и срабатывает на любые символы одинаково.
Spamurai собирает кучу данных: ID поста (t3_phc4xx), спам-скору Perspective, возраст аккаунта в днях и секундах, ISP пользователя, тип браузера, TLS-отпечаток (собственная разработка Reddit), реферер, язык и даже превью. Отдельная фишка — Reddit проверяет ссылки на лету: открывает URL, проходит редиректы и ищет там запрещённые строки. Например, Google Analytics ID. Автор проверил это на тестовом аккаунте — разместил на своём сайте UA-49307539-2, запостил ссылку в Reddit — аккаунт мгновенно забанили, а всю историю стёрли. Идентификатор в статье изменён, чтобы не подставлять читателей.
Также Reddit использует библиотеку unidecode для конвертации нелатинских символов в ASCII — это позволяет ловить обходные написания вроде «토렌.트», превращающегося в torenteu. Некоторые паттерны вообще не видны в тексте, но находятся в коде страницы по ссылке. Механизм грубый, но эффективный — хотя и чреват ложными срабатываниями на легитимный контент.