5 pontos por GN⁺ 5 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Por causa de um fenômeno que parecia ser um erro temporário do Reddit em 2021, o Relay for reddit expôs motivos de remoção de spam em todo o site e dados internos de decisão que normalmente ficavam ocultos como Removed: Auto
  • Pelo código do arquivo público, as informações de remoção eram transmitidas via ban_info.banner; o Relay convertia banned_by=true da API para Auto, mas o problema parece ter surgido quando motivos internos passaram a aparecer no mesmo campo
  • Entre os motivos expostos estavam domain, spammit, banned user, shadowban e spamurai; o spamurai incluía idade da conta, karma, número de denúncias, ISP, domínio de e-mail, User-Agent, cabeçalho de idioma, fingerprint TLS, referrer e até pontuação da Perspective API
  • A pontuação de SPAM da Perspective API do Google praticamente coincidia com os valores nos logs de remoção do Reddit, e foram confirmados casos em que a pontuação variava muito por características como adicionar poucos caracteres, substituir por caracteres cirílicos e ignorar maiúsculas/minúsculas e números
  • O antispam do Reddit parece ser um sistema de múltiplas gerações que mistura verificações baseadas em Python 2.7, REV1/REV2 baseados em regras Lua, Snooron e ferramentas de OCR/classificação de imagem; em 2026, considera-se que o risco de divulgação ficou menor por causa do encerramento da Perspective API e das mudanças no spam impulsionadas por LLMs

Motivos de remoção revelados em 2021

  • Um usuário que era moderador do Reddit, ao receber alertas de spam removido no app Relay for reddit em 2021, viu mensagens internas do antispam que normalmente não deveriam aparecer
  • Na tela comum de moderação, uma remoção automática de spam aparece como Removed: Auto, mas na ocasião o motivo real da remoção e dados internos surgiram em texto vermelho
  • O fenômeno voltou ao normal cerca de uma hora depois, e o único material restante são screenshots tiradas na época

Moderação do Reddit e a forma de exibição Auto

  • Nos subreddits, as subcomunidades do Reddit, moderadores da comunidade cuidam da remoção de posts, bloqueio de usuários, gestão de modmail etc.
  • Moderadores conseguem ver por quem um post ou comentário foi removido
    • Remoções por moderadores comuns aparecem com o nome do moderador
    • Remoções pelo AutoModerator aparecem como AutoModerator
    • Remoções pelo filtro de spam de todo o site do Reddit ou por administradores podem aparecer como Auto
  • No log de moderação, remoções de todo o site aparecem como reddit ou Anti-Evil Operations

Caminho de exposição visto pelo código do arquivo público

  • O Reddit publicou seu código-fonte até 2017, e por esse código arquivado é possível rastrear parte do fluxo de processamento de remoções
  • A função de remoção por moderador POST_remove chama admintools.spam
    • moderator_banned distingue se quem removeu foi um moderador ou um administrador
    • banner registra o nome do usuário que executou a remoção
  • get_mod_attributes exporta o ban_info do item removido na resposta da API
    • Quando a remoção foi feita por um moderador, retorna o valor de banner como banned_by
    • Quando a remoção foi feita por um administrador, retorna True em vez do nome real
  • Pelo código decompilado, o Relay for reddit exibia bannedBy como a string Auto quando seu valor era "true"
  • No Reddit, também havia um caminho de código que, ao detectar um domínio proibido no envio de links, colocava o motivo interno no campo banner, como banner = "domain (REASON)"
  • O campo banner contendo motivos internos de remoção originalmente deveria ser visível apenas para administradores de todo o site, mas presume-se que tenha sido exposto a moderadores por um erro em um caminho de código semelhante

Categorias de motivos de remoção expostos

  • domain

    • Remoção baseada em domínio é uma categoria verificável também no código público
    • A maioria aparecia na forma Removed: domain (spam), mas em alguns casos havia observações específicas
    • Houve um caso de remoção de um domínio específico em 2012 para um experimento de spam relacionado ao Tumblr
    • Expressões como le sexxxxy sex spam também apareciam como motivo de remoção
  • spammit

    • spammit parece ser uma categoria que analisa posts e atribui uma porcentagem de probabilidade de spam
    • As pontuações dos casos de remoção confirmados iam de 39,71% a 98,19%
    • Nesses subreddits, também houve muitos casos em que posts legítimos do Imgur foram removidos com pontuações de spam de 70% a 98%, então a precisão não parecia alta
  • Usuários banidos e shadowban

    • Houve remoções no formato Removed: banned user ou Removed: Reddit (banall performed)
    • Esses casos, em sua maioria, pareciam posts claramente spam, como links para serviços publicitários
    • Posts de usuários em shadowban apareciam como Removed: Reddit (shadowban applied on data)
    • Shadowban é um bloqueio silencioso em que, para o próprio usuário, parece que ele ainda consegue postar, mas seus posts e comentários não aparecem para outras pessoas

