Synapse Shield:菲茨定律与运动学验证,替代Cloudflare Turnstile

原文:https://dev.to/0xstoic_bit/i-built-an-open-source-alternative-to-cloudflare-turnstile-using-fittss-law-and-kinematics-442 (作者 @0xstoic_bit)

我一直很讨厌那些侵入式的验证码和昂贵的专有云WAF。即使是“无感”的(如Cloudflare Turnstile或reCAPTCHA v3),本质上也是黑箱,会收集大量的用户遥测数据。

因此,我花了过去几个月构建了Synapse Shield——一个完全开源、可自托管的行为式机器人防御引擎,适用于Python(FastAPI/Django/Flask)和React。

工作原理(运动学与数学)

Synapse Shield 不仅仅检查鼠标是否直线移动,而是以亚毫秒级分析19维运动学向量:

  1. 急动度(位置的三阶导数): 人类肌肉有微小的震颤。而机器人(即使是高级的贝塞尔曲线机器人)产生的急动度接近于零或呈静态。引擎会检测这种生物震颤($da/dt$)。
  2. 菲茨定律的终端减速: 人类在点击目标时,光标会自然减速。我们测量 终端减速比 来捕捉机器人。
  3. 泊松异常检测: 使用累积泊松分布算法来捕获无头API洪水攻击。

主要特性与加固(v0.5.0)

  • 异步非阻塞SLA (<0.5ms): 通过 asyncio.to_thread 卸载处理,确保永不阻塞 FastAPI/Django 事件循环。
  • 加密重放防御: 使用带有 SQLite WAL 的 HMAC-SHA256 签名随机数,确保令牌无法被重放。
  • 无障碍模式: 通过设置 accessibility_mode=True 可以优雅地降低运动学阈值,避免错误地标记行动不便的用户。
  • React 与 Next.js SSR 支持: 提供原生的 "use client" 可插入组件和 Hook,避免水合错误。
  • 企业级 Prometheus 指标: 原生支持 PROMETHEUS_MULTIPROC_DIR,适配 Gunicorn/Uvicorn 多工作进程。

快速代码示例 (FastAPI)

from fastapi import FastAPI, Request
from synapse_shield import shield_protect, SynapseShieldMiddleware

app = FastAPI()
app.add_middleware(SynapseShieldMiddleware, protected_paths=["/api/auth"])

@app.post("/api/login")
@shield_protect(max_risk_score=50.0, accessibility_mode=False)
async def login(request: Request):
    return {"status": "authenticated"}


我渴望收到你的反馈、代码审计,或者关于如何改进运动学引擎的任何想法!

原文:https://dev.to/0xstoic_bit/i-built-an-open-source-alternative-to-cloudflare-turnstile-using-fittss-law-and-kinematics-442 (作者 @0xstoic_bit)

发布评论
全部评论(0)