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, zoalsgoogle-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
}
}
| Veld | Type | Betekenis |
|---|---|---|
is_bot | boolean | Het oordeel. true wanneer de waarschijnlijkheid de beslissingsdrempel overschrijdt of een deterministische controle afgaat. |
bot_probability | number | Waarschijnlijkheid dat de bezoeker een bot is, van 0 tot 1. |
bot_confidence | number | Hoe zeker het model is van die waarschijnlijkheid, van 0 tot 1. Een lage confidence betekent meestal dat er weinig gedragsgegevens beschikbaar waren. |
bot_agent_id | string | Geïdentificeerde bot of agent wanneer het verkeer bij een bekende signatuur past. Leeg wanneer er geen match is. |
reasons | string[] | Leesbare verklaringen achter het oordeel. |
model_1_score, model_1_threshold | number | Score van het fingerprint- en netwerkmodel en de drempelwaarde die erop is toegepast. |
model_2_score, model_2_threshold | number | Score van het gedragsmodel en de bijbehorende drempelwaarde. Afwezig wanneer er geen gedragsgegevens zijn verzameld. |
session_event_count | number | Aantal 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);
}
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_detectedkomt vaak voor bij lokaal draaiende agentenfingerprint.virtual_machine_detectedmarkeert sessies die in een VM of sandbox draaienip_enrichment.hostingenip_enrichment.is_datacenter_ipmarkeren verkeer van cloudproviders
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_iden deuser_agent-string om te rapporteren hoeveel van uw verkeer geautomatiseerd is - Bewijs voor chargebacks en fraude - combineer het
bot-object metfingerprint.device_idom een audittrail van geautomatiseerde sessies op te bouwen
Volgende stappen
- Lees de volledige Events API-reference voor de complete responsevorm
- Bekijk het
bot_evaluation-object van de S3-export voor dezelfde velden in batchexports - Neem contact op met sales om Device Intelligence voor uw account te activeren
Thanks for your feedback!