Dados internos de decisão revelados pelo spamurai

  • spamurai é o item que mais incluía dados internos entre as categorias expostas
  • Materiais de apresentação públicos diziam que o Reddit usava Minsky para “ML” e Spamurai para “Rules”
  • Os motivos de remoção do spamurai vinham com regras simples e dumps detalhados de dados
    • Um nome que parecia ser um subsistema chamado echelon aparecia em remoções por palavras-chave específicas
    • Houve um caso de remoção quando uma conta com menos de 30 minutos postou um comentário que atendia a condições de spam
    • Regras específicas ficavam visíveis, como spam suspeito de afiliados de camisetas, comentários apenas com URL e comentários com pontuação alta no Perspective
  • Itens nos dumps de dados do spamurai

    • link t3_... ou comment t1_... são fullname IDs do Reddit
    • t1 é comentário
    • t2 é usuário
    • t3 é post
    • t4 é mensagem privada
    • t5 é subreddit
    • O valor perspective spam foi identificado como a pontuação de SPAM da Perspective API do Google
    • Incluía dados relacionados à conta
      • Idade da conta
      • Pontuação spammy
      • Karma
      • Número de denúncias
      • Domínio de e-mail
      • ISP ou nome da organização
    • Também havia dados de acesso e ambiente
      • Uso ou não de oauth.reddit.com
      • User-Agent
      • Cabeçalho de idioma LANG
      • Referrer
      • RHS, que parece ser fingerprint de navegador
      • Valor que parece ser fingerprint TLS
      • URL da thumbnail
      • Corpo do post ou comentário
      • Link original do Reddit

Perspective API e possibilidade de contorno

  • O valor 0.12571795 perspective spam no log do Reddit praticamente coincide com o resultado de uma chamada ao atributo SPAM da Perspective API
  • Ao chamar a Perspective API com o mesmo texto, o retorno foi 0.12571794, e a diferença de 0,00000001 pode ser vista como erro de arredondamento
  • O formato das pontuações de exemplo na documentação do Perspective e uma citação de caso pelo CTO do Reddit também são usados como indícios de que o Reddit usava o Perspective
  • O atributo SPAM do Perspective não é detecção de toxicidade, mas um atributo experimental para detecção de spam, e teria sido treinado com um único dataset de comentários do New York Times e dados de moderação
  • Depois de fevereiro de 2026, não será mais possível criar novos projetos da Perspective API no Google Cloud, dificultando novos testes
  • Variações sensíveis na pontuação de SPAM

    • Houve casos em que a pontuação de SPAM do Perspective mudava muito com a adição de apenas alguns caracteres
    • Puppygirl Consulting is the best way to grow your revenue recebe 0.8638981
    • Ao acrescentar qp no fim, cai para 0.010811162
    • Os resultados sugerem que números e maiúsculas/minúsculas são ignorados
    • Mesmo alterando os dígitos de um número de telefone e as maiúsculas/minúsculas, a mesma pontuação era retornada
    • Alguns outros sistemas de escrita também eram tratados com a mesma pontuação
    • Strings diferentes em cirílico receberam a mesma pontuação 0.35077864
    • Em Buy my product, trocar o p latino por р cirílico reduzia a pontuação de 0.6473346 para 0.4452748
    • Com base na API pública, é possível que pequenas alterações na mensagem permitissem contornar um dos principais critérios de decisão do spamurai

Reflexo de denúncias de usuários e aprovações de moderadores

  • O spamurai também parece levar denúncias de usuários em conta nas regras de remoção
  • O motivo REPORT: High spam perspective score on comment with hyperlink reported for spam indica que um comentário com hyperlink denunciado como spam foi removido por ter pontuação alta no Perspective, e que um moderador poderia reaprovar
  • Certos motivos de remoção incluíam uma frase dizendo que, se um moderador aprovasse esse conteúdo, haveria menos remoções no futuro
  • O argumento train_spam em admintools.spam no código público do Reddit decide se ações de moderadores serão usadas no treinamento do antispam
  • É possível interpretar que aprovar posts legítimos em um subreddit poderia ajudar a reduzir falsos positivos

