跳到主要内容

Spam Blocker

遗留命名

该软件包最初是在 @plebbit 范围下发布的。它已重命名为@bitsocial/spam-blocker-server@bitsocial/spam-blocker-challenge。对旧名称的引用可能仍出现在旧文档或代码库中。

Spam Blocker 是一种集中式垃圾邮件检测服务,可评估传入的出版物并分配风险评分。它由两个包组成:

  • @bitsocial/spam-blocker-server -- 托管评估和质询 API 的 HTTP 服务器。
  • @bitsocial/spam-blocker-challenge -- 社区集成的轻量级客户端包,用于发送出版物进行评估。

源代码: github.com/bitsocialnet/spam-blocker

风险评分如何运作

提交到 /evaluate 端点的每份出版物都会收到一个数字风险评分。该分数是多个信号的加权组合:

信号描述
账户年龄较新的帐户获得较高的风险评分。
业力积累的社区业力可以降低风险。
作者声誉由后台网络索引器收集的声誉数据。
内容分析文本级启发式(链接密度、已知垃圾邮件模式等)。
速度同一作者快速连续发表的帖子会增加风险。
知识产权情报国家级地理位置和威胁源查找。仅存储国家/地区代码 - 原始 IP 地址绝不会与社区共享。

等级门槛

风险评分映射到四个可配置层之一,决定接下来会发生什么:

  1. 自动接受 - 分数足够低,出版物无需任何质疑即可获得批准。
  2. OAuth-sufficient——作者必须完成 OAuth 验证才能继续。
  3. OAuth-plus-more -- 仅靠 OAuth 是不够的;需要额外的验证(例如验证码)。
  4. 自动拒绝 -- 分数太高;该出版物被彻底拒绝。

所有阈值均可按社区进行配置。

挑战流程

当出版物落入需要验证的层时,挑战流程开始:

  1. 首先提示作者通过 OAuth(GitHub、Google、Twitter 和其他支持的提供商)进行身份验证。
  2. 如果单独的 OAuth 不够(第 3 层),则会提供由 Cloudflare Turnstile 提供支持的 CAPTCHA 后备
  3. OAuth 身份仅用于验证 - 永远不会与社区或其他用户共享

API端点

POST /evaluate

提交出版物进行风险评估。返回计算出的风险评分和所需的挑战级别。

POST /challenge/verify

提交已完成质询的结果(OAuth 令牌、CAPTCHA 解决方案或两者)以进行验证。

GET /iframe/:sessionId

返回一个可嵌入的 HTML 页面,该页面为给定会话呈现适当的挑战 UI。

速率限制

根据作者年龄和声誉动态应用速率限制。较新或声誉较低的作者面临更严格的限制,而知名作者则享有更宽松的门槛。这可以防止垃圾邮件泛滥,而不会惩罚受信任的参与者。

后台网络索引器

服务器运行后台索引器,不断抓取网络以构建和维护作者声誉数据。这些数据直接输入风险评分管道,使系统能够识别社区中重复的善意参与者。

隐私

垃圾邮件拦截器的设计考虑到了隐私:

  • OAuth 身份仅用于质询验证,绝不会向社区披露
  • IP 地址仅解析为国家/地区代码;原始 IP 不会被存储或共享。

数据库

服务器使用SQLite(通过better-sqlite3)在本地持久保存信誉数据、会话状态和配置。