Tive pelo menos dois sites atingidos por uma onda de spam que parece ter sido projetada para envenenar LLMs. O mesmo ataque também foi relatado aqui pelo menos uma vez (Anyone else currently undergoing mass spam attack?). A melhor solução é configurar Discourse AI - Spam detection, o que eu recomendo, mas é um pouco trabalhoso. Aqui está uma solução temporária que você pode implementar e que levará apenas alguns minutos.
Assume-se que você tenha um sistema operacional do tipo Unix (por exemplo, Linux ou Mac). Se você usa Windows e consegue copiar/colar em um terminal, pode se conectar via SSH ao seu servidor Discourse e colar isso.
O que ele faz é criar um conjunto de palavras monitoradas gerado a partir de um ataque recente que eu vi. Se você tem familiaridade com nano ou similar, pode editá-lo antes de executá-lo. Se não, você pode executar este script e depois excluir as palavras que não gosta com um clique por palavra.
As palavras de bloqueio podem ser muito irritantes, pois impedirão que usuários legítimos criem postagens com essas palavras, então dê uma olhada para ter certeza de que nenhuma dessas palavras provavelmente aparecerá em postagens legítimas no seu fórum!
Coloque o URL do seu site, chave de API e usuário de API nas caixas abaixo (eles estarão apenas no seu navegador - mas você pode simplesmente colar como está e editar o arquivo, se preferir) e, em seguida, copie/cole o bloco de código em um terminal. Ele criará upload_watched_words_full.sh e o tornará executável. Você pode então executá-lo com ./upload_watched_words_full.sh.
cat <<'EOF' > upload_watched_words_full.sh
#!/usr/bin/env bash
# Usage: ./upload_watched_words_full.sh
DISCOURSE_URL="=URL="
API_KEY="=API_KEY="
API_USERNAME="=API_USERNAME="
# Palavras de bloqueio de alta confiança
BLOCK_WORDS=(
"número de atendimento ao cliente"
"número de contato"
"número de suporte"
"número de telefone para reembolso"
"ligação gratuita"
"suporte 24/7"
"central de ajuda"
"ligue para nós"
"representante ao vivo"
"suporte técnico"
"lufthansa"
"royal caribbean"
"coinbase"
"robinhood"
"número de reserva"
"número de agendamento"
"cancelamento de voo"
"taxa de alteração de nome"
"║"
"⇆"
"★"
"®️"
"™️"
)
# Palavras de sinalização de risco médio
FLAG_WORDS=(
"atendimento ao cliente"
"suporte ao cliente"
"equipe de suporte"
"central de ajuda"
"linha direta"
"agente"
"representante"
"contate-nos"
"suporte por telefone"
"central de serviços"
)
# Palavras que exigem aprovação
REQUIRE_APPROVAL_WORDS=(
"urgente"
"ação imediata"
"aja agora"
"tempo limitado"
"oferta exclusiva"
"aprovar isto"
"verificar conta"
)
# Função para enviar palavras em lote
add_words () {
local ACTION="$1"
shift
local WORDS=("$@")
# Construir parâmetros words[]
local DATA=""
for w in "${WORDS[@]}"; do
DATA+="words%5B%5D=$(printf '%s' "$w" | jq -s -R -r @uri)&#"
done
DATA+="replacement=&action_key=${ACTION}&case_sensitive=false&html=false"
echo "Enviando palavras ${ACTION}..."
curl -s -X POST "${DISCOURSE_URL}/admin/customize/watched_words.json" \
-H "Api-Key: ${API_KEY}" \
-H "Api-Username: ${API_USERNAME}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "$DATA"
echo -e "\nConcluído."
}
# Enviar palavras de bloqueio
add_words "block" "${BLOCK_WORDS[@]}"
# Enviar palavras de sinalização
add_words "flag" "${FLAG_WORDS[@]}"
# Enviar palavras que exigem aprovação
add_words "require_approval" "${REQUIRE_APPROVAL_WORDS[@]}"
EOF
# Tornar o script executável
chmod +x upload_watched_words_full.sh
echo "Script 'upload_watched_words_full.sh' criado e tornado executável."