Outras regras de remoção e inspeção de URLs

  • Também houve casos de remoção de links de redirect do Pinterest, links mega.nz e links relacionados a subdomínios que podem ser criados livremente
  • Entre as remoções de links mega.nz, também houve casos legítimos que na verdade eram links para vídeos arquivados do YouTube, indicando falsos positivos
  • O caso Matched forbidden regex u'torenteu' foi removido apesar de torenteu não aparecer diretamente no corpo do texto
    • O Reddit usa unidecode para converter strings Unicode em ASCII
    • 토렌.트 em coreano podia passar pela conversão e por processamento adicional e corresponder a torenteu
  • O caso Failed inspection: Phrase(s) [u'UA-49307539-'] não parecia corresponder ao corpo do comentário nem ao texto convertido, mas ao ID do Google Analytics dentro do HTML da página para a qual o link redirecionava
  • inspection parece ser uma operação em que o Reddit abre a URL, segue redirects e procura padrões na página
  • Ao publicar, em uma conta de teste, um link para uma página web que continha essa string, uma conta de 5 anos foi imediatamente banida e seu histórico de posts foi apagado
    • Em uma conta de amigo com mais histórico de atividade, a mesma reprodução não aconteceu
    • Como não há certeza se o filtro ainda está ativo ou se o banimento da conta foi coincidência, a string real foi alterada antes da publicação

Componentes antigos e atuais do antispam do Reddit

  • O post de 2023 da Reddit Engineering Protecting Reddit Users in Real Time at Scale menciona Rule-Executor-V1, REV2 e Snooron
  • A linha do tempo entendida é a seguinte
    • REV1 foi criado em 2016
    • Snooron foi desenvolvido em 2021 para modernizar o REV1
    • Cerca de 2 anos depois, houve migração para o REV2
  • REV1 e REV2 funcionam com regras Lua, e strings como nil e o momento histórico sugerem uma possível ligação com o spamurai
  • Strings Unicode de Python 2.7 como u'torenteu' e u'UA-49307539-' podem vir de código de inspeção baseado em Python 2.7 fora do spamurai, ou de um código separado de inspeção de URLs chamado pelo REV1
  • Segundo uma apresentação relacionada, o Snooron roda sobre Flink Stateful Functions, realiza classificação de imagens e OCR e usa Python 3 nos workers
  • Em 2024, em um documento da Australian eSafety, o Reddit afirmou usar Hive AI e Google Vision OCR API para OCR e classificação de imagens/vídeos
  • O Hive OCR suporta 12 idiomas, e o Google OCR é usado em conjunto para dar suporte a mais idiomas; o Reddit também estaria trabalhando em uma ferramenta interna com suporte a 80 idiomas
  • Em um ticket de 2009, foi confirmado que crm114 era um filtro de spam treinável por moderadores, e CRM114 é um software antigo de classificação de spam open source

Por que divulgar em 2026

  • O autor avaliou que, se essas informações tivessem sido divulgadas em 2021, poderiam ter sido fatais para o problema de spam do Reddit
  • Em 2026, Perspective API is shutting down está prevista para encerrar no fim do ano, então, mesmo que o Reddit ainda a use, terá que migrar em breve
  • Como LLMs mudaram a indústria de spam, o autor presume que o Reddit tenha reformulado bastante seu sistema antispam para 2026
  • Por esses motivos, considera-se que, atualmente em 2026, o risco de divulgar essas informações é baixo

1 comentários

 
GN⁺ 5 시간 전
Opiniões no Lobste.rs
  • Material e pesquisa interessantes. Como dito na conclusão, é raro ter a chance de ver os detalhes desse tipo de mecanismo antiabuso, e o que chamou especialmente a atenção foi a habilidade peculiar da Lyra com CSS.
    As barras de censura e o círculo vermelho na UI reconstruída do Reddit pareceram, a princípio, uma captura de tela, mas na verdade eram uma maquete totalmente interativa.

    • Até ler este comentário, eu nem tinha percebido que não era uma imagem.
  • Sempre fico na expectativa quando sai um novo post no blog. O conteúdo é realmente interessante, e a habilidade de reproduzir outras UIs também é excelente.
    Até agora, encontrei pelo menos um easter egg.

    • Valeu. Coloquei vários desses neste post ;)
  • Achei bem pesado o trecho em que a pessoa colocou a string <pre>UA-49307539-2</pre> no site para testar com a própria conta e linkou no Reddit, e então uma conta de teste de 5 anos foi suspensa imediatamente e todo o histórico de posts também foi apagado.
    Por isso, o número real foi alterado para UA-49307539-, para não publicar um texto capaz de matar uma conta; espero que essa conta fosse mesmo só de teste e não tivesse nada importante.

  • Ao tentar abrir no Safari móvel no beta de desenvolvedor mais recente do iOS no iPhone 16 Pro, aparece o erro “a problem repeatedly occurred” em <url>, então não dá para ver.

    • Não faço a menor ideia do motivo, e no momento também não tenho um iPhone por perto.
      Eu ficaria muito grato se alguém fizesse uma busca binária no HTML e encontrasse a causa do crash.
  • Para quem estiver curioso, a chave da Perspective API incluída não é válida.

    • Em bans (2016 - present), o fato de a empresa de consultoria censurada como exemplo de spam ser Puppygirl Consulting dá aos viciados em ferramentas de desenvolvedor uma pista de que as partes censuradas provavelmente são falsas ou easter eggs :^)