Capのご紹介: プライベートで軽量、オープンソースなプルーフ・オブ・ワークCAPTCHAの代替ソリューション
Cap: PoW型のCAPTCHAに代わる認証システム
プロジェクト概要
Capは、SHA-256のPoW(Proof-of-Work)を利用した、軽量でモダンなオープンソースのCAPTCHA代替システムです。既存のCAPTCHAシステムの代替として、高速かつプライバシーに配慮した統合しやすい認証ソリューションを目指しています。パフォーマンスとユーザー体験を重視し、JavaScriptで構築されており、Bun、Node.js、Denoなど、あらゆるJSランタイムで動作します。JavaScript以外の環境向けには、単独で使えるDockerイメージも提供されています。
主な構成要素は以下の2つです。
- @cap.js/widget
: Web WorkerとWASMを使ってCAPTCHAを表示し、認証を解決するためのJavaScriptライブラリ。
- @cap.js/server
: サーバー側で認証を作成・検証するための、依存関係を持たないライブラリ。
さらに、便利なパッケージや機能が提供されています。
- @cap.js/solver
: 機械間の連携(M2M)のためのサーバーサイドソルバー。
- @cap.js/cli
: CAPTCHAを解決するためのコマンドラインインターフェース。主にテストやJavaScriptブラウザサポートのない環境で使用されます。
- スタンドアロンモード: 認証作成/検証のためのシンプルなREST APIと対話型UIを提供するDockerイメージ。これにより、あらゆる言語/フレームワークでの利用が可能になります。
- @cap.js/wasm
: Rustで構築された実験的なWASMソルバー。
- Checkpointミドルウェア: @cap.js/checkpoint-hono
、@cap.js/checkpoint-express
、@cap.js/middleware-elysia
といったライブラリで、Cloudflareのブラウザチェックポイントのような体験を提供します。
利用方法
Capは、JavaScriptランタイム環境でJavaScriptライブラリ(@cap.js/widget
と@cap.js/server
)を使うことで組み込めます。JavaScript以外の環境では、スタンドアロンのDockerイメージがREST APIを提供し、連携できます。詳細なクイックスタートガイドと完全なドキュメントは、プロジェクトリンクからアクセスできます。
主な特徴
- 軽量:
@cap.js/widget
は、ミニファイされBrotli圧縮後わずか12KB。hCaptchaと比較して250分の1のサイズです。 - プライベート: PoWを利用するため、トラッキング、フィンガープリンティング、データ収集が不要です。
- PoW(Proof-of-Work): SHA-256 PoWを採用しており、人間にとってはわずかな計算で解決しやすいため、ボットにとっては難しい設計です。
- 完全にカスタマイズ可能: セルフホストが可能で、バックエンドとフロントエンドの両方を、またはCSS変数を使ってカスタマイズできます。
- スタンドアロンモード: シンプルなREST APIを通じて、あらゆるプログラミング言語やフレームワークで使用できるDockerイメージが提供されています。
- 不可視モード: JavaScript APIを使ってバックグラウンドで目に見えない形で動作できます。
- フローティングモード: CAPTCHAは、明示的に必要となるまで非表示のままです。
- 完全オープンソース: Apache License 2.0でライセンスされています。
- 依存関係なし: 主要コンポーネントは、外部依存関係なしにJavaScriptで構築されています。
- クロスランタイム互換性: Bun、Node.js、Denoで動作します。
- GDPR/CCPA準拠: プライバシー中心の設計により、これらの規制に自然に準拠しています。
ターゲットユーザー
Capは以下のユーザーに最適です。 - プライバシーとパフォーマンスを重視するCAPTCHA代替を探している開発者や組織。 - APIをボットから保護する必要のあるウェブサイトやアプリケーション。 - フォームでのスパム防止を目指すオンラインプラットフォーム。 - 自動ログイン試行のブロックを必要とするサービス。 - フリーティアの悪用からの保護が必要なプロジェクト。
プロジェクトリンク
- GitHubリポジトリ: https://github.com/tiagorangel1/cap
- ドキュメント/ウェブサイト: https://capjs.js.org/
アプリケーションシナリオ
- API保護: REST APIを自動リクエストやボット攻撃から保護します。
- フォームスパム防止: コンタクトフォーム、登録フォーム、コメント欄にCAPTCHAを実装し、スパム投稿を防ぎます。
- ログインセキュリティ: ブルートフォース攻撃や自動ログイン試行に対する保護層を追加します。
- フリーティアの悪用防止: 正当な人間による操作を確実に行うことで、無料サービスや限られたリソースの悪用を軽減します。
- Cloudflareのようなチェックポイント: 提供されているミドルウェアを使用して、セキュリティを強化するためのブラウザチェックポイント体験を作成します。