目前,我在删除垃圾用户及其帖子时遇到了瓶颈。
我需要手动删除用户的所有帖子,然后才能删除该用户,并在浏览器保持打开的状态下等待处理完成,最后再删除用户。
即使服务器拥有 16 颗现代至强 CPU,我也只能同时处理 2-3 个用户,否则会报错。每个用户需要几分钟时间。目前的流程非常繁琐且缓慢。
在我看来,最好能提供一个“删除垃圾账号/销毁用户”的选项,无需先删除所有帖子。该选项会将删除所有帖子和删除用户的任务加入队列,并在后台处理。这样, Moderation 工作可以快速完成,而处理任务则在后台进行,不会造成过载。
另一种方案是,允许先删除用户,再删除其帖子。然后设置一个定期运行的 cron 任务,搜索并删除孤立的帖子。我认为这个方案可能更优,因为它能从根本上解决孤立帖子的问题。
此外,如果能在帖子内的用户卡片上提供部分这些选项(如禁言、静音、删除/销毁),将极大节省时间,这样我们就不必再进入用户个人资料页面或管理页面才能找到这些功能。
3 个赞
这些垃圾邮件发送者是否使用了某些特定的单词或短语?
你可以将其添加到“监控词”列表中,从而阻止垃圾邮件发布。
你可以临时调整以下设置,以便更轻松地删除垃圾邮件账号:delete_user_max_post_age 和 delete_all_posts_max。但请务必在完成后将其重置为默认值,以免用户随意发送垃圾邮件并自行删除账号。
4 个赞
我在想,限制注册选项或强制用户启用双因素认证(2FA)对您的情况可能会有帮助?
1 个赞
您的配置存在严重且深层次的问题,因为新的、信任等级为 0 的用户:
-
由于安全原因受到严格的速率限制,无法发布大量内容
-
在被标记时无法免受内容删除的保护
在默认的 Discourse 设置下,删除垃圾信息发送者只需一键操作。一直以来都是如此。
2 个赞
谨此说明,我认为我的配置在限制新用户方面没有任何问题,主要是默认设置,部分设置已调整为比默认更严格。
我所看到的新用户速率限制(仅限发布主题和回复)如下:
- 首日最大主题数 - 默认为 3 个主题 - 垃圾邮件发送者只需在首次发帖后等待 24 小时
- 首日最大回复数 - 默认为 10 条回复 - 垃圾邮件发送者只需在首次发帖后等待 24 小时
- 新用户创建主题的速率限制 - 默认为每 120 秒发布一次 / 每天最多 720 个主题 / 每小时 30 个
- 新用户创建帖子的速率限制 - 默认为每 30 秒发布一次 / 每天最多 2880 个帖子 / 每小时 120 个
请告诉我是否有遗漏之处,希望确实如此。若能提供具体细节将不胜感激。
被标记的内容删除时未受到保护
由于修改了 delete_user_max_post_age 和 delete_all_posts_max,我并未遇到此问题。
使用默认的 Discourse 设置删除垃圾邮件发送者只需一键操作。一直以来都是如此。
您指的是哪个删除选项?我主要使用的是用户管理页面上的删除选项,其中必须先删除所有帖子才能删除用户。
我未使用审核队列中的 Akismet 删除用户选项,因为团队已确认该选项不会删除用户的帖子(Discourse Akismet - #10
用户资料页面上的删除按钮在长时间等待后(如果用户有帖子或内容)会提示以下错误:“删除该用户时出错。请确保已删除所有帖子后再尝试删除用户。”
标记为 > 是垃圾邮件 > 删除垃圾邮件发送者也会给出相同的错误:“删除该用户时出错。请确保已删除所有帖子后再尝试删除用户。”这有点反常,它在拥有约 500 篇帖子的垃圾邮件发送者身上失败,但在拥有约 150 篇帖子的垃圾邮件发送者身上却成功了(尽管仍然显示错误消息)。对于只有少量帖子的账户,该功能运行正常。
这怎么可能让一个垃圾信息发送者发了 500 条帖子?! 这意味着您大幅修改了 Discourse 的默认设置,因为新用户作为 TL0 会受到发帖频率限制,此外第一天还有发帖数量上限。
我需要更多具体细节,包括日期和时间。听起来这些用户是注册后或多或少正常参与讨论的,而您是在几周后才认定他们是垃圾信息发送者?您能提供这 10 位用户的示例帖子供我们查看吗?
3 个赞
@codinghorror
我希望您不要通过完全重写我帖子的标题来曲解我的原意,使其在客观上不准确。
-
是的,垃圾邮件发送者并不只是在第一天就进行 spam。这是论坛 spam 手册中最古老的伎俩:在第一天发布介绍或其他看似无害的简短帖子,以“预热”账号,以便后续进行 spam(通常是为了绕过人工审核)。或者,他们仅仅是在前 24 小时内尚未被发现。
-
TL0 新用户(首次发帖后 24 小时内)默认每天限制为 2880 条帖子和 720 个主题,如果我说错了,请指正。
-
他们使用“旋转器”(spinners)使每篇帖子独一无二,以绕过“最小唯一帖子数”设置,例如添加随机表情符号、字符、数字等。
-
“监控词”功能很容易通过不同的 Unicode 字符集绕过,详见:Watched Words Improvement -- similar looking unicode characters
-
“首次发帖时自动禁言快速打字者”功能也容易被绕过,且仅针对首次发帖。
-
垃圾邮件发送者利用大量代理资源池,可以非常容易地批量创建账号。使用旧版的 Gmail 点号技巧(Gmail dot trick)使得在标准 Discourse 实例(即使启用了 Akismet)中完全无法阻止他们。你基本上只能听天由命,看是否有人有足够的动力来 spam 你的论坛。参考:Protecting against gmail dot trick in Discourse 和 Suggestion: Wildcard Block Email Address
总之,我分享这些来自 spam 前线的经验,目的是帮助 Discourse 变得更加坚不可摧。这里的反 spam 功能确实承受了极大的压力测试。
垃圾邮件发送者主要有两种选择:创建多个账号,每个账号少量 spam;或者创建较少账号,每个账号大量 spam。如果你收紧速率限制,他们就会简单地创建更多账号,因为使用 Gmail 点号技巧创建账号如此容易且无法阻止。
他们也可以使用带有通配符邮箱的自定义域名,从而拥有无限数量的邮箱地址用于注册。但这只能在我将其邮箱域名加入黑名单之前有效,而黑名单是一种有效的防御手段。不过,如果能删除所有使用特定邮箱域名的账号,以便事后快速轻松地追溯封禁,那将非常有用。如果能针对 Gmail(及其所有变体地址)实现这一功能,那就更好了。
我所讨论的是能够在后台更快速、更高效地清理混乱局面,即删除那些突破防线进入系统的垃圾账号。同时,希望相关功能能按预期工作,例如“删除垃圾账号”选项能够正常处理那些已发布大量帖子的垃圾账号。
老实说,你的说法听起来有些离谱。在 Discourse 上,我从未见过真正的垃圾邮件发送者能发布到 500 条帖子,更不用说 150 条了……过去五年里,我们托管了成千上万个站点,包括我自己运营和管理的几个。唯一能想到的就是你可以搜索的 bamwar 垃圾邮件,如果你感兴趣的话。
能否像之前提到的那样,提供具体细节?否则我不确定这里有人能帮到你:
我是说,你难道是为垃圾邮件发送者运营一个黑帽网站吗?
3 个赞
我之前看到过这个话题。听起来这是一个相当严重且仍在持续的问题,令人倍感压力。我不知道这是否会有所帮助(可能有助于帖子审核,但对注册可能无效),但你尝试过以下设置吗?
admin/site_settings/category/posting?filter=Approve
-
审核帖子数量(新用户或基础用户必须被审核的帖子数量)
-
除非信任等级否则审核(低于此信任等级的用户发布的帖子必须经过审核)
-
除非信任等级否则审核新主题(低于此信任等级的用户发布的新主题必须经过审核)
4 个赞