mosparo 1.5.13 介绍与选型指南

mosparo 1.5.13 介绍与选型指南:定位、防垃圾判定手段、技术栈与资源需求实测、版本与许可取证(MIT,GitHub 313 星)、与 reCAPTCHA/hCaptcha/Turnstile 的差异定位及量化选型对比,附本栏导航。

mosparomosparoPHP 编程信息安全NAS 自托管2026/10/28

mosparo 1.5.13 介绍与选型指南

本文是 mosparo 专栏的认知篇。所有版本号、许可、运行时要求、GitHub 数据均于 2026-10-28 通过官方渠道(mosparo.eu 官网、GitHub 仓库/Releases 页、官方文档站)与本地实测逐一核实,文中标注了每项数据的取证来源。参数调优与命令运维分别见本栏其他三篇。

一、mosparo 是什么

mosparo(官方口号:the modern spam protection tool)是一款开源、可完全自托管的表单防垃圾系统,由 mosparo Core Developers 维护,官网 mosparo.eu,代码托管于 github.com/mosparo/mosparo(来源:官网与仓库 README,查询日期 2026-10-28)。

它解决的问题是:网站上的联系表单、评论框、注册页每天被机器人灌垃圾。传统做法是上验证码(captcha)让用户解题自证人类,而 mosparo 的思路完全不同——像邮件网关的反垃圾过滤器那样,对表单提交的内容做规则匹配,机器人不用解题,但垃圾提交会被规则直接拦下。

官方 README 对其工作方式的描述(直译,来源同上):

垃圾过滤在邮件服务器上是标配,邮件网关扫描整封邮件来判断是否为垃圾邮件。Web 表单的处理更简单:表单各字段是分离的,可以逐个字段检查。机器人在某个字段里必须写下它的网址或推广语,因此只要存在对应规则,检测会非常快。

一句话概括定位:mosparo 是 reCAPTCHA / hCaptcha 这类验证码服务的自托管替代品,把"考验用户"换成"审查内容"。

二、防垃圾的判定手段

根据官方仓库 README 与本栏实测实例中的项目配置导出(实测时间 2026-10-28,详见《mosparo 1.5.13 配置参数详解》),mosparo 单次提交会经过多层检测:

检测层作用默认值(1.5.13 实测导出)
规则匹配(规则包/自定义规则)按关键词、正则、URL、邮箱、IP 等规则逐字段比对,命中即加分规则包需自行挂载,spamScore 阈值默认 5.0
最短提交时间表单渲染到提交的间隔过短判为机器行为开启,minimumTimeSeconds = 10
蜜罐字段页面里藏一个人类看不见的字段,机器人填了就暴露开启
提交频率延迟时间窗内请求数超限则逐次加长响应延迟30 秒内 30 次后触发,延迟 60 秒,倍率 1.5
锁定频率再超标直接封禁一段时间60 秒内 60 次后锁 300 秒,倍率 1.2
工作量证明(PoW)前端需完成哈希计算才获提交令牌,提高机器成本复杂度 5,动态复杂度上限 7
相同提交检测时间窗内内容重复的提交判为垃圾300 秒内 3 次

值得强调:除上述手段外,所有提交数据默认加密存储,并在固定周期后删除——官方明确所有数据在 14 天后删除(因计划任务执行时机可能延至 15 天),这与其"只收集必要数据"的项目目标一致(来源:仓库 README,2026-10-28)。

三、技术栈与资源需求(实测)

以下数据来自 2026-10-28 对 v1.5.13 发行包在本栏实测环境(Debian 12 + Apache + PHP 8.2 + MariaDB 10.11)的实装:

维度实测结论
语言/框架PHP(要求 ≥ 8.1.10)/ Symfony 6.4.48 LTS(bin/console about 实测输出)
数据库MySQL / MariaDB、PostgreSQL、SQLite 三选一(安装向导下拉框实测仅此三项;README 同此结论)
Web 服务任意可跑 PHP 的服务端,实测 Apache 2.4 + mod_php;文档根目录需指向发行包的 public 子目录
PHP 扩展ctype、curl、dom、filter、gd、iconv、intl、json、libxml、openssl、pcre、pdo、pdo_mysql 或 pdo_pgsql(或 pdo_sqlite)、simplexml、tokenizer、xml、zip;可选 memcached、posix、redis、sodium、Zend OPcache(来源:仓库 README Requirements 节,2026-10-28)
磁盘占用官方要求"少于 100 MB";实测发行包 zip 约 21 MB,解压后远低于该限值
安装方式官方发行包(zip,依赖已打包,无需本地 Composer)或源码安装(需 git + Composer + Node.js 18)

