@crvouga/mockingbird-service-recaptcha

中文文档
1.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 2557

Deterministic reCAPTCHA v3 browser shim and single-use Siteverify emulator.

原始使用文档
文档目录4 节
  1. Install
  2. Usage
  3. API
  4. Deliberately not modelled

@crvouga/mockingbird-service-recaptcha

Local emulators. Real API contracts. Part of Mockingbird.

A WIP reCAPTCHA v3 emulator: browser grecaptcha.ready/execute, deterministic single-use tokens, and form-encoded Siteverify. The contract follows Google's verification and v3 references. It does not contact Google.

Install

bun add @crvouga/mockingbird-service-recaptcha

Usage

import { createServer } from "@crvouga/mockingbird-service-recaptcha/server"

// Test setup: a local reCAPTCHA, and a token like the one grecaptcha.execute hands the browser.
const server = await createServer()
const issued = await fetch(`${server.url}/__admin/issue`, {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ siteKey: "mock_site", action: "login", hostname: "app.example" }),
})
const { token } = await issued.json()

// Application code: the Siteverify call it makes to Google, sent to the emulator's URL.
const siteverifyUrl = `${server.url}/recaptcha/api/siteverify`
const verified = await fetch(siteverifyUrl, {
  method: "POST",
  body: new URLSearchParams({ secret: "mock_secret", response: token }),
})
const { success, score, action } = await verified.json()

await server.close()

mockingbird-recaptcha serve runs the same server standalone; createRuntime from the main entry is the in-process form. Override the browser script URL to /recaptcha/api.js?render=mock_site and the server verification URL to /recaptcha/api/siteverify on the local origin. The browser shim uses a local /__admin/issue request to obtain tokens; an admin-key-protected runtime requires tokens to be provisioned by the test harness. No admin key is embedded in script.

Tokens bind a site key, hostname, action, score, and issue time. Verification consumes them once and expires them after two minutes. A low score is still a successful vendor verification: the application checks its score threshold, expected action, and hostname.

PUT /__admin/settings accepts sites, score, per-action scores, response action/ hostname overrides, executeError, expired, replayed, and errorCodes. GET /__admin/attempts returns only time/result/error metadata, without tokens or secrets. Shared admin routes provide clock control, reset, Timeline history, namespaces, and faults. Namespace selection uses x-mockingbird-namespace or /__admin/ns/<name>/…. Custom adminPrefix relocates issuance and the shim's local target together.

Presets: human, bot, threshold_boundary, expired, replayed, script_failure, rate_limited, and server_error. Pass count: 1 for a one-shot failure. Generic faults also support deterministic latency and connection drops. No webhook or pagination exists in this vendor surface.

API

The main entry exports RecaptchaAPI, RecaptchaState, createRuntime, RECAPTCHA_NAMESPACE, RECAPTCHA_PRESETS, DEFAULT_SETTINGS, document, operationIds, and supportedOperationIds, plus public types. The /server entry exports createServer, serveTarget, and DEFAULT_PORT.

Deliberately not modelled

  • Google's risk model, device fingerprinting, interactive v2 challenges, or Enterprise API.
  • The private Geviti client's implementation: acceptance uses the documented Google flow.
  • Live successful challenges. The cold parity command probes only missing-response rejection and exits 2 without RECAPTCHA_SECRET_KEY; never use production credentials in fixtures.

版本与发布记录

@crvouga/mockingbird-service-recaptcha 共发布 20 个版本,首次发布于 2026/10/05;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.11.0latest2026/11/11今天
1.10.72026/11/038 天前
1.10.62026/11/038 天前
1.10.52026/11/038 天前
1.10.42026/11/038 天前
1.10.32026/11/038 天前

关于 @crvouga/mockingbird-service-recaptcha 的常见问题

@crvouga/mockingbird-service-recaptcha 是什么?

Deterministic reCAPTCHA v3 browser shim and single-use Siteverify emulator.

如何安装 @crvouga/mockingbird-service-recaptcha?

在项目目录运行 npm install @crvouga/mockingbird-service-recaptcha,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-recaptcha,可以用 npx mockingbird-recaptcha 直接运行。

@crvouga/mockingbird-service-recaptcha 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crvouga/mockingbird-service-recaptcha 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-service-recaptcha 可以商用吗?

@crvouga/mockingbird-service-recaptcha 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crvouga/mockingbird-service-recaptcha 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-service-recaptcha 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,557 次,日均约 85 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-service-recaptcha 还在维护吗?

最新版本 1.11.0 发布于 2026/11/11(今天);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/10/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。