# Beobachtete Wörter

**URL:** https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420
**Category:** Sysadmins
**Tags:** watched-words, spam
**Created:** [26. August 2025 um 19:02 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420 "2025-08-26T19:02:39Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26. August 2025 um 19:02 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/1 "2025-08-26T19:02:39Z")

</div>

Ich hatte mindestens zwei Websites, die von einer Spam-Welle getroffen wurden, die darauf ausgelegt zu sein scheint, LLMs zu vergiften. Derselbe Angriff wurde hier mindestens einmal gemeldet ([Anyone else currently undergoing mass spam attack?](https://meta.discourse.org/t/anyone-else-currently-undergoing-mass-spam-attack/378972)). Die beste Lösung ist die Einrichtung von [Discourse AI - Spam detection](https://meta.discourse.org/t/discourse-ai-spam-detection/343541), was ich sehr empfehlen kann, aber es ist ein wenig mühsam. Hier ist eine Übergangslösung, die Sie implementieren können und die nur wenige Minuten dauert.

Es wird davon ausgegangen, dass Sie ein unixartiges Betriebssystem (z. B. Linux oder Mac) haben. Wenn Sie Windows verwenden und in ein Terminal kopieren/einfügen können, können Sie sich per SSH mit Ihrem Discourse-Server verbinden und dies dort einfügen.

Es erstellt eine Reihe von [überwachten Wörtern](https://meta.discourse.org/t/watched-words-reference-guide/241735), die aus einem kürzlich aufgetretenen Angriff generiert wurden, den ich gesehen habe. Wenn Sie mit `nano` oder einem ähnlichen Programm vertraut sind, können Sie es bearbeiten, bevor Sie es ausführen. Wenn nicht, können Sie dieses Skript ausführen und dann die Wörter, die Sie nicht mögen, mit einem Klick pro Wort löschen.

Die blockierten Wörter können **sehr** störend sein, da sie legitime Benutzer daran hindern, Beiträge mit diesen Wörtern zu erstellen. Schauen Sie sich also an, ob diese Wörter wahrscheinlich in legitimen Beiträgen auf Ihrem Forum vorkommen!

Geben Sie Ihre Website-URL, Ihren API-Schlüssel und Ihren API-Benutzer in die unten stehenden Felder ein (sie sind nur in Ihrem Browser sichtbar – aber Sie können sie auch einfach so einfügen und die Datei bearbeiten, wenn Sie möchten) und kopieren Sie dann den Codeblock in ein Terminal. Es wird `upload_watched_words_full.sh` erstellt und ausführbar gemacht. Sie können es dann mit `./upload_watched_words_full.sh` ausführen.

```plaintext
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."

```

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [26. August 2025 um 21:10 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/2 "2025-08-26T21:10:14Z")

</div>

Aber [Watched word Approval doesn't work if a user edits the reply](https://meta.discourse.org/t/watched-word-approval-doesnt-work-if-a-user-edits-the-reply/225668)?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26. August 2025 um 21:15 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/3 "2025-08-26T21:15:30Z")

</div>

> [@RGJ](#):
>
> Aber [Watched word Approval funktioniert nicht, wenn ein Benutzer die Antwort bearbeitet](https://meta.discourse.org/t/watched-word-approval-doesnt-work-if-a-user-edits-the-reply/225668)?

Nun, dem habe ich keine Beachtung geschenkt. Meine naive Hoffnung ist, dass die Spammer das nicht wissen werden. 🤷

---

<div class="post-metadata">

### Author: ![Mine\_Zcash](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mine_zcash/32/110575_2.png) [@Mine\_Zcash](https://meta.discourse.org/u/Mine_Zcash)
#### Post date: [26. August 2025 um 23:12 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/4 "2025-08-26T23:12:29Z")

</div>

Die Bots, die wir vor ein paar Jahren hatten, posteten Kauderwelsch wie dhfhstyhjfhhr als Thema, um Threads zu erstellen und den Keyword-Filter zu umgehen. Dann bearbeiteten sie ihn zur eigentlichen Spam-Nachricht „beste Online-Casinos“. 😑

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26. August 2025 um 23:37 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/5 "2025-08-26T23:37:08Z")

</div>

Das ist bizarr, dass das Bearbeiten des Beitrags die Überwachungswörter umgeht.

Vielleicht denken diese Spammer nicht daran, das zu tun. Oder es hilft auch gar nichts. 🤷

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [9. September 2025 um 12:25 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/6 "2025-09-09T12:25:33Z")

</div>

Danke Jay, tolles Skript, danke, dass du es erstellt hast. Hat es jemand, der es benutzt hat, in Bezug auf den Workaround zum „Bearbeiten von Beiträgen“ als funktionierend empfunden? Bearbeiten die Bots die Beiträge oder spammen sie nur den Text direkt?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [9. September 2025 um 15:45 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/7 "2025-09-09T15:45:09Z")

</div>

> [@pacharanero](#):
>
> Hat jemand, der es benutzt hat, festgestellt, dass es funktioniert – in Bezug auf den Workaround zum „Bearbeiten von Beiträgen“?

Ich weiß es nicht, aber wenn das ein Problem ist, könnten Sie die Einstellungen so ändern, dass einige Benutzer keine Beiträge bearbeiten können („Gruppen, die das Bearbeiten von Beiträgen erlauben“), vielleicht indem Sie TL2 verlangen und die Einstellungen so anpassen, dass es einfacher/schwieriger wird, TL2 zu erreichen.

Für normale Benutzer, insbesondere für neue, ist die Unfähigkeit, einen Beitrag zu bearbeiten, wahrscheinlich keine große Sache und vielleicht nicht einmal etwas, das sie erwarten.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [9. September 2025 um 21:41 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/8 "2025-09-09T21:41:17Z")

</div>

Guter Punkt. Ich werde es so ändern, dass `tl_0` keine Beiträge bearbeiten kann.

Überprüfung eines der letzten Beiträge:

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/a/6/ba6823833a4fcbeb9bf8c5e18e8b52454c78138a.png)

Es sieht so aus, als wäre es ursprünglich nur Müll gewesen und dann zu Spam bearbeitet worden, was die Überwachung von Wörtern umgangen hätte, soweit ich das verstehe.

Da Beitrag-Bearbeitungen von harmlosen Kauderwelsch zu Spam Teil des Modus Operandi von Bots bei ihren Bemühungen sind, Spam-Filter zu vereiteln, glaubt das Discourse-Team, dass `tl_0` standardmäßig **nicht** in der Lage sein sollte, Beiträge zu bearbeiten?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [9. September 2025 um 21:59 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/9 "2025-09-09T21:59:58Z")

</div>

Wow. Ich bin überrascht, dass die Standardeinstellung TL0 enthält.

Gut zu wissen, dass diese Spammer diesen Trick anwenden.

> [@pacharanero](#):
>
> Sieht so aus, als wäre es anfangs nur Müll gewesen und dann zu spa bearbeitet worden

Ich denke, das KI-Spam-Modul hätte es abgefangen.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [9. September 2025 um 22:31 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/10 "2025-09-09T22:31:30Z")

</div>

> [@pfaffman](#):
>
> Ich denke, das KI-Spam-Modul hätte es abgefangen.

Oh, sicher hätte es das. Aber obwohl es nicht super teuer ist, ist es doch etwas mühsam, KI auf jeder Discourse-Instanz einzurichten, um Spam abzuwehren. Viele meiner Foren würden es (oder wollen es) für keine der anderen recht nützlichen KI-Funktionen von Discourse benötigen.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [9. September 2025 um 22:44 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/11 "2025-09-09T22:44:39Z")

</div>

Die Lösung hier ist nicht, die Bearbeitung von Beiträgen durch `tl0` oder eine andere Gruppe zu verhindern.

Die Lösung besteht darin, dafür zu sorgen, dass die Bearbeitung eines Beitrags keine Seitenschutzmaßnahmen umgeht. Ein bearbeiteter Beitrag könnte (wie wir gesehen haben) Spam, Hass oder andere unerwünschte Verhaltensweisen enthalten. Wenn bearbeitete Beiträge “Watched Words” und andere Filter umgehen, wird dies definitiv zu einem Standardansatz, nicht nur für Bots, sondern auch für Menschen, die Seitenschutzmaßnahmen umgehen wollen.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [10. September 2025 um 15:20 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/12 "2025-09-10T15:20:39Z")

</div>

> [@pacharanero](#):
>
> Die Lösung besteht darin, dass die Bearbeitung eines Beitrags keine Seitenschutzmechanismen umgeht.

Zustimmung. Es erscheint bizarr, dass es nicht so funktioniert. Und wenn ich es richtig verstehe, ist es schon lange kaputt.

Oh, es ist das „erwartete Verhalten“:

> [@Watched Words not applying to post edits](https://meta.discourse.org/t/watched-words-not-applying-to-post-edits/274335):
>
> We use “Require Approval” Watched Words to catch persistent spam domains. Spammers are now posting anodyne responses with no triggering words in them and then editing their posts to contain the spam link to a domain that is on our Watched Words list. Is it intended that Watched Words can be circumvented by post editing? I now note that this was asked and not answered (as far as I can tell) in the now-closed [Watched word Approval doesn't work if a user edits the reply - #38 by physixfan](https://meta.discourse.org/t/watched-word-approval-doesnt-work-if-a-user-edits-the-reply/225668/38)

Ich wette, so ist es entstanden, vielleicht.

> [@RobMeade](#):
>
> Ich habe dann das gesamte Forum nach verschiedenen Wörtern durchsucht und einige Beiträge gefunden, die sie enthielten. Ich habe die Beiträge bearbeitet und das Wort durch Sternchen ersetzt. Nachdem ich dies bei etwa 4 Beiträgen getan hatte, bemerkte ich, dass ich nun vier neue Markierungen hatte!
> 
> Es scheint, dass die Versionshistorie des Beitrags, die immer noch das ursprüngliche Wort enthält, eine Markierung auslöst.

Es scheint, dass die beobachteten Wörter einfach vor dem Speichern angewendet werden könnten, aber ich habe den Code nicht angesehen.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [10. September 2025 um 16:26 UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420/13 "2025-09-10T16:26:12Z")

</div>

Es stellt sich die Frage, was es für einige Arten von beobachteten Wörtern bedeutet, für eine Bearbeitung zu gelten. Aber es ist auch klar, dass diese Einschränkung den Wert von beobachteten Wörtern stark reduziert.

Ich würde erwarten, dass es hilfreich wäre, eine Spezifikation dafür vorzuschlagen, was genau für jeden Typ im Falle einer Bearbeitung geschehen sollte; dies würde die Feature-Anfrage umsetzbarer machen. Diese Arbeit habe ich jedoch nicht geleistet, obwohl ich gelegentlich Zeit damit verbracht habe, über spezifische Fälle nachzudenken.
