ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 Cap Checkpoint 中间件保护 Elysia 应用:从安装到源码原理

使用 Cap Checkpoint 中间件保护 Elysia 应用:从安装到源码原理 网络安全应用安全后端【免费下载链接】capFree, open-source and self-hosted CAPTCHA alternative to reCAPTCHA. Privacy-first and powered by proof-of-work and instrumentation challenges.项目地址https://gitcode.com/gh_mirrors/cap13/cap点击查看免费下载本篇技术指南讲解如何为基于 Bun 的 Elysia 应用接入官方中间件cap.js/middleware-elysia用几行代码在路由前加装 Cap Checkpoint 浏览器验证关卡让所有请求先通过自托管、开源的工作量证明proof-of-workCAPTCHA 验证。读完本文你将掌握完整安装步骤、全部中间件配置参数、验证模板widget / hidden solver的接入要求并通过阅读仓库中验证服务端源码理解 token 签发、挑战生成与兑换的底层机制。Checkpoint 是什么Cap 的 Checkpoint此前称为 middleware旨在复刻 Cloudflare 的浏览器检查中间页在请求真正到达你的网站之前先对访客执行一次浏览器能力与工作量证明验证从而拦截机器人、自动化脚本和大规模滥用流量。相比把整个站点迁移到 Cloudflare这种方式只需在你的服务器代码里增加几行配置即可为指定的 Elysia 路由加上一道验证关卡。需要说明的是这是一种核弹级方案——它会同时影响良性爬虫如搜索引擎爬虫部署前请评估你的流量构成。关于 Checkpoint 的整体设计思路可参考 checkpoints 总览。安装在 Elysia 项目中使用 Bun 安装依赖bun add elysia cap.js/middleware-elysia安装完成后你还需要准备一份验证模板HTML 文件。模板只需包含一个指向/__cap_clearanceURL 的 widget 或隐藏 solverhidden solver用于在浏览器侧完成挑战求解并将结果回传到该路径。整个验证流程与模板无关模板本身可以非常精简。最小可用示例以下代码创建一个 Elysia 实例挂载capMiddleware后对外提供根路由import { Elysia, file } from elysia; import { capMiddleware } from cap.js/middleware-elysia; new Elysia() .use( capMiddleware({ token_validity_hours: 32, // token 有效时长 tokens_store_path: .data/tokensList.json, token_size: 16, // token 大小字节 verification_template_path: join(dirname(fileURLToPath(import.meta.url)), ./index.html), scoping: scoped, // global | scoped }), ) .get(/, () Hello Elysia!) .listen(3000);将verification_template_path指向你准备好的验证模板后这段代码即可直接运行。listen(3000)启动服务后所有经过中间件的路由都会先执行浏览器验证。配置参数详解capMiddleware接受以下选项参数说明示例值token_validity_hours验证通过后签发的放行 token 的有效时长小时到期后需重新验证32tokens_store_pathtoken 列表的持久化存储路径JSON 文件用于服务端记录已签发的放行 token.data/tokensList.jsontoken_size放行 token 的字节大小16verification_template_path验证模板 HTML 的绝对路径模板内需包含指向/__cap_clearance的 widget 或 hidden solverjoin(dirname(fileURLToPath(import.meta.url)), ./index.html)scoping放行 token 的作用域策略可选global或scopedscoped关于verification_template_path示例中通过import.meta.url动态获取当前模块目录再join出模板路径这样可以避免硬编码绝对路径带来的部署迁移问题。scoping 的作用scoping控制 token 的适用范围global一次验证通过后放行 token 全局生效所有受保护路由共享同一份验证结果适合整站统一的验证入口scopedtoken 仅对特定作用域如某个站点 key 或路由范围生效隔离性更强适合多租户或分区保护场景。从服务端源码可以印证作用域这一概念贯穿挑战全流程在 standalone/src/cap.js 中生成挑战时会把scope设为站点 keyscope: params.siteKey兑换验证时也会携带scope进行匹配若不匹配服务端返回Challenge token does not match site key见 cap.js。也就是说scoped token 在服务端是与具体站点 key 绑定的无法跨作用域复用。验证流程背后的服务端机制虽然中间件本身开箱即用理解其背后的服务端流程有助于调优与排障。Cap 的验证服务capServer同样基于 Elysia 构建见 standalone/src/cap.js核心包含两个阶段1. 挑战生成challenge客户端向POST /:siteKey/challenge发起请求服务端会依次执行校验站点 key 是否存在不存在返回 404见 cap.js检查客户端 IP 是否命中封禁规则返回 403见 cap.js可选的非浏览器 UA 拦截与必需请求头校验见 cap.js根据配置的协议hashwx/rsw/sha256-pow调用capjs-core的generateChallenge生成挑战见 cap.js。挑战本身带有 15 分钟 TTLCHALLENGE_TTL_MS 15 * 60 * 1000见 cap.js过期后客户端需要重新获取挑战。2. 挑战兑换与 token 签发redeem浏览器求解完成后向POST /:siteKey/redeem提交 token 与 solutions见 cap.js服务端调用capjs-core的validateChallenge进行校验校验失败会根据原因返回 400/403/429 等状态码并计入失败指标常见原因包括missing_token、expired、scope_mismatch、already_redeemed、invalid_solution以及各类 instrumentation 拦截见 cap.js校验成功后签发 redeem tokenrandomBytes(8).toString(hex)组成的siteKey:redeemId:redeemSecret结构见 cap.js默认 TTL 为 2 小时TOKEN_TTL_MS 2 * 60 * 60 * 1000见 cap.js。这个 2 小时的默认 token TTL 与中间件配置里的token_validity_hours概念对应——前者是服务端默认值后者是你在中间件里可以显式控制的放行时长二者共同决定了用户一次验证、多次放行的体验窗口。验证模板的接入要求verification_template_path指向的 HTML 是浏览器侧验证的入口接入要求只有一个关键点模板中必须包含一个指向/__cap_clearanceURL 的 widget 或隐藏 solver。widget 负责展示挑战交互界面hidden solver 则在后台静默完成证明求解。两者任选其一即可模板的其他内容品牌信息、样式、跳转逻辑完全由你自定义。与其他框架中间件的对照Cap 还提供了其他框架的等价 Checkpoint 中间件配置结构保持一致便于横向迁移Expresscap.js/checkpoint-express使用capCheckpoint需要额外安装cookie-parser见 Express 指南Honocap.js/checkpoint-hono使用capCheckpoint同样支持token_validity_hours、tokens_store_path、token_size、verification_template_path等参数见 Hono 指南。如果你在 Elysia 之外还有 Express 或 Hono 服务可以参照对应文档用相同思路接入统一由同一套自托管验证后端提供服务。小结通过cap.js/middleware-elysia你只需三步即可完成 Elysia 路由的 Checkpoint 保护bun add elysia cap.js/middleware-elysia安装依赖准备一份包含指向/__cap_clearance的 widget 或 hidden solver 的验证模板在 Elysia 实例上.use(capMiddleware({ ... }))并按需配置token_validity_hours、tokens_store_path、token_size、verification_template_path与scoping。中间件把浏览器侧挑战与自托管验证服务串联起来挑战生成、结果校验、token 签发与作用域绑定均在服务端完成源码见 standalone/src/cap.js。这套流程让开发者在不迁移站点、不依赖第三方云服务的前提下用自托管开源方案获得与 Cloudflare 浏览器检查类似的机器人拦截能力。赞分享网络安全应用安全后端【免费下载链接】capFree, open-source and self-hosted CAPTCHA alternative to reCAPTCHA. Privacy-first and powered by proof-of-work and instrumentation challenges.项目地址https://gitcode.com/gh_mirrors/cap13/cap点击查看免费下载相关推荐使用 Cap Checkpoint 中间件为 Elysia 应用接入自托管工作量证明 CAPTCHA使用 Cap Checkpoint 中间件为 Elysia 应用接入自托管工作量证明 CAPTCHA Cap 的 Checkpoint官方中间件能够在你的网络安全应用安全后端Cap 项目 Elysia 中间件集成指南用 Cap Checkpoint 为 Elysia 应用接入自托管 PoW 人机验证Cap 项目 Elysia 中间件集成指南用 Cap Checkpoint 为 Elysia 应用接入自托管 PoW 人机验证 Cap 是一套免费、开源、可自网络安全应用安全后端Encore 数据库 Schema 迁移实战用 Migration Files 安全演进 SQL 数据库结构Encore 数据库 Schema 迁移实战用 Migration Files 安全演进 SQL 数据库结构 导读 本文围绕 Encore 平台内置的数据库网络安全应用安全后端上一篇brag项目概览为什么这是AI开发者的必备工具下一篇中文BERT-wwm模型跨框架部署终极方案从开发到上线的完整避坑指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表