SilentShield

Integrer SilentShield sikkert i din formular

Klientscript, serverside-kontrol, nøgler og fejltilfælde – hele integrationen samlet ét sted.

Sådan arbejder scriptet og servertjekket sammen

En komplet integration har to halvdele: scriptet i browseren og et tjek på din server.

  1. 1

    Scriptet indlæses

    Din side indlæser client.js?k=… med din webstedsnøgle. Scriptet måler adfærden i formularen.

  2. 2

    Formularen sendes

    Ved afsendelse rapporterer scriptet målingen og tilføjer feltet behavior_nonce til din formular.

  3. 3

    Din server spørger

    Din server sender behavior_nonce til POST /api/v1/captcha/verify-nonce med din nøgle i headeren X-Api-Key.

  4. 4

    Du beslutter

    Svaret indeholder ok, verdict, confidence og reason_codes. Accepter indsendelsen, hvis ok er true, ellers afvis den.

Uden trin 3 beskytter integrationen kun halvvejs: scriptet alene stopper ikke en anmodning, der sendes direkte til din server.

Webstedsnøgle og servernøgle

Webstedsnøgle (offentlig)

client.js?k=…

Den står i kildekoden på din side og er synlig for alle. Den binder scriptet til dit domæne; underdomæner som www. eller staging. er inkluderet.

Servernøgle (hemmelig, valgfri)

X-Api-Key

Valgfrit. Hvis du vil have, at de kald, din server foretager, bærer en værdi, der ikke står i din sides kildekode, så opret den i dashboardet ved nøglen under fanen »Servernøgle«. Den hører kun hjemme på din server, aldrig i browseren, og kan genereres på ny når som helst.

Servertjekket virker med webstedsnøglen alene, så du behøver ikke ændre noget. Begge nøgler accepteres. Med servernøglen indeholder din serverkode ingen værdi, som alle kan læse i kildekoden på din side.

Hurtigstart

1

Installér og indlejr

Tilføj scriptet og få en token

2

Verificer på serveren

Valider tokenet på din backend

Hurtig test med cURL

Verificer nonce fra kommandolinjen

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

Sikkerhed & privatliv

  • Ingen cookies – fuldstændig cookie-fri drift
  • Ingen profiler, ingen cookies – kan anvendes GDPR-kompatibelt
  • EU-hosting – kontrol og lagring på vores servere i Tyskland
  • WCAG kompatibel – tilgængelig for alle brugere
  • CSP kompatibel – brug 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 og Biblioteker

Pakken kører på din server (Node.js 18 eller nyere). I browseren har du slet ikke brug for en pakke — dér er client.js-uddraget fra hurtigstarten nok.

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-reference

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

POST/api/v1/captcha/verify-nonce

Verificer SilentShield Nonce

Request Headers:

X-Api-KeyYOUR_API_KEY
Content-Typeapplication/json

Request Body:

noncestringNonce, der skal verificeres

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 er verificeret succesfuldt
400Ugyldig anmodning (manglende eller forkert Nonce)
401Ugyldig API-nøgle
403Ikke bekræftet som menneske (ok: false) – afvis indsendelsen
429Hastighedsgrænse overskredet
500Intern serverfejl

Tidsgrænser, nedbrud og kvote

  • Sæt en tidsgrænse for servertjekket. Vores kodeeksempler bruger 5 sekunder.
  • Hvis tjekket ikke svarer i tide, behandler eksemplerne det som »ikke bekræftet« og afviser. Hvis du hellere vil acceptere i det tilfælde, så fang fejlen selv — beslutningen er din.
  • Hvis den første vært ikke svarer, mens scriptet indlæser sine indstillinger og komponenter, skifter det til den anden (api.silentshield.io og api-eu.silentshield.io). Nøgler med streng EU-binding bliver på EU-værten.
  • Der er ingen automatisk reservevært for servertjekket.
  • Over din månedlige kvote fortsætter API'et med at tjekke og svarer som normalt. En 429 betyder, at grænsen for anmodninger pr. minut for din nøgle er overskredet.

Test lokalt og på et testdomæne

  • Din nøgle virker ikke på localhost: den er bundet til dit domæne, og scriptet afvises der.
  • Test på et underdomæne af dit domæne, for eksempel staging.dit-domaene.dk. Det kører med hoveddomænets nøgle og optager ikke en ekstra domæneplads.
  • Hvis du vil evaluere test og live hver for sig, så opret en ekstra nøgle til samme domæne. Heller ikke den optager en ekstra domæneplads.
  • Send en formular som test, og tjek svaret fra verify-nonce på din server: en indtastning foretaget i hånden bør returnere ok: true; ellers viser reason_codes hvorfor ikke.
Opsæt et testdomæne

Versioner og ændringer

  • API'et har sin version i stien: /api/v1. De samme ruter er tilgængelige under /api.
  • Scriptet har intet versionsnummer: client.js leverer altid den aktuelle udgave, så du behøver ikke at opdatere noget.
  • SDK'erne til PHP, Node, Go og Edge har versionsnumre; ændringer står i den enkelte pakkes changelog.
  • Vi offentliggør ændringer i API'et og scriptet i changeloggen.

Ressourcer

Hjælpecenter

Omfattende dokumentation med kom godt i gang-guides, integrationsvejledninger, konfigurationsreferencer og fejlfinding.

Ændringslog

Hold dig opdateret om de nyeste funktioner, forbedringer og rettelser.

Klar til at starte?

Opret en gratis konto, og få din nøgle.