运行时角色:mosparo 是一个独立部署的 Web 服务(不是嵌进业务程序的库)。业务站点在前端引入一段 JS(指向 mosparo 实例)渲染验证框,后端拿项目密钥调用 mosparo 的验证 API 判定结果。它自带管理后台(项目管理、规则包、提交记录、统计),数据落库。

四、版本与许可(取证)

  • 最新版本:v1.5.13,发布于 2026-10-26,官方定位为安全修复版本,修复了 MySQL 场景的 SAVEPOINT 报错、验证令牌竞态、IP 类安全特性按 IPv6 /64 子网计数等问题(来源:GitHub Releases 页 v1.5.13 说明,查询日期 2026-10-28)。
  • 许可:MIT。实测发行包内 LICENSE 文件头为 "The MIT License (MIT), Copyright 2021-2026 mosparo Core Developers and contributors",仓库 README License 节同此(查询日期 2026-10-28)。MIT 是宽松许可,商用集成、二次分发均无障碍。
  • 社区热度:GitHub 星数 313(取自 shields.io 徽章 img.shields.io/github/stars/mosparo/mosparo.svg 的徽章文本,查询日期 2026-10-28;GitHub API 有限流,徽章数据同样取自 GitHub 官方数据)。
  • 语言生态:官方使用 Weblate 组织多语言翻译,中文界面开箱可用(来源:仓库 README Contributing 节,2026-10-28)。

五、与验证码服务的差异定位

mosparo 与 reCAPTCHA / hCaptcha 这类验证码服务不是同一形态的东西,选型前先想清楚三个差异:

  1. 判定逻辑不同。验证码服务相信"能解题的就是人";mosparo 相信"内容与行为像垃圾的就是垃圾"。前者对用户体验友好但挡不住打码平台,后者不折腾用户,但防线强度取决于规则包质量——官方在 README 里明确不承诺拦截所有垃圾,规则充分时估计可拦截 80% 以上(来源:仓库 README "Our target" 节,2026-10-28)。
  2. 数据归属不同。验证码服务要把用户行为数据送到第三方;mosparo 全程自托管,只采集表单字段、IP 与 User-Agent,加密存储、定期清除,天然贴合 GDPR 场景(来源:仓库 README Key features 节,2026-10-28)。
  3. 无障碍性不同。mosparo 官方明确将"不使用拼图/扭曲图片"写入项目目标:对视障用户或使用辅助技术的用户,验证码是真实障碍,而 mosparo 的勾选框对所有人无差别(来源:仓库 README "Our target" 节,2026-10-28)。

六、量化选型对比

结合官方公开资料与本栏实测,按表单防护场景横向对比(非 mosparo 行取自各官方站公开描述,查询日期 2026-10-28;mosparo 行全部为本栏实测):

方案形态开源/许可用户交互数据归属成本与维护版本/热度
mosparo 1.5.13独立自托管 Web 服务开源,MIT(实测 LICENSE 文件)仅勾选框,无拼图全部留在本方服务器需自备一台 PHP 主机 + 数据库,含管理后台/规则包市场/统计v1.5.13(2026-10-26),GitHub 313 星(2026-10-28)
Google reCAPTCHASaaS闭源勾选框 + 图像挑战提交与行为数据归 Google免费额度,零运维商业服务
hCaptchaSaaS闭源图像挑战为主数据出站到 hCaptcha免费额度 + 商业档商业服务
Cloudflare TurnstileSaaS前端 SDK 开放、服务端闭源多数场景无感数据出站到 Cloudflare免费,零运维商业服务
FriendlyCaptcha v0.x前端组件 + 可自建验证端开源PoW 无感拼图可自托管需自行部署验证端;上游开源仓库当前已不可达(shields.io 返回 repo not found,2026-10-28),社区版演进停滞—
纯蜜罐(自研字段)站点内嵌代码—完全无感本站零依赖,但只能拦最低级机器人—

选型结论:

  • 选 mosparo:数据不能出站(合规/内网/隐私敏感站点)、不想让用户解题、愿意维护一台小型 PHP 服务、需要管理后台看拦截统计——它是这个象限里少有的完整开源方案。
  • 不选 mosparo:只想零运维挂个脚本(选 Turnstile/hCaptcha)、或者业务是高对抗性场景(票务、撞库防御)需要商业风控引擎(选 SaaS 风控)——mosparo 官方自己也承认它防不了所有垃圾。
  • 数据库选择:单站点小流量可直接 SQLite(零外部依赖);本栏部署篇实测采用 MariaDB,便于备份与多实例扩展,依赖链见《mosparo 1.5.13 安装部署指南》。

七、本栏系列文档