SilentShield

Integrera SilentShield säkert i ditt formulär

Klientskript, kontroll på serversidan, nycklar och felfall – hela integrationen på ett ställe.

Så samverkar skriptet och serverkontrollen

En fullständig integration har två halvor: skriptet i webbläsaren och en kontroll på din server.

  1. 1

    Skriptet laddas

    Din sida laddar client.js?k=… med din webbplatsnyckel. Skriptet mäter beteendet i formuläret.

  2. 2

    Formuläret skickas

    Vid inskickning rapporterar skriptet mätningen och lägger till fältet behavior_nonce i ditt formulär.

  3. 3

    Din server frågar

    Din server skickar behavior_nonce till POST /api/v1/captcha/verify-nonce, med din nyckel i headern X-Api-Key.

  4. 4

    Du bestämmer

    Svaret innehåller ok, verdict, confidence och reason_codes. Godkänn inskickningen om ok är true, annars avvisa den.

Utan steg 3 skyddar integrationen bara till hälften: skriptet ensamt stoppar inte en förfrågan som skickas direkt till din server.

Webbplatsnyckel och servernyckel

Webbplatsnyckel (offentlig)

client.js?k=…

Den står i källkoden på din sida och är därmed synlig för alla. Den binder skriptet till din domän; underdomäner som www. eller staging. ingår.

Servernyckel (hemlig, valfri)

X-Api-Key

Valfritt. Om du vill att de anrop som din server gör ska innehålla ett värde som inte finns i källkoden på din sida, skapa den i instrumentpanelen vid nyckeln, på fliken ”Servernyckel”. Den hör bara hemma på din server, aldrig i webbläsaren, och kan genereras på nytt när som helst.

Serverkontrollen fungerar med enbart webbplatsnyckeln, så du behöver inte ändra något. Båda nycklarna accepteras. Med servernyckeln innehåller din serverkod inget värde som vem som helst kan läsa i källkoden på din sida.

Snabbstart

1

Installera och bädda in

Lägg till skriptet och få en token

2

Verifiera på servern

Validera token på din backend

Snabbtest med cURL

Verifiera nonce från kommandoraden

# Verifiera 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>

Säkerhet och integritet

  • Inga cookies – helt cookie-fri drift
  • Inga profiler, inga cookies – kan användas GDPR-kompatibelt
  • EU-hosting – kontroll och lagring på våra servrar i Tyskland
  • WCAG-kompatibel – tillgänglig för alla användare
  • CSP-kompatibel – använd med 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:er och Bibliotek

Paketet körs på din server (Node.js 18 eller senare). I webbläsaren behöver du inget paket alls — där räcker client.js-utdraget från snabbstarten.

Node.js / Express

v1.5.0
npm i @forge12interactive/silentshield-sdk-js
import { 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-agenter (Node.js)

v1.5.0
npm i @forge12interactive/silentshield-sdk-js
import { 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-referens

API Version: 2025-10-01 · Base URL: https://api.silentshield.io

POST/api/v1/captcha/verify-nonce

Verifiera SilentShield Nonce

Request Headers:

X-Api-KeyYOUR_API_KEY
Content-Typeapplication/json

Request Body:

noncestringDen nonce som ska verifieras

Response:

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 framgångsrikt verifierad
400Ogiltig förfrågan (nonce saknas eller är felaktig)
401Ogiltig API-nyckel
403Inte bekräftad som människa (ok: false) – avvisa inskickningen
429Hastighetsgräns överskriden
500Internt serverfel

Tidsgränser, avbrott och kvot

  • Ange en tidsgräns för serverkontrollen. Våra kodexempel använder 5 sekunder.
  • Om kontrollen inte svarar i tid behandlar exemplen det som ”inte bekräftat” och avvisar. Om du hellre vill godkänna i det fallet, fånga felet själv — beslutet är ditt.
  • Om den första värden inte svarar medan skriptet laddar sina inställningar och komponenter, växlar det till den andra (api.silentshield.io och api-eu.silentshield.io). Nycklar med strikt EU-bindning stannar på EU-värden.
  • Det finns ingen automatisk reservvärd för serverkontrollen.
  • Över din månadskvot fortsätter API:t att kontrollera och svarar som vanligt. En 429 betyder att gränsen för förfrågningar per minut för din nyckel har överskridits.

Testa lokalt och på en testdomän

  • Din nyckel fungerar inte på localhost: den är bunden till din domän och skriptet avvisas där.
  • Testa på en underdomän till din domän, till exempel staging.din-doman.se. Den körs med huvuddomänens nyckel och tar inte upp någon extra domänplats.
  • Om du vill utvärdera test och skarp drift separat, skapa en andra nyckel för samma domän. Inte heller den tar upp någon extra domänplats.
  • Skicka ett formulär som test och kontrollera svaret från verify-nonce på din server: en inmatning som skrivits för hand bör returnera ok: true; annars visar reason_codes varför inte.
Konfigurera en testdomän

Versioner och ändringar

  • API:t har sin version i sökvägen: /api/v1. Samma rutter finns tillgängliga under /api.
  • Skriptet har inget versionsnummer: client.js levererar alltid den aktuella utgåvan, så du behöver inte uppdatera något.
  • SDK:erna för PHP, Node, Go och Edge har versionsnummer; ändringar står i respektive pakets ändringslogg.
  • Vi publicerar ändringar i API:t och skriptet i ändringsloggen.

Resurser

Hjälpcenter

Omfattande dokumentation med kom igång-guider, integrationsguider, konfigurationsreferenser och felsökning.

Ändringslogg

Håll dig uppdaterad om de senaste funktionerna, förbättringarna och korrigeringarna.

Redo att starta?

Skapa ett gratiskonto och få din nyckel.