防止垃圾邮件的技巧

:bookmark: 本指南全面介绍了如何在 Discourse 论坛中防止垃圾信息,并包含各种设置和工具的信息,旨在帮助维护无垃圾信息的社区环境。

:person_raising_hand: 所需用户等级:管理员

在大多数论坛上,垃圾信息很少见。但是,如果您在网站上遇到垃圾信息问题,Discourse 提供了众多工具,可帮助您自动防止垃圾信息。

以下指南提供了一些建议,帮助您在防止垃圾信息的同时,为社区营造积极、友好的环境。

使用 Discourse AI 进行垃圾信息检测

AI 垃圾信息检测 是 Discourse 用于自动检测垃圾信息的最佳功能之一。与其他工具不同,它可以根据预配置规则自动屏蔽用户和帖子。AI 垃圾信息检测适用于 Discourse 托管平台上的所有用户,以及配置了 LLM 的自托管站点。

AI 垃圾信息检测的优势包括:

  • 自动化:无需人工干预即可屏蔽明显的垃圾信息。
  • 可定制性:您可以根据社区的独特需求进行定制。
  • 可扩展性:即使在社区遭受严重垃圾信息攻击时也能有效工作。
  • 广泛的兼容性:免费(在 Discourse 托管平台上)且经济实惠的 LLM(如 GPT-4、Claude 3.5 和 Gemini Flash)可有效处理垃圾信息检测。

设置 AI 垃圾信息检测

:megaphone: 对于 入门版和标准版客户,此功能现已默认开启。

只需在管理员设置 → 插件 → AI → 垃圾信息处理中将其开启(详情见此处)。

默认情况下,它使用 Discourse 为我们的网站量身定制的提示,但您也可以添加特定于您网站的自定义指令。

量身定制的提示示例

:information_source: 使用 Discourse AI,您还可以利用创意 AI 机器人生成量身定制的提示,以满足您网站的具体需求。

默认信任等级

您可以调整新用户的默认信任等级,位置在 .../admin/site_settings/category/trust 页面,但我们建议将 default trust level(默认信任等级)保持为 0。

如果您已修改此设置的值,我们强烈建议将其改回 0: 新用户,因为更改此设置可能会由于信任等级与 Discourse 垃圾信息相关设置的交互方式,使您的网站面临严重的垃圾信息风险。

垃圾信息相关网站设置

:warning: 除非您特别受到垃圾信息困扰,否则我们建议将以下设置保持为默认值。

Discourse 提供了多个垃圾信息相关的网站设置,您可以在网站的 .../admin/config/spam 页面上访问这些设置。

您可以调整这些设置以增加或减少垃圾信息检测的敏感度,以及调整与发布垃圾信息相关的后果的严格程度。

以下是通常调整且对网站垃圾信息处理方式有显著影响的垃圾信息相关设置。

所有设置的默认值如下所示。

隐藏帖子

hide post sensitivity(隐藏帖子敏感度)和 cooldown minutes after hiding posts(隐藏帖子后的冷却分钟数)设置控制 Discourse 自动隐藏 被标记的帖子 的可能性,以及用户在编辑被标记并隐藏的帖子前必须等待的时间。

静默新用户

Discourse 有一个 num users to silence new user(静默新用户所需用户数)网站设置,当新用户的帖子被一定数量的独立用户标记为垃圾信息时,会自动静默该新用户。

默认值为 3,因此如果您持续遇到来自同一用户(或某些用户)的垃圾信息问题,可以考虑降低此值。

限制链接

Discourse 通过 newuser spam host threshold(新用户垃圾信息主机阈值)设置限制新用户发布包含外部域名链接的帖子数量。如果您网站上的新用户频繁向同一域名发布垃圾链接,可以考虑降低此设置的值。

限制 IP 地址

Discourse 限制了用户从任何给定 IP 地址创建的新账户数量。如果您发现网站上的问题用户反复创建账户以发布垃圾信息,可以考虑将此值从默认值调低。

还有一个 flag sockpuppets(标记马甲)复选框,启用后可防止用户创建多个账户并在同一主题下评论:

此外,您可以在问题用户的管理员页面下的 Last IP Address(最后登录 IP 地址)和 Registration IP Address(注册 IP 地址)字段中手动查找其 IP 地址,并删除与同一 IP 地址关联的其他账户。

或者,您可以在“日志 → 被屏蔽的 IP 地址”页面(.../admin/logs/screened_ip_addresses)上屏蔽垃圾信息发送者使用的 IP 地址:

调整标记要求

默认情况下,一个主题需要被 5 个独立用户标记,Discourse 才会自动暂停该主题的发帖。

您可以调整 num flaggers to close topic(关闭主题所需标记人数)网站设置,以升高或降低关闭主题所需的标记人数,并调整 auto close topic sensitivity(自动关闭主题敏感度)设置,以改变相关主题被自动关闭的可能性。

关注词

关注词 是另一个很好的功能,有助于屏蔽或限制包含垃圾信息发送者可能重复使用的单词、短语或 URL 链接的帖子。

如果您发现垃圾信息发送者经常在帖子中使用相同类型的文本,可以考虑为您的网站添加一些“屏蔽”或“静默”词。

对于更高级的“关注词”用法,您还可以考虑 在关注词中使用正则表达式

提高信任等级要求

如果您发现垃圾信息主要来自 TL0 用户,您可能还想调整一些信任等级设置,使达到 TL1 变得更加困难:

hCaptcha 插件

Discourse hCaptcha 插件旨在通过将 hCaptcha 集成到本地注册表单中来增强安全性和机器人防护。

:sparkles: 在所有 Discourse 托管网站上,此插件已自动包含。

其他步骤

了解用户为何向您的网站发送垃圾信息非常重要。他们是无聊、恶意,还是想推广自己?

关于处理 棘手用户 的建议,以及其他各种管理主题,可在 Discourse 管理指南 中找到,因此您可能想阅读该指南以获取更多管理网站的想法。

除了上述内容外,短期内加强管理团队以实现全面覆盖也是对抗垃圾信息的另一种好方法。关键在于拖垮问题用户,让他们感到无聊并离开。

如果您在按照本指南操作后仍持续遇到垃圾信息问题,还可以考虑将所有或部分新用户的帖子放入 审核队列,使用 approve post count(批准帖子数量)、approve unless allowed groups(除非允许组否则批准)或 approve new topics unless allowed groups(除非允许组否则批准新主题)设置:

approve unless allowed groups 设置要求非指定组用户创建的帖子必须经过批准。管理员和版主创建的帖子始终会被批准。

approve new topics unless allowed groups 设置要求非指定组用户创建的新主题必须经过批准。管理员和版主创建的主题始终会被批准。

但是,重要的是要确保您有足够多的版主来处理这种情况,因为如果帖子未获批准,这可能会使新用户难以开始与网站互动。

18 个赞

我不能代表所有论坛发言,但我以前在一个拥有TL3级别的论坛上,当我一天第一次登录我关注的类别时,至少还有一篇垃圾邮件帖子。在我目前担任版主的论坛上,我们平均每天会收到大约2篇垃圾邮件帖子。所以,根据我的经验,我认为垃圾邮件在很多论坛上都相当普遍。

5 个赞

一个非常有用的正则表达式是 \\d{3}-\\d{4}|[\\w+\\-.]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)*\\.[a-z]+,它可以阻止电子邮件地址和电话号码。别忘了启用设置 - 发帖 - “监视词正则表达式”。

7 个赞

:wave:

我一直在我的论坛上很好地利用这些技巧,所以……谢谢你!:heart:

有没有一个可以启用的设置,只将来自 gmail.com 域名的注册新用户发送到审核队列?

目前,我将所有新用户发送到队列进行审核,但我发现大多数垃圾邮件用户是使用 gmail 电子邮件创建的。至少对我来说,只将这些人发送到审核队列将减少负载和审核时间 :sweat_smile:

1 个赞

@SaraDev 你知道这是否可能吗?我也很想知道,因为阻止 IP 和特定域名将非常有帮助!

1 个赞

没有核心的 Discourse 功能可以仅将来自特定域(例如 gmail.com)用户的帖子发送到审核队列。

最接近的相关功能是自动批准电子邮件域站点设置,该设置允许某些电子邮件域绕过手动用户批准流程,自动批准来自这些域的用户。

还有 阻止的电子邮件域允许的电子邮件域 的设置,它们提供了一种根据电子邮件域限制或控制谁可以在您的站点上注册的方式:

但是,所有这些设置都需要启用 必须批准用户 设置,并且仅影响用户最初在站点上注册,而不影响帖子创建与审核队列之间的交互。

作为一种变通方法,您可以使用“用户组”来实现类似的功能。例如,您可以创建一个自定义用户组,并将注册时使用特定电子邮件地址的用户自动添加到该用户组,然后将该用户组添加到 除非允许的用户组外,均批准除非允许的用户组外,均批准新主题 设置中。

通过这种设置,您可以有效地绕过特定域用户的审核队列,同时仍然根据需要将其他帖子发送到审核队列。

2 个赞

您好,我想知道是否可以强制在主题和/或帖子创建时使用验证码?

我不知道,但如果一个机器人可以在登录时绕过验证码,那么它在发布时也可以做同样的事情,有什么帮助吗?

确实如此,但似乎有用于注册的验证码支持,所以我想知道是否也存在用于主题/帖子创建的验证码支持。

最近我们看到许多客户遭受了大型垃圾邮件攻击,它们都有一个共同点,那就是它们将一个或多个类别开放给了“所有人”——“创建”,绕过了所有信任级别限制。

对于经验丰富的 Discourse 管理员来说,这显然是个坏主意,但对于经验不足的人来说并非如此。因此,将(对我们来说)显而易见的事情说出来,并将其添加到主题的起始帖中,可能是一个好主意。

7 个赞

最近,我们一直在处理一些垃圾邮件发送者,他们使用自动注册,然后尝试创建新主题,发布看起来像真实咨询请求的人工智能生成内容,但其中包含亚马逊联盟链接。他们通常会用各种 URL 缩短引擎来隐藏这些链接。他们甚至能够回复帖子,甚至以一种有趣的方式在私信中聊天。有人遇到过这种情况吗?我想知道,既然这些尝试似乎是全自动化的,那么是否有许多其他目标是 Discourse 论坛。你有什么关于如何摆脱它们的策略建议吗?

1 个赞

您好 @Overgrow

这里有一些您可以尝试的防止此情况的建议:

  • 使用 Discourse AI - AI triage 在您的社区中设置垃圾信息检测 以检测此类内容
  • 将 URL 缩短服务和亚马逊联盟链接模式添加到您的受监控 已关注词语 列表中
  • 降低 newuser spam host threshold 并提高 TL1 的要求
  • 减少 max new accounts per registration IP 并启用 flag sockpuppets
  • 使用 Discourse hCaptcha 插件来帮助防止您的网站上出现自动垃圾信息/AI 注册。
  • 考虑将所有新用户发布的内容放入审核队列,直到攻击平息,方法是调整:
    • approve post count
    • approve unless trust level
    • approve new topics unless trust level

这里的方法将与防止一般垃圾信息类似,但会更侧重于缩短的 URL 和人工智能生成的内容。

对于您这里的情况,您可以尝试使用一个专门用于检测人工智能内容的 AI 提示,如下所示:

你是一个垃圾信息检测系统。分析以下内容和上下文。

注意:
- 回复必须与讨论串保持相关。
- 如果内容不相关、宣传性或自动化,则标记为垃圾信息。
- 考虑新用户发布的带有链接的内容可能为垃圾信息,除非与主题明确相关。

注意那些看起来真实但具有不自然模式的内容。
寻找措辞奇特、混合了过度正式和随意语言,或不完全符合上下文的通用建议。
标记包含隐藏联盟链接的内容,特别是当帖子似乎旨在自然地引导到产品推荐时。

特别注意这些危险信号:
1. 伪装成真实咨询请求但包含宣传元素的内容
2. 介绍问题然后推荐特定产品作为解决方案的帖子
3. 存在 URL 缩短服务(bit.ly、tinyurl、t.co、goo.gl 等),它们可能隐藏联盟链接
4. 亚马逊产品链接或引用,特别是带有联盟参数(tag=、ref=、affiliate=)的
5. 看起来在寻求推荐但巧妙地引导到特定产品的内
6. 人工优质文本 - 过度正式的语言与随意的表达或尴尬的结构混合
7. 发布包含上述任何模式内容的新账户

仅回复“SPAM”或“NOT SPAM”。
3 个赞

最近在处理机器人账户方面遇到了很多麻烦。我不得不第二次禁用新用户注册。昨天不得不删除大约 50 个机器人账户,其中包含大约 30 条垃圾帖子。我已经启用了 hcaptcha,并设置了一个困难的谜题,但它们并没有停止。我之前使用的是 3.5.0 版本,但在攻击发生后刚刚更新到 3.6.0 版本。我们已经不允许在信任级别 0 时发布链接,并且要求 30 篇帖子后才允许发布链接,但这些帖子只是关于旅行社和其他随机废话的文本块。还有一些 AI 账户和帖子,它们引用了论坛的实际内容,但不太有意义。这些帖子对我们的用户来说有点意思,但总之,我不想在论坛上启用 AI,但我感觉我已经尝试了所有其他选择。但是,我收到了这个消息:

但我没有看到任何地方可以添加所述配置?

最重要的是,虽然 AI 可能会帮助处理垃圾邮件,但我认为启用 AI 无法阻止机器人账户的创建,或者我错了?

1 个赞

如果将 approve post count 设置为 1,那么修改这些是否仍然需要?

我真的不知道这个问题的答案。

是的,如果 approve_post_count 设置为 1,您仍然应该审查其他这些设置。

这些设置的交互方式:

approve_post_count(设置为 1):

  • 影响 信任等级 0 和 1 的用户
  • 要求批准他们的第一篇帖子
  • 在 1 篇帖子被批准后,他们可以自由发帖(假设他们仍然是 TL0 或 TL1)

approve_unless_allowed_groups(以前称为 approve_unless_trust_level):

  • 影响不在指定组中的所有人
  • 要求批准所有帖子(不只是第一个)

approve_new_topics_unless_allowed_groups(以前称为 approve_new_topics_unless_trust_level):

  • 影响不在指定组中的所有人
  • 只要求批准新主题(不包括回复)

关键区别:

  • approve_post_count临时性的——一旦用户达到该数量阈值,他们就可以自由发帖
  • “unless allowed groups”(除非在允许的组中)设置是持续性的——它们适用于不在指定组中的用户的所有帖子/主题,无论他们发布了多少帖子

您也可以组合设置,以便更好地控制您网站上的发帖情况,例如:

  • 使用 approve_post_count: 1 来审查新用户(TL0/TL1)的初始帖子
  • 使用 approve_unless_allowed_groups 设置来持续审核除特定组(例如 TL2+ 成员)外的所有人

这样就创建了一种方法,即初始时对新用户进行审核,同时您也可以控制谁可以持续自由发帖而无需批准。