“O Loop da Frustração”
(herman.bearblog.dev)- A plataforma gratuita de blogs Bear virou alvo de fazendas de backlinks, phishing, venda de drogas ilegais, anúncios de cassinos online e spam de promoção de cripto por causa da baixa barreira de entrada para cadastro
- Foi possível reduzir a exposição com
no-index·no-followe exclusão do feed, mas era difícil impedir o simples fato de conteúdo spam ser publicado na plataforma - O bloqueio com base no Akismet foi eficaz, mas as mensagens de bloqueio acabavam dando aos spammers pistas para contornar o sistema
- O “loop da frustração” não bloqueia diretamente; em vez disso, redefine formulários, desativa colar, muda o foco e mostra erros repetidos para fazer o spammer perder tempo
- Depois da aplicação, a proporção de spam em novos blogs caiu de cerca de 30% para menos de 5%, e em 3 meses só houve 1 usuário que relatou problema: um anunciante de cassino online
Por que a Bear virou alvo de spam
- Bear pode ser usada gratuitamente, então é fácil se cadastrar, e isso atrai spammers querendo abusar da plataforma
- O spam se parece menos com tráfego simples de bots e mais com fazendas de spam, como comprar “100 backlinks” no Fiverr
- Centenas de trabalhadores mal remunerados enviam conteúdo por toda a web
- O objetivo é subir no ranking de SEO, embora se considere que isso não tenha efeito real
- A Bear já mantinha uma linha básica de defesa para que, mesmo se o spam fosse publicado, ele não fosse exposto para a internet em geral
- Blogs não revisados recebem tags no-index e no-follow
- Também não aparecem no sitemap nem no feed de descoberta
- Se o usuário optar por solicitar revisão, esse estado pode ser removido
- Mesmo assim, além de impedir exposição, queriam reduzir a própria existência de conteúdo spam dentro da plataforma
A abordagem de atrasar o contorno em vez de bloquear
- Para detectar spam, a plataforma usa Akismet, uma ferramenta da linha WordPress
- Tentaram criar um sistema próprio de detecção com GPT4, mas ele era menos preciso e mais caro que o Akismet
- Depois disso, migraram para uma assinatura do Akismet
- Bloquear no momento do cadastro teve algum efeito, mas com o tempo os spammers aprenderam a se adaptar
- O bloqueio vira um sinal de qual conteúdo é pego
- Os spammers fazem o blog parecer legítimo primeiro e depois publicam spam em áreas com fiscalização mais fraca
- No fim, era preciso encontrar e sinalizar isso manualmente
- O bloqueio por IP também tem pouca eficácia
- Os spammers usam VPNs comerciais como a Nord
- Só a Nord VPN já tem centenas de servidores no mundo todo, então é quase impossível barrar isso só com bloqueio de IP
- Bloquear publicações de um IP específico também pode bloquear usuários legítimos
Como funciona o “loop da frustração”
- The Frustration Loop não bloqueia imediatamente o blog quando o spam é detectado; ele faz parecer que houve erro de sistema ou falha, para desgastar o usuário
- A ideia veio de The Password Game
- Quando o spam é detectado, o formulário é apagado e aparece um erro como “Our servers are bearly managing. Try again later.”
- O recurso de colar é desativado em todas as áreas de texto
- A cada 5 a 10 segundos, o foco de entrada muda para outro campo, fazendo com que a digitação possa ir parar no lugar errado
- Se a pessoa enviar de novo, aparece outro erro, como “Ensure content contains necessary parameters.”
- Repetindo esse processo, a ideia é fazer a pessoa concluir que o software está com defeito e desistir
- A chance de isso ser acionado para usuários normais é considerada baixa
- Nos testes, não foi possível ativá-lo sem realizar explicitamente comportamentos suspeitos
- Ele ficou 3 meses em produção, e só 1 usuário relatou problema
- Esse usuário estava anunciando um cassino online
Resultados da aplicação e brechas restantes
- Depois da aplicação, a proporção de spam entre novos blogs caiu de cerca de 30% para menos de 5%
- Não é uma solução perfeita, e ainda há espaço para melhorias e brechas a serem fechadas
- Há preocupação de que divulgar a abordagem possa ajudar spammers em potencial a contorná-la, mas acredita-se que spammers não leiam esse blog
1 comentários
Opiniões no Hacker News
Isso me lembra o Newsvine[2], um dos primeiros sites de notícias comunitárias, criado em 2006 por Mike Davidson[1], um ex-colega da ESPN
O Newsvine tinha comentários, recomendações, envio de links e publicação de textos; era um serviço parecido com o Reddit, mas centrado em notícias. Para lidar com spammers e trolls, se um usuário fosse marcado como troll no backend, todos os carregamentos de página daquela conta recebiam um atraso aleatório de 10 a 60 segundos, e lembro que isso reduzia o problema de forma bastante eficaz
1- http://mikeindustries.com/blog/
2- https://en.wikipedia.org/wiki/Newsvine
Alguém marcado como troll no backend por motivos totalmente diferentes poderia sofrer atrasos ao interagir com uma autoridade governamental. Atraso não é o mesmo que bloqueio, mas me pergunto se, aos olhos de um juiz federal, a degradação da experiência do usuário seria parecida o suficiente
Historicamente, os ricos, as classes cerimoniais e as classes ociosas puderam comprar mais atenção, então continuaram despejando todo tipo de ruído que lhes vinha à cabeça. Agora, a produção de conteúdo supera em muito o consumo, de modo que não sobra atenção suficiente para nada
Se ninguém lê 99% dos comentários e links do HN, será que os brilhantes gênios que administram o HN nos diriam isso? As plataformas deram a todos direitos gratuitos de transmissão sem nem saber o que estavam criando, e agora não só os ricos, mas todo mundo faz spam e trollagem de graça. O que sobra é só ruído; basta ler o relatório da ONU sobre a economia da atenção
Parece que o fato de engenheiros de software com visão estreita conseguirem tornar sistemas rápidos e escaláveis é a única razão para existirem esses sistemas sem sentido que desperdiçam o tempo e a energia de todos
Trabalhei dentro do Akismet por mais de 6 anos
O Akismet é muito bom em detecção de spam em comentários, mas, se fosse bom em detectar spam de cadastro, não teria havido tantos blogs de spam no wordpress.com
Usando mecanismos de busca, listas selecionadas de termos e ferramentas criadas por desenvolvedores, eu rastreava blogs de spam e suspendia milhares de blogs realmente spam. Às vezes havia erros, mas eram raros
Depois, algumas ferramentas de automação foram criadas, mas essa caça e suspensão caiu na lista de prioridades. No começo, o wordpress.com precisava parecer limpo para crescer, mas, quando julgaram que já estava grande o suficiente, isso parou. Eu sabia que era como tentar apagar um carro em chamas com uma pistola d’água, mas não levava muito tempo e era bem satisfatório
Nesta época do ano, eu vasculhava blogs de spam de Halloween, e os blogs de spam de Christmas também começavam a aparecer
Uso um método simples para eliminar spam de e-mail sem filtros de terceiros
Tenho um domínio pessoal para e-mail e uma conta catch-all que recebe todos os e-mails enviados ao domínio. Em vez disso, dou endereços diferentes para cada site e serviço, como sitea@mydomain.com e site2@mydomain.com
Assim, consigo classificar automaticamente as mensagens de forma confiável conforme a origem, e também mantenho um padrão consistente para os nomes que forneço, de modo que mensagens aleatórias que não seguem esse padrão são apagadas imediatamente, sem que eu sequer as veja
Quase não recebo spam, mas, se algum serviço vaza o endereço, eu troco ou cancelo o e-mail desse serviço e coloco aquele endereço na lista de bloqueio de recebimento. É tão simples que sinto que todos os programas de e-mail deveriam conseguir tratar um domínio inteiro dessa forma
Por exemplo, se chega um “aviso do banco” no endereço que criei para uma loja online, não pode ser verdadeiro. Um endereço abusado pode ser invalidado removendo-o de /etc/aliases
Além disso, configurei o servidor postfix para recusar conexões se o remetente não tiver mapeamento DNS reverso. Isso funcionava 20 anos atrás e, olhando os logs hoje, ainda continua útil
Por exemplo, se vier para anything_s@mydomain.com, vai direto para a pasta de spam. Uso isso para quase tudo, do Google a cadastros em sites pequenos. Afinal, em geral eles só mandam spam, e, quando verifico a pasta de spam de vez em quando, nunca há nada importante
A maior parte dos e-mails enviados por empresas comuns também não me interessa, então considero spam. O Uber Eats envia várias mensagens por pedido, o que, pelos meus critérios, é simplesmente spam. Se fosse um serviço com que eu realmente me importasse, eu daria um endereço com outro sufixo que não fosse para o spam, mas isso quase nunca acontece
Além do spam de phishing que chega quando um site vaza o endereço, isso também filtra bem aqueles e-mails do tipo “informações importantes sobre uma pequena interação” que a maioria dos sites envia
O catch-all faz parecer, do lado dos spammers, que todos os e-mails foram entregues com sucesso, então o spammer pode continuar reenviando e desperdiçando recursos
Pelo que observei, o spam só chega nos endereços de e-mail que publiquei no blog e no GitHub. Parece que ninguém vendeu meu endereço para spammers; eles apenas rasparam endereços públicos
A equipe de spam de redes sociais normalmente aplica shadow ban nos spammers
O objetivo é tornar o mais difícil possível para o spammer perceber que foi pego. Por isso, acho que técnicas de frustração ou simples suspensão de conta não são muito usadas
A prevenção de spam é interessante porque, em essência, é uma corrida armamentista entre empresas que implantam táticas de detecção e spammers sofisticados que usam métodos cada vez mais complexos para escapar da detecção. Se a empresa conseguir fazer o spammer acreditar que não precisa evoluir seu método, isso é uma vantagem
Minha conta no Instagram foi suspensa permanentemente porque eu supostamente estava me passando por mim mesmo. Foi pior, porque perdi a conta inteira; ainda pediram para eu enviar uma selfie, e no exato momento em que enviei a imagem a conta foi suspensa permanentemente
Elas conseguem verificar por amostragem se os comentários aparecem e remover automaticamente contas que sofreram shadow ban
O Akismet não tem um processo de contestação que funcione de verdade. Muito tempo atrás, fui banido pelo Akismet ao comentar no meu blog
Se eu comento em algum lugar que usa Akismet, o comentário é filtrado silenciosamente. Também fui banido no Disqus por postar muitos links úteis em comentários de blogs de pessoas que conheço, mas lá resolveram em 2 dias e foram muito educados
O Akismet deveria, no mínimo, limpar os usuários do WordPress banidos há incontáveis anos, e o WordPress deveria mudar para uma alternativa um pouco menos insana
O fato de eu não conseguir responder no meu blog WordPress é até bem engraçado e, para mim, é fácil simplesmente usar outro motor de blog; mas não é legal o WordPress tratar seus próprios usuários no estilo “vamos matar um pouco de spam”
Basta um clique para adicionar o domínio a uma lista do uBlock e pesquisar o título no Google. Nenhum processo de contestação consegue ser tão fácil e confiável quanto isso
O texto original não explica como eles identificam usuários válidos para não colocá-los no loop de frustração
Diz que impedir spam no cadastro com o Akismet funcionou até certo ponto, mas era fácil de contornar, e que alguns spammers encontraram formas de parecer blogs normais, exigindo identificação e marcação manual. Depois disso, eles criaram o “Frustration Loop”, que, quando um spam é detectado, faz o spammer perder tempo e desistir
Mas, sobre se isso não é acionado para usuários legítimos, só aparece algo como: rodou por 3 meses e apenas um usuário reportou problema. Pessoalmente, acho essa a parte mais interessante do texto
A medida em si de irritar spammers é legal, mas eu gostaria que houvesse mais sobre separar spammers de usuários reais, entender falsos positivos e falsos negativos etc. Entendo que é difícil divulgar detalhes de detecção e que o tema do texto é o Frustration Loop
Se o Akismet responde que é spam, eles ativam o loop de frustração; achei bem inteligente
https://akismet.com/developers/comment-check/
Passei a pensar assim porque, se resolvessem, só prejudicaria métricas e receita
A prevenção de spam que funcionou melhor em um formulário de contato por e-mail foi colocar vários campos de texto ocultos com nomes como “blindcopy”, “bcc”, “cc” e “additional address”
Todos tinham valores padrão, e o manipulador de envio rejeitava a submissão se detectasse que algum desses campos tinha sido alterado em relação ao valor padrão. Acho que não recebi nenhum e-mail falso por aquele formulário
Coloquei em um formulário de contato um campo oculto sem texto e, por acessibilidade, incluí um aviso educado no texto de dica. Se algo fosse preenchido naquele campo, eu descartava silenciosamente, e o conteúdo enviado era copiado para mim; acho que, nos cerca de 8 anos em que o formulário ficou no ar, recebi 0 e-mails de spam
Mas fico curioso sobre como gerenciadores de senha ou preenchimento automático não caem nisso. Será que eles conseguem detectar que o campo não está visível?
Vocês fazem amostragem do conteúdo inserido por usuários “frustrados” para verificar se eles são realmente legítimos? Existem taxas de falsos positivos e falsos negativos? Também verificaram se o número total de cadastros legítimos diminuiu ou aumentou?
Esse tipo de abordagem não é usado só por uma pessoa. Muitas páginas, quando você usa VPN, falham de forma silenciosa e irritante, sem sequer mostrar erro. Quando você desliga a VPN, tudo passa a funcionar magicamente. A Etsy também, por um tempo, retornava uma página em branco quando você usava VPN, e isso era extremamente irritante
O Instagram tem um loop de irritação. Eu sei porque ele é acionado na minha conta.
A cada ação que faço, por menor que seja, ele me obriga a fazer login de novo. Seja clicando em um link ou fazendo qualquer outra coisa, toda vez preciso passar pela tela de login.
No começo, começou com “atividade suspeita detectada na conta” e depois apareceu “a conta foi desativada”. Eles não dizem o motivo real, mas, pelas regras oficiais, o único motivo plausível seria eu ter publicado algo que ofendeu alguém.
Só que há um problema com essa explicação: eu nunca publiquei nada. Tudo o que faço no Instagram é seguir algumas pessoas. Passei por inserir um código e até enviar uma foto minha para recuperar o acesso à conta, mas agora preciso fazer login de novo para qualquer coisa que eu faça. É difícil acreditar que isso seja coincidência ou bug; parece que eles claramente me identificaram como uma pessoa problemática, mas, por falta de provas para me executar, estão me punindo por uma violação imaginária.
Acho que a causa talvez tenha sido eu às vezes seguir links para fotos do Instagram. O fato de ele fazer parte da Meta também é um problema: se eu fechar o Instagram de vez, vou perder também o acesso à conta do Facebook, que uso para manter contato com alguns amigos distantes.
O mundo deixou o Facebook e agora todo mundo está no Instagram. Eu provavelmente também estaria, se o Instagram tivesse permitido.
Vejo dizerem que a detecção de spam é uma guerra de criatividade entre spammers e detectores; se for o Akismet, isso pode ser verdade. Mas, se for um site que oferece um lugar onde spammers podem se reunir, essa dinâmica já não se aplica.
Isso é uma competição entre meu blog/site e outros blogs/sites. Se eu estiver mais bem protegido do que meus vizinhos, os spammers vão para eles. Isso vale ainda mais quando o que se tenta barrar não são bots, mas fazendas de cliques.
Como na piada, na floresta você não precisa correr mais rápido que o urso; só não pode ser o mais lento do grupo.