TL;DR

  • Cap là CAPTCHA mã nguồn mở (Apache 2.0) do tiago.zip phát triển, thay thế reCAPTCHA / hCaptcha / Turnstile.
  • Widget chỉ ~20kb (12kb sau brotli) — nhỏ hơn hCaptcha 250 lần, zero dependencies, load trong vài ms.
  • Hai layer độc lập: SHA-256 proof-of-work qua WASM + instrumentation challenges (DOM ops kiểm browser thật).
  • Không tracking, không cookie, không fingerprint — GDPR/CCPA compliant by design.
  • Self-host 1 container Docker (~50 MB RAM, fit $5 VPS). Đã xử lý 1 tỷ verify trong Q1/2026.

Repo tiagozip/cap trên GitHub — privacy-first self-hosted CAPTCHA

Cap là gì?

Cap là một thư viện CAPTCHA frontend — nhưng bỏ hẳn cách làm cũ (chọn đèn giao thông, ghép puzzle, nhận diện ảnh). Thay vào đó, browser của user giải một bài toán SHA-256 proof-of-work chạy bằng WebAssembly: cứ thử hash đến khi tìm ra giá trị nhỏ hơn target. Với người thật click 1 lần, thao tác này tốn dưới 1 giây và diễn ra im lặng trong background. Với bot farm spam 10.000 request/giây, mỗi request lặp lại bài toán đó — chi phí điện và CPU đội lên rất nhanh, đủ để đập tan động cơ kinh tế của scraper.

Cap không dừng ở PoW. Layer thứ hai là instrumentation challenge: server tự sinh một đoạn JS bắt browser chạy DOM ops thật như getComputedStyle, canvas.toDataURL, kiểm event.isTrusted, navigator.webdriver. Headless runtime giả mạo các API này rất tốn kém. Hai layer chạy song song mỗi challenge — bypass một layer vẫn còn layer kia.

Vì sao đáng quan tâm

Bạn đã từng bị reCAPTCHA bắt chọn đèn giao thông 5 lần liền vì đang dùng VPN? Hoặc bị Cloudflare Turnstile chặn cứng vì xài Brave? Hoặc gắn hCaptcha rồi nhìn conversion rate rớt 5–15% vì user bỏ chạy giữa puzzle? Đó là những vấn đề mà các CAPTCHA truyền thống mang lại.

Cap giải quyết theo hướng khác: không xác thực user là người, mà biến mass automation thành món bất khả thi về kinh tế. Người thật trả 0.0 cent CPU để verify, bot farm trả nhiều hơn lợi nhuận thu được — và họ tự bỏ cuộc.

Lợi ích cụ thể cho frontend dev:

  • Page load thực sự nhanh: 20kb vs 500–600kb của reCAPTCHA/hCaptcha. Không còn chặn LCP.
  • Không lo GDPR/CCPA: không cookie, không telemetry ⇒ legal team duyệt ngay.
  • Không vendor lock-in: Apache 2.0, fork và audit được. Không lo Google đổi pricing hay API.
  • Drop-in migrate: siteverify API tương thích với reCAPTCHA & hCaptcha — đổi backend gần như zero refactor, chỉ swap widget client-side.

Technical facts

PropertyValue
Bundle size~20 kb (12 kb minified + brotli)
Dependencies0 (zero-dep cả widget lẫn server)
Runtime hỗ trợBun, Node.js, Deno (+ standalone Docker cho mọi ngôn ngữ)
Layer 1SHA-256 PoW qua WASM (Rust solver)
Layer 2Instrumentation: canvas.toDataURL, getComputedStyle, event.isTrusted...
Standalone idle RAM~50 MB
LicenseApache 2.0
GitHub stars5.4k+
Solves Q1/20261.000.000.000

Benchmark thời gian giải PoW (difficulty 4, 50 challenges) trên các thiết bị thực tế:

TierDeviceBrowserSolve time
Low-endSamsung Galaxy A11Chrome2.926s
Low-endiPhone SE (2020)Safari1.282s
MidGoogle Pixel 7Chrome1.027s
MidiPad (9th gen)Safari1.401s
High-endGoogle Pixel 9Chrome0.894s
High-endM3 MacBookChrome0.412s

Hệ sinh thái packages: @cap.js/widget, @cap.js/server, @cap.js/solver (M2M), @cap.js/cli, @cap.js/wasm (Rust solver thử nghiệm), và checkpoint middleware cho Hono / Express / Elysia.

So sánh với reCAPTCHA, hCaptcha, Turnstile

 CapreCAPTCHATurnstilehCaptcha
Self-hosted
Open sourceApache 2.0
Visual puzzleKhôngThường xuyênHiếmThường xuyên
3rd-party telemetryKhôngGoogleCloudflarehCaptcha
Bundle size~20 kb500 kb+110 kb+600 kb+
Free at scale✅ (self-host)Quota✅ (vendor)Quota

Theo doc của Cap, hCaptcha có drop-off rate 5–15% vì "puzzle tax", còn Turnstile hay block hard các browser private (Brave, LibreWolf) do dựa nặng vào fingerprinting. Cap đặt control vào tay bạn: bạn quyết difficulty, bạn quyết strictness.

Use cases & integration modes

Cap có 4 mode hiển thị, chọn tuỳ context:

  • Visible: widget hiện rõ — cho form đăng ký, comment.
  • Invisible: chạy ngầm khi user submit, chỉ escalate khi nghi ngờ — lý tưởng cho login form chống credential stuffing.
  • Floating: ẩn cho tới khi cần — UX đẹp cho landing page.
  • Programmatic: ẩn hoàn toàn, gọi qua JS API — bảo vệ API endpoint mà không lộ widget.

Cộng thêm M2M solver (@cap.js/solver) để allow-list bot "thân thiện" như crawler nội bộ, monitoring agent. Và checkpoint middleware để dựng trang "Verifying you are human" kiểu Cloudflare cho traffic high-risk.

Dashboard Cap Standalone với analytics đa site key, location, network breakdown

Standalone mode (Docker container chạy trên Bun) đi kèm dashboard quản lý nhiều site key, analytics theo location/network, theo dõi tỉ lệ verified/failed real-time. siteverify endpoint tương thích reCAPTCHA & hCaptcha nên migration giống như đổi base URL.

Hạn chế & pricing

Pricing: miễn phí vĩnh viễn. Self-host trên VPS $5/tháng là đủ cho hầu hết project. Không phí per-request, không quota API, không egress fee.

Hạn chế cần biết trước khi gắn vào production:

  • Pin điện thoại low-end: nếu set difficulty quá cao, Galaxy A11 mất gần 3s — có thể tốn pin thấy rõ. Tune difficulty theo thiết bị target user thực tế.
  • Không phải Turing test tuyệt đối: Cap nên xem là rate-limiter có cost, không phải human-detector. Attacker chấp nhận trả 1–2s/request vẫn vượt qua được nếu volume nhỏ.
  • SHA-256 có ASIC: attacker giàu hardware (FPGA, ASIC) có thể giải nhanh hơn browser WASM 10.000 lần. Layer instrumentation phải gánh phần này.
  • Không stop 100% abuse: không CAPTCHA nào làm được điều này — mục tiêu của Cap là làm abuse không có lời, không phải bất khả thi.

Triển khai thế nào & nguồn tham khảo

Setup nhanh nhất: kéo container tiagozip/cap-standalone qua docker-compose, mở port 3000, đăng nhập dashboard bằng ADMIN_KEY ≥ 32 ký tự, tạo site key, copy vào widget. Tổng thời gian quote từ tác giả: ~15 phút từ zero đến production.

Project đang active — widget mới nhất là 0.1.45, vừa thêm speculative challenges, JWT challenge tokens, và Rust WASM solver. Roadmap có thêm middleware cho nhiều framework, cải tiến instrumentation chống AI scraper.

Nguồn: tiagozip/cap (GitHub) · capjs.js.org · benchmark · so sánh alternatives · thảo luận Hacker News.