J’ai eu au moins deux sites touchés par une vague de spam qui semble conçue pour empoisonner les LLM. La même attaque a également été signalée ici au moins une fois (Anyone else currently undergoing mass spam attack?). La meilleure solution est de configurer Discourse AI - Spam detection, que je recommande, mais c’est un peu gênant. Voici une solution temporaire que vous pouvez implémenter et qui ne prendra que quelques minutes.
Cela suppose que vous disposez d’un système d’exploitation de type Unix (par exemple, Linux ou Mac). Si vous utilisez Windows et que vous pouvez copier/coller dans un terminal, vous pouvez vous connecter en SSH à votre serveur Discourse et coller ceci.
Ce qu’il fait, c’est créer un ensemble de mots surveillés générés à partir d’une attaque récente que j’ai vue. Si vous êtes à l’aise avec nano ou un outil similaire, vous pouvez le modifier avant de l’exécuter. Sinon, vous pouvez exécuter ce script, puis supprimer les mots que vous n’aimez pas en un clic par mot.
Les mots bloqués peuvent être très ennuyeux car ils empêcheront les utilisateurs légitimes de créer des publications contenant ces mots. Regardez donc attentivement pour vous assurer qu’aucun de ces mots n’est susceptible d’apparaître dans des publications légitimes sur votre forum !
Entrez l’URL de votre site, votre clé API et votre nom d’utilisateur API dans les champs ci-dessous (ils ne seront que dans votre navigateur, mais vous pouvez simplement le copier tel quel et modifier le fichier si vous préférez), puis copiez/collez le bloc de code dans un terminal. Il créera upload_watched_words_full.sh et le rendra exécutable. Vous pourrez ensuite l’exécuter avec ./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="
# High-confidence block words
BLOCK_WORDS=(
"customer service number"
"contact number"
"support number"
"refund phone number"
"toll free"
"24/7 support"
"helpline"
"call us"
"live representative"
"technical support"
"lufthansa"
"royal caribbean"
"coinbase"
"robinhood"
"reservation number"
"booking number"
"flight cancellation"
"name change fee"
"║"
"⇆"
"★"
"®️"
"™️"
)
# Medium-risk flag words
FLAG_WORDS=(
"customer service"
"customer support"
"support team"
"help desk"
"hotline"
"agent"
"representative"
"contact us"
"phone support"
"service center"
)
# Require-approval words
REQUIRE_APPROVAL_WORDS=(
"urgent"
"immediate action"
"act now"
"limited time"
"exclusive offer"
"approve this"
"verify account"
)
# Function to send words in batch
add_words () {
local ACTION="$1"
shift
local WORDS=("$@")
# Build words[] parameters
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 "Uploading ${ACTION} words..."
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 "\nDone."
}
# Upload block words
add_words "block" "${BLOCK_WORDS[@]}"
# Upload flag words
add_words "flag" "${FLAG_WORDS[@]}"
# Upload require-approval words
add_words "require_approval" "${REQUIRE_APPROVAL_WORDS[@]}"
EOF
# Make the script executable
chmod +x upload_watched_words_full.sh
echo "Script 'upload_watched_words_full.sh' created and made executable."
