已关注的词语

我至少有两个网站受到了垃圾邮件的攻击,这些垃圾邮件似乎是为了污染大型语言模型而设计的。这里至少报告了一次同样的攻击(https://meta.discourse.org/t/anyone-else-currently-undergoing-mass-spam-attack/378972)。最好的解决方案是设置 https://meta.discourse.org/t/discourse-ai-spam-detection/343541,我确实推荐它,但它有点麻烦。这是一个你可以实施的临时措施,只需要几分钟。

它假设你有一个类 Unix 的操作系统(例如 Linux 或 Mac)。如果你使用 Windows 并且可以复制/粘贴到终端,你可以 SSH 到你的 Discourse 服务器并粘贴它。

它的作用是根据我最近看到的一次攻击生成一组 监视词。如果你熟悉 nano 或类似的工具,你可以在运行它之前编辑它。如果不行,你可以运行这个脚本,然后用一次点击删除你不喜欢的词。

阻止词可能会非常烦人,因为它们会阻止合法用户创建包含这些词的帖子,所以请仔细检查,确保这些词不太可能出现在你论坛的合法帖子中!

在下面的框中填入你的网站 URL、API 密钥和 API 用户(它们只会在你的浏览器上显示——但你也可以直接粘贴它,如果你愿意,可以编辑文件),然后将代码块复制/粘贴到终端。它将创建 upload_watched_words_full.sh 并使其可执行。然后你可以用 ./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."

8 个赞

但是 Watched word Approval doesn't work if a user edits the reply 呢?

好吧,我没注意到。我天真的希望垃圾邮件发送者不会知道这样做。 :person_shrugging:

1 个赞

几年前我们遇到的机器人会在帖子标题中发布类似 dhfhstyhjfhhr 这样的乱码,以绕过关键词过滤器来创建帖子,然后它会将其编辑成真正的“最佳在线赌场”垃圾信息。:expressionless_face:

2 个赞

编辑帖子竟然能绕过敏感词过滤,真是太奇怪了。 :person_shrugging:

也许这批垃圾邮件发送者想不到这样做。或者这样做也根本没用。

1 个赞

谢谢 Jay,很棒的脚本,感谢你创建它。有人用过它并且发现它有效吗——就“编辑帖子”这个变通方法而言?是机器人编辑帖子还是直接发送垃圾信息?

我不知道,但如果这是个问题,你可以更改设置,让某些用户无法编辑帖子(允许编辑帖子的群组),也许可以通过要求TL2并调整设置来更容易/更难达到TL2。

对于普通用户,尤其是新用户来说,无法编辑帖子可能也不是什么大事,甚至可能不是他们所期望的。

1 个赞

说得有理。我将进行更改,使 tl_0 无法编辑帖子。

正在审查最近的一篇帖子:

看起来它最初只是垃圾信息,然后被编辑成了垃圾邮件,据我所知,这会绕过“监视词”功能。

鉴于从无意义的胡言乱语编辑成垃圾邮件正成为机器人为阻止垃圾邮件过滤器而采取的惯用伎俩之一,Discourse 团队是否认为 tl_0 默认情况下应该能够编辑帖子?

4 个赞

哇。我很惊讶默认设置中包含了 TL0。
很高兴知道这些垃圾邮件发送者确实在使用这种技巧。

我认为 AI Spam 模块应该会捕获它。

2 个赞

当然会。不过,虽然设置AI来阻止垃圾信息并非极其昂贵,但在每个Discourse上都要设置它还是有点麻烦。我的许多论坛不需要(或不想要)它,但却需要其他相当有用的Discourse AI功能。

1 个赞

这里的解决方案不是阻止 tl0 或任何其他组编辑帖子。

解决方案是确保编辑帖子不会绕过任何站点保护。如我们所见,编辑过的帖子可能包含垃圾信息、仇恨言论或其他不良行为。如果编辑过的帖子绕过了“监视词”和其他过滤器,这无疑将成为一种标准方法,不仅适用于机器人,也适用于想要绕过站点保护的人类。

3 个赞

同意。这似乎很奇怪,它不是那样工作的。而且如果我理解正确的话,它已经坏了很长时间了。

哦,这是“预期行为”:

我敢打赌这就是它的由来,也许吧。

看起来监视词可以简单地在保存前应用,但我没有查看代码。

2 个赞

对于某些类型的监视词语是否适用于编辑,存在一个疑问。但同样清楚的是,这一限制大大降低了监视词语的价值。

我希望能够为每种类型的编辑应该发生什么情况提出一个规范,这将使功能请求更具可操作性。尽管我偶尔会花时间思考具体案例,但我还没有完成这项工作。

3 个赞