スクリプトとサーバー側チェックの連携
完全な統合は2つの部分で構成されます。ブラウザ内のスクリプトと、お客様のサーバーでのチェックです。
- 1
スクリプトの読み込み
ページがサイトキー付きで client.js?k=… を読み込みます。スクリプトはフォーム内の行動を計測します。
- 2
フォームの送信
送信時に、スクリプトは計測結果を報告し、フォームに behavior_nonce フィールドを追加します。
- 3
サーバーによる照会
お客様のサーバーが behavior_nonce を POST /api/v1/captcha/verify-nonce に送信します。キーは X-Api-Key ヘッダーに指定します。
- 4
判断はお客様が行います
レスポンスには ok、verdict、confidence、reason_codes が含まれます。ok が true なら送信を受け付け、それ以外は拒否してください。
ステップ3がなければ、統合は半分しか保護しません。スクリプトだけでは、お客様のサーバーに直接送信されたリクエストを止められません。
サイトキーとサーバーキー
サイトキー(公開)
client.js?k=…
ページのソースに記載されるため、誰でも見ることができます。スクリプトをお客様のドメインに紐付けます。www. や staging. などのサブドメインも含まれます。
サーバーキー(秘密、任意)
X-Api-Key
任意です。サーバーからの呼び出しに、ページのソースにない値を付けたい場合は、ダッシュボードの該当キーの「サーバーキー」タブで作成してください。サーバー上にのみ置き、ブラウザには決して置かないでください。いつでも再生成できます。
サーバー側チェックはサイトキーだけで動作するため、何も変更する必要はありません。両方のキーが受け付けられます。サーバーキーを使えば、ページのソースで誰でも読める値がサーバーコードに含まれません。
クイックスタート
インストールと埋め込み
スクリプトを追加してトークンを取得
サーバー側で検証
バックエンドでトークンを検証
cURLでのクイックテスト
コマンドラインからNonceを検証
# Nonceを検証
curl -X POST https://api.silentshield.io/api/v1/captcha/verify-nonce \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"nonce": "256ea6c63c3ccdd317e05cbc9ef0c659"}'Frontend Integration
Add the client script with SRI and defer attributes
<!-- In <head> or before </body> of every page with a form -->
<script src="https://api.silentshield.io/client.js?k=YOUR_API_KEY" defer></script>セキュリティとプライバシー
- Cookieなし – 完全にCookieフリーでの動作
- プロファイルなし、Cookieなし – GDPRに準拠して利用可能
- EUホスティング – ドイツにある当社サーバーで検証と保存
- WCAG準拠 – すべてのユーザーがアクセス可能
- CSP互換 – Content Security Policyと共に使用:
Content-Security-Policy: script-src 'self' https://api-us.silentshield.io https://api-eu.silentshield.io; connect-src 'self' https://api-us.silentshield.io https://api-eu.silentshield.io; worker-src 'self' blob:;SDKとライブラリ
このパッケージはサーバー上で動作します(Node.js 18 以上)。ブラウザーではパッケージは不要で、クイックスタートの client.js スニペットで足ります。
Node.js / Express
v1.5.0npm i @forge12interactive/silentshield-sdk-jsimport { createClient } from "@forge12interactive/silentshield-sdk-js";
const shield = createClient({ apiKey: process.env.SILENTSHIELD_API_KEY });
app.post("/signup", async (req, res) => {
const { human } = await shield.verify(req.body.behavior_nonce);
if (!human) return res.status(403).send("Verification failed");
res.send("ok");
});AI エージェント(Node.js)
v1.5.0npm i @forge12interactive/silentshield-sdk-jsimport { createClient, enforce } from "@forge12interactive/silentshield-sdk-js";
const shield = createClient({ apiKey: process.env.SILENTSHIELD_API_KEY });
// Reports bot candidates only — never blocks, never sees human traffic.
app.use(shield.observe);
// Applies your policy locally from a signed bundle. Fail-open.
app.use(enforce({ apiKey: process.env.SILENTSHIELD_API_KEY }));APIリファレンス
API Version: 2025-10-01 · Base URL: https://api.silentshield.io
/api/v1/captcha/verify-nonceSilentShield Nonceを検証
Request Headers:
X-Api-KeyYOUR_API_KEYContent-Typeapplication/jsonRequest Body:
noncestring検証するNonceResponse:
Success (200):
{
"ok": true,
"verdict": "human",
"confidence": 0.95,
"requested_nonce": "256ea6c63c3ccdd317e05cbc9ef0c659"
}Error:
{
"ok": false,
"verdict": "bot",
"confidence": 0.12,
"request_nonce": "256ea6c63c3ccdd317e05cbc9ef0c659",
"reason_codes": ["NO_MOUSE_MOVEMENT"]
}Status Codes:
200Nonceが正常に検証されました400無効なリクエスト (Nonceの欠落または誤り)401無効なAPIキー403人間として確認されませんでした(ok: false)– 送信を拒否してください429レート制限を超過500内部サーバーエラータイムアウト、障害、利用枠
- サーバー側チェックにはタイムアウトを設定してください。当社のコード例では5秒を使用しています。
- チェックが時間内に応答しない場合、コード例では「未確認」として扱い拒否します。その場合に受け付けたい場合は、エラーをご自身で捕捉してください — 判断はお客様に委ねられます。
- スクリプトが設定やコンポーネントを読み込む際に最初のホストが応答しない場合、2つ目のホストに切り替わります(api.silentshield.io と api-eu.silentshield.io)。厳格なEU限定設定のキーはEUホストにとどまります。
- サーバー側チェックには自動フォールバックホストはありません。
- 月間利用枠を超えても、APIはチェックを続け、通常どおり応答します。429 は、キーの1分あたりのレート制限を超えたことを意味します。
ローカルおよびテストドメインでのテスト
- お客様のキーは localhost では機能しません。キーはお客様のドメインに紐付けられており、そこではスクリプトが拒否されます。
- お客様のドメインのサブドメイン(例:staging.your-domain.jp)でテストしてください。メインドメインのキーで動作し、追加のドメイン枠を使用しません。
- テスト環境と本番環境を別々に評価したい場合は、同じドメインに2つ目のキーを作成してください。これも追加のドメイン枠を使用しません。
- テストとしてフォームを送信し、サーバーで verify-nonce のレスポンスを確認してください。手入力の場合は ok: true が返るはずです。そうでない場合は reason_codes が理由を示します。
バージョンと変更
- APIはパスにバージョンを含みます:/api/v1。同じルートは /api でも利用できます。
- スクリプトにはバージョン番号がありません。client.js は常に最新のリリースを配信するため、更新は不要です。
- PHP、Node、Go、Edge の SDK にはバージョン番号があり、変更点は各パッケージの変更履歴に記載されています。
- APIとスクリプトの変更は変更履歴で公開しています。
リソース
ヘルプセンター
はじめにガイド、統合チュートリアル、設定リファレンス、トラブルシューティングを備えた包括的なドキュメントです。
変更履歴
最新の機能、改善、修正を常に把握できます。