网络安全应用安全后端【免费下载链接】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 是 Cap 项目中面向服务端中间件形态的浏览器验证方案此前称为 middlewares它像 Cloudflare 的 检查您是否是人类 的 interstitial 页面一样在真实请求抵达你的业务路由之前先插入一道由 proof-of-work 与浏览器检测instrumentation构成的验证关卡把机器人、LLM 抓取器和自动化滥用挡在网站之外。本篇以 docs/guide/middleware/express.md 为主线演示如何在 Express 应用中用cap.js/checkpoint-express在几行代码内为路由加上 Cap Checkpoint并结合仓库源码说明令牌存储、验证模板与工作原理。读完本文你将掌握安装与最小集成、中间件的完整配置项含token_validity_hours、tokens_store_path、token_size、verification_template_path四个核心参数、无头浏览器拦截等加固选项以及 Checkpoint 与 Cap Standalone 两种接入方式的取舍。什么是 Cap CheckpointCheckpoint 的定位在 docs/guide/middleware/index.md 中有清晰描述它们允许你复刻 Cloudflare 的浏览器检查 interstitial帮助阻止 bots、LLMs 和自动化滥用到达你的网站。与把整站迁移到 Cloudflare 相比你只需在服务端加几行代码即可获得同样的效果。值得强调的是官方文档称之为 nuclear solution核选项它同样会拦截搜索引擎爬虫之类的正常 bot因此只适用于你确实想要对全部流量施加验证的入口路由。从仓库结构看Checkpoint 与 Cap 的两条技术主线都相关若你已部署 Cap Standalone自托管后端含 dashboard、/siteverify等Checkpoint 可以作为额外的服务端入口把关层Checkpoint 本身也依赖同一套 proof-of-work / instrumentation 挑战体系其验证令牌的存续逻辑与 Standalone 服务端 cap.js 中TOKEN_TTL_MS的思路一致Standalone 默认挑战有效期 15 分钟、通过后令牌有效 2 小时。安装官方推荐使用 Bun 作为包管理器。在 Express 项目中执行bun add express cookie-parser cap.js/checkpoint-express三个依赖的分工是express— 承载路由的 Web 框架cookie-parser— Checkpoint 依赖 cookie 来存放验证令牌clearance tokenExpress 侧需要它来解析cap.js/checkpoint-express— 本中间件的核心安装后从中导出capCheckpoint。最小可运行集成以下是 docs/guide/middleware/express.md 给出的完整用法直接可复制运行import express from express; import cookieParser from cookie-parser; import path from path; import { dirname } from path; import { fileURLToPath } from url; import { capCheckpoint } from cap.js/checkpoint-express; const app express(); const __dirname dirname(fileURLToPath(import.meta.url)); app.use(express.json()); app.use(cookieParser()); app.use( capCheckpoint({ /* token_validity_hours: 32, tokens_store_path: .data/tokensList.json, token_size: 16, verification_template_path: join(__dirname, ./index.html), */ }), ); app.get(/, (req, res) { res.sendFile(path.join(__dirname, success.html)); }); app.listen(3000, () { console.log(Server running on http://localhost:3000); });几个要点__dirname的求值方式dirname(fileURLToPath(import.meta.url))是为了在 ESM 模块中还原 CommonJS 的__dirname语义用来定位verification_template_path与success.htmlcookieParser()必须在capCheckpoint之前注册否则中间件无法读写验证 cookie未被验证的请求会被引导到验证模板通过后才放行到/路由并返回success.html。核心配置项详解capCheckpoint接受一个配置对象docs/guide/middleware/express.md 中以注释形式给出了四个核心参数Hono 版本的文档 docs/guide/middleware/hono.md 与 Elysia 版本的文档 docs/guide/middleware/elysia.md 也使用了相同的参数集其中 Elysia 版本还额外暴露了scoping。逐项说明如下参数默认值说明token_validity_hours32验证通过后发放的令牌有效小时数。令牌被写入 cookie在有效期内同一浏览器无需重复挑战到期后重新验证。tokens_store_path.data/tokensList.json令牌存储的 JSON 文件路径。中间件需要持久化已发放的令牌以便校验与清理此路径相对进程工作目录解析。token_size16令牌的字节大小用于生成随机令牌内部使用密码学安全随机数。单位是字节16对应 128 位熵。verification_template_path无需显式指定验证页 HTML 模板的绝对路径。模板内需要挂载 Cap widget 或隐藏求解器并把验证结果回传给中间件对应的端点。配置要点模板必须指向 widget 或隐藏求解器。Elysia 文档中的提示同样适用于 Expressdocs/guide/middleware/elysia.md 明确说明 The template just needs to have a widget or hidden solver pointing at the/__cap_clearanceURL。也就是说验证模板是 Checkpoint 前端与后端之间的桥梁页面加载 Cap widget来自 widget 或 [widget/src/src/cap-floating.js)完成 proof-of-work / instrumentation 挑战后把结果提交到/__cap_clearance中间件校验通过即写入 clearance cookie 并放行。tokens_store_path的落地令牌清单以 JSON 文件形式落盘重启进程后依然有效这与 Standalone 用 Redis/Valkey 存令牌见 standalone/src/db.js 及 docs/guide/standalone/options.md 的 Redis / Valkey 一节不同——Checkpoint 走的是零外部依赖的纯文件方案开箱即用。cookie 语义验证令牌通过 cookie 与浏览器会话绑定。cookie-parser的作用就在于此Express 侧需要先解析 cookiecapCheckpoint才能判断当前请求是否已持有有效令牌、是否需要重新走验证流程。它是如何工作的结合源码从 Checkpoint 的设计interstitial 模式与仓库源码可推断其运行流程请求到达浏览器发起对受保护路由的请求capCheckpoint先检查请求 cookie 中是否已有未过期的验证令牌无令牌则出示验证页中间件返回verification_template_path指向的 HTML即 Cloudflare 式 interstitial页面内嵌入的 widget 自动开始求解 proof-of-work 挑战必要时附带 instrumentation 浏览器检测回传验证页面把挑战结果 POST 到/__cap_clearance端点中间件校验 proof-of-work 的解与 instrumentation 数据对应 Standalone 服务端 cap.js 中/redeem校验逻辑token、solutions、instr/instr_blocked/instr_timeout等字段失败原因覆盖expired、scope_mismatch、already_redeemed、instr_automated_browser、instr_timeout等发放令牌校验通过后生成token_size字节的随机令牌写入 cookie 并追加到tokens_store_path的清单中后续请求在token_validity_hours内直接放行。与 Standalone 模式的区别值得注意Standalone 是完整的自托管验证后端docker-compose Valkey dashboard /siteverify见 docs/guide/standalone/index.mdCheckpoint 则是内嵌在业务服务进程里的轻量守卫。前者适合需要 dashboard、多站点 key 管理与站点验证 API 的独立部署后者适合 只想给 Express 加一道门 的极简场景。加固与使用建议结合 docs/guide/standalone/options.md 中关于挑战体系的最佳实践可以给出以下与 Checkpoint 场景直接相关的建议保留 instrumentation 挑战Standalone 文档指出 instrumentation challenges 默认开启能显著提高对 bots 的拦截门槛并支持 Attempt to block headless browsers拦截无头浏览器。Checkpoint 所依托的同一套挑战体系同样受益于这些能力谨慎对待全站启用正如 docs/guide/middleware/index.md 所警示的Checkpoint 也会拦截搜索引擎爬虫等正常 bot。若站点依赖 SEO应只对敏感路由登录、注册、API 写接口启用而不是挂在全局app.use将验证模板作为静态资产把index.html放在项目目录与success.html同级用join(__dirname, ./index.html)精确指向按路由粒度挂载示例中使用app.use(capCheckpoint(...))对所有请求生效若只想保护部分路由可将其作为路由级中间件传入例如app.get(/admin, capCheckpoint({...}), handler)。更多资源docs/guide/middleware/index.md — Checkpoint 整体概念与适用场景docs/guide/middleware/hono.md 与 docs/guide/middleware/elysia.md — 其他框架的等价接入参数一致Elysia 多一个scoping选项docs/guide/standalone/index.md — 完整的自托管后端含 dashboard 与/siteverifydocs/guide/standalone/options.md — 挑战协议、instrumentation 与限流等运行配置standalone/src/cap.js — 挑战生成与令牌校验的服务端实现widget/src/src/cap.js — 前端 widget 源码验证模板所需赞分享网络安全应用安全后端【免费下载链接】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 × Hono用 cap.js/checkpoint-hono 为 Hono 应用接入自托管 PoW 验证页Cap × Hono用 cap.js/checkpoint hono 为 Hono 应用接入自托管 PoW 验证页 本文介绍如何在 Hono 应用中通过官方网络安全应用安全后端Cap 项目 Elysia 中间件集成指南用 Cap Checkpoint 为 Elysia 应用接入自托管 PoW 人机验证Cap 项目 Elysia 中间件集成指南用 Cap Checkpoint 为 Elysia 应用接入自托管 PoW 人机验证 Cap 是一套免费、开源、可自网络安全应用安全后端Cap Express Checkpoint 接入指南用 cap.js/checkpoint-express 为路由加装自托管工作量证明验证Cap Express Checkpoint 接入指南用 cap.js/checkpoint express 为路由加装自托管工作量证明验证 本指南讲解如何网络安全应用安全后端上一篇10个 SwiftyJSON 使用技巧告别 Swift 中 JSON 处理的烦恼下一篇Squoosh企业级批量图像压缩方案自动化处理终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考