Cap Standalone
Cap Standalone 是自托管 Cap 后端的推荐方式。它运行在 Bun 上,空闲内存占用约 50 MB,内置 instrumentation(浏览器环境检测)质询,能显著提高机器人的作弊门槛;提供兼容 reCAPTCHA 的 siteverify API;还带有一个管理多个站点密钥的 Web 控制台。
我们推荐使用 Docker 来运行 Cap Standalone。
安装
创建 docker-compose.yml 文件:
yaml
services:
cap:
image: tiago2/cap:latest
container_name: cap
ports:
- "3000:3000"
environment:
ADMIN_KEY: your_secret_password
REDIS_URL: redis://valkey:6379
depends_on:
valkey:
condition: service_healthy
restart: unless-stopped
valkey:
image: valkey/valkey:9-alpine
container_name: cap-valkey
volumes:
- valkey-data:/data
command: valkey-server --save 60 1 --loglevel warning --maxmemory-policy noeviction
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
volumes:
valkey-data:提示
ADMIN_KEY是登录控制台的密码,建议长度至少 32 个字符- 如果主机上 3000 端口已被占用,修改
3000:3000。 - 如果控制台无法访问,尝试在
cap服务下添加network_mode: "host"。
启动容器:
bash
docker compose up -d打开 http://localhost:3000(或你服务器 3000 端口对应的 IP/域名)进入控制台。用管理员密钥登录,创建一个站点密钥,并记下站点密钥(site key)和对应的秘密密钥(secret key),两者都会用到。
新建站点密钥时,instrumentation 质询默认开启。我们建议保持开启,因为它能显著提高机器人的作弊门槛。如需额外防护,可以启用无头浏览器检测。
你的 Cap Standalone 实例必须能从公网访问,验证组件才能与它通信。如果部署在反向代理后面,请按选项指南配置速率限制。
使用
客户端
通过设置 data-cap-api-endpoint 属性,让验证组件指向你的实例:
https://<instance_url>/<site_key>/<instance_url>:你的 Cap Standalone 实例的公开 URL<site_key>:控制台中的站点密钥
示例:
html
<cap-widget data-cap-api-endpoint="https://cap.example.com/d9256640cb53/"></cap-widget>更多细节和各框架的示例代码,见验证组件文档。
服务端
用户完成 CAPTCHA 后,你的后端必须先验证令牌,才能信任它。向你实例的 /siteverify 端点发送 POST 请求,JSON 请求体如下:
bash
curl "https://<instance_url>/<site_key>/siteverify" \
-X POST \
-H "Content-Type: application/json" \
-d '{ "secret": "<key_secret>", "response": "<captcha_token>" }'其中 <key_secret> 是控制台中的秘密密钥(不是控制台的管理员密钥),<captcha_token> 是验证组件生成的质询令牌。
验证成功会返回:
json
{ "success": true }