Skip to main content
Wat cside detecteert
Language

AI-agentdetectie

Detecteer AI-agents, bots en geautomatiseerde browsers op uw site met cside Device Intelligence. Lees het botoordeel, de waarschijnlijkheid, de confidence en de redenen uit de /token/v2/verify-response.

AI-agenten en autonome browsers vormen een groeiend deel van het webverkeer. OpenAI Operator, Claude for Chrome, Perplexity Comet, Browserbase en andere agentframeworks maken echte sessies in echte browsers, dus User-Agent-controles alleen missen ze. cside Device Intelligence toont deze bezoekers via het bot-object dat /token/v2/verify in de Events API retourneert.

Wat cside detecteert

Het botoordeel combineert twee modellen plus deterministische controles:

  • Model 1 scoort de apparaatfingerprint en netwerksignalen: headless- en automatiseringsmarkers (navigator.webdriver, CDP-gebruik, geïnjecteerde automatiseringsglobals), rendering- en lettertypeafwijkingen, TCP- en TLS-kenmerken, en datacenter- of hosting-IP’s
  • Model 2 scoort gedrag op de pagina: cursorbeweging, timing van events, untrusted (door scripts verstuurde) events en JavaScript-API-hooks
  • Bekende agenten worden gekoppeld aan een bot_agent_id, zoals google-googleother, wanneer het verkeer past bij een bekende crawler- of agentsignatuur

Samen herkennen deze autonome browseragenten, headless browsers (Puppeteer, Playwright, Selenium), geïnstrumenteerde runtimes die via WebDriver of CDP worden bestuurd, en klassieke crawlers en scrapers. Detectie draait server-side nadat de browser telemetry heeft ingediend, dus alleen headers aanpassen is niet genoeg om dit te omzeilen.

Het botoordeel lezen

Wissel het sessietoken uit op /token/v2/verify met uw backend-API-sleutel. De response bevat een bot-object:

{
  "status": "completed",
  "bot": {
    "is_bot": true,
    "bot_probability": 0.94,
    "bot_confidence": 0.88,
    "bot_agent_id": "",
    "reasons": [
      "navigator.webdriver is set",
      "cursor movement scored as automated"
    ],
    "model_1_score": 0.91,
    "model_1_threshold": 0.7,
    "model_2_score": 0.86,
    "model_2_threshold": 0.6,
    "session_event_count": 42
  }
}
VeldTypeBetekenis
is_botbooleanHet oordeel. true wanneer de waarschijnlijkheid de beslissingsdrempel overschrijdt of een deterministische controle afgaat.
bot_probabilitynumberWaarschijnlijkheid dat de bezoeker een bot is, van 0 tot 1.
bot_confidencenumberHoe zeker het model is van die waarschijnlijkheid, van 0 tot 1. Een lage confidence betekent meestal dat er weinig gedragsgegevens beschikbaar waren.
bot_agent_idstringGeïdentificeerde bot of agent wanneer het verkeer bij een bekende signatuur past. Leeg wanneer er geen match is.
reasonsstring[]Leesbare verklaringen achter het oordeel.
model_1_score, model_1_thresholdnumberScore van het fingerprint- en netwerkmodel en de drempelwaarde die erop is toegepast.
model_2_score, model_2_thresholdnumberScore van het gedragsmodel en de bijbehorende drempelwaarde. Afwezig wanneer er geen gedragsgegevens zijn verzameld.
session_event_countnumberAantal gedragsevents dat de sessie heeft geproduceerd.

Vertak op is_bot. Gebruik bot_probability en bot_confidence wanneer u gradaties in uw reactie wilt, bijvoorbeeld een challenge tussen 0.5 en de drempelwaarde en een blokkade daarboven.

const { status, bot } = data;

if (status !== "completed" || !bot) {
  // Evaluatie is pending of mislukt: fail open
  return allow();
}

if (bot.is_bot) {
  return respondWithChallenge(bot.reasons);
}
Het v1-veld `bot` is niet het model

Op het publieke /token/v1/client-endpoint is bot een platte string die alleen van de User-Agent is afgeleid: "detected" wanneer die bot, crawler, spider of headless bevat, "unknown" wanneer er geen User-Agent is vastgelegd, en anders "not_detected". Het bevat niets van de modeluitvoer hierboven. Testen op bot !== "not_detected" markeert ook elke sessie met een onbekende User-Agent. Gebruik /token/v2/verify voor botbeslissingen.

Combineer het oordeel met andere signalen uit dezelfde response voor meer vertrouwen:

  • Automatiseringsvelden in fingerprint (web_driver, cdp, tamper_injected_global_ids, tamper_probe_blocked) tonen het automatiseringsbewijs rechtstreeks
  • fingerprint.developer_tools_detected komt vaak voor bij lokaal draaiende agenten
  • fingerprint.virtual_machine_detected markeert sessies die in een VM of sandbox draaien
  • ip_enrichment.hosting en ip_enrichment.is_datacenter_ip markeren verkeer van cloudproviders
Vertrouwen door combinatie

Geen enkel signaal is definitief. Behandel bot.is_bot als hoofdindicator en gebruik de fingerprint- en IP-velden als versterkend bewijs voordat u actie neemt.

Integratievoorbeeld

Vraag in uw client-side JavaScript het fingerprint-sessietoken op:

const result = await sendClientTelemetry({
  userId: "1234567890",
});

if (result.errors) {
  console.error(result.errors);
  throw new Error("Telemetry-aanvraag is mislukt.");
}

const { token: sessionToken } = result;

Wissel het sessietoken in uw backend uit met https://api.cside.com/token/v2/verify en vertak daarna op bot.is_bot:

const response = await fetch("https://api.cside.com/token/v2/verify", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CSIDE_FINGERPRINT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ token: sessionToken }),
});

const data = await response.json();

if (!response.ok) {
  throw new Error(data.error || "Fingerprintuitwisseling is mislukt.");
}

if (data.status !== "completed") {
  // 202 pending of een mislukte evaluatie: probeer later opnieuw of fail open
  return allow();
}

if (data.bot?.is_bot) {
  // Blokkeer, challenge of log het verzoek
  return respondWithChallenge();
}

/token/v2/verify retourneert 202 Accepted met { "status": "pending" } zolang de evaluatie nog wordt verwerkt. Vraag na een korte vertraging opnieuw op of fail open.

In het dashboard

De rij Bot / Agents op het Overview-tabblad van een sessie toont hetzelfde oordeel met de modelscores erachter. Het tabblad Captured metadata toont de features van het botmodel wanneer een feature-vector is vastgelegd.

Veelvoorkomende toepassingen

  • Formulieren en checkout-flows beschermen - blokkeer agentverkeer voordat het betaling of accountaanmaak bereikt
  • AI-scraping van betaalde content afschermen - pas andere rate limits of toegangsniveaus toe wanneer AI-agenten worden gedetecteerd
  • Het aandeel agentverkeer meten - log bot.is_bot, bot_probability, bot_agent_id en de user_agent-string om te rapporteren hoeveel van uw verkeer geautomatiseerd is
  • Bewijs voor chargebacks en fraude - combineer het bot-object met fingerprint.device_id om een audittrail van geautomatiseerde sessies op te bouwen

Volgende stappen

Was this page helpful?