Skip to main content
Fonctionnement de la livraison
Language

Export S3

Livrez chaque évaluation Device Intelligence terminée dans votre propre bucket S3 au format JSONL ou Parquet, avec l'empreinte complète de l'appareil et les signaux réseau, IP, géo, VPN, bot et comportementaux.

L’export S3 de Device Intelligence écrit chaque évaluation terminée dans un bucket S3 qui vous appartient, pour que vous puissiez charger les données d’empreinte et de risque dans votre propre entrepôt de données, vos outils antifraude ou votre pipeline d’analyse. Chaque enregistrement contient l’empreinte complète de l’appareil, ainsi que les signaux réseau, IP, géo, VPN, bot et comportementaux que cside a calculés pour cette visite.

Fonctionnalité Device Intelligence payante

L’export S3 est disponible sur les offres Device Intelligence payantes et pendant toute la durée d’un essai Device Intelligence actif. Activez-le et configurez-le dans Settings > Device Intelligence du tableau de bord. Si votre offre expire, cside conserve vos configurations d’export et met la livraison en pause, et l’onglet est remplacé par une invitation à passer à une offre supérieure : les exports ne peuvent donc plus être modifiés ni supprimés tant que vous n’avez pas mis à niveau. La livraison reprend d’elle-même après la mise à niveau, sans reconfiguration.

Fonctionnement de la livraison

  • Format : JSONL (JSON Lines, application/x-ndjson) ou Apache Parquet. Vous choisissez le format pour chaque export dans le tableau de bord. En JSONL, chaque ligne est un enregistrement d’évaluation complet. Parquet regroupe les mêmes enregistrements dans un fichier en colonnes que vous pouvez charger directement dans un entrepôt de données ou un moteur de requête.
  • Fréquence : cside envoie un lot par jour. Chaque exécution couvre l’intégralité du jour UTC précédent. Un jour sans évaluation terminée ne produit aucun objet.
  • Organisation des objets : les objets sont déposés sous un chemin partitionné et autodescriptif (voir ci-dessous).
  • Dédupliqué : chaque évaluation apparaît une seule fois, dans sa dernière version calculée. Réexécuter un jour écrase les mêmes objets sur place, il n’y a donc aucune ligne en double à réconcilier.
  • Destination : votre bucket. cside écrit des objets, mais ne les lit ni ne les liste jamais.

Les objets sont nommés :

<path prefix>/cside-fingerprints/team=<team_id>/dt=<YYYY-MM-DD>/fingerprints-<HH>.<ext>

dt=<YYYY-MM-DD> est le jour UTC auquel les enregistrements appartiennent, et <HH> est l’heure UTC sur deux chiffres, de sorte que l’export d’un jour est réparti en un objet par heure ayant eu des évaluations. <ext> vaut jsonl ou parquet. Les segments team= et dt= sont des partitions de style Hive, de sorte que des moteurs de requête comme Athena, Glue et Spark les utilisent automatiquement pour l’élagage des partitions.

Configurer l’export

Choisissez un bucket et un préfixe de chemin

Créez ou choisissez un bucket S3, puis décidez d’un préfixe de chemin pour l’export, par exemple fingerprints/. cside n’écrit que sous ce préfixe, ce qui garde l’export séparé du reste du bucket. Le préfixe est optionnel. Sans préfixe, cside écrit à la racine du bucket.

Accordez à cside l’accès en écriture

Ajoutez cette instruction à la politique de votre bucket, sous Permissions dans la console S3 :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCsideNotificationExport",
      "Effect": "Allow",
      "Action": ["s3:PutObject"],
      "Resource": "arn:aws:s3:::<your-bucket>/*",
      "Principal": {
        "AWS": ["arn:aws:iam::590183952644:role/prod-cside-notifications-engine-sa-role"]
      }
    }
  ]
}

Remplacez <your-bucket> par le nom de votre bucket. L’autorisation est en écriture seule : s3:PutObject permet à cside d’ajouter des objets et rien d’autre, donc cside ne peut ni lister, ni lire, ni supprimer quoi que ce soit dans votre bucket.

Restreindre l'autorisation à votre préfixe

Pour restreindre la politique, définissez Resource sur arn:aws:s3:::<your-bucket>/<your-path-prefix>/*. Le tableau de bord génère la politique pour vous, avec votre bucket et votre préfixe déjà renseignés : si vous utilisez un préfixe, copiez cette version.

Propriété des objets

cside livre chaque objet via une copie côté serveur depuis son propre bucket vers le vôtre. Gardez votre bucket sur la propriété d’objet Bucket owner enforced (ACL désactivées), qui est la valeur par défaut de S3, afin que votre compte soit propriétaire des objets livrés et puisse les lire.

Créez l’export dans le tableau de bord

Ouvrez le tableau de bord, allez dans Settings > Device Intelligence et sélectionnez New export. Remplissez le formulaire :

  • Domain Scope : tous les domaines, y compris ceux que vous ajouterez plus tard, ou un sous-ensemble de votre choix
  • S3 Bucket Name et Region : le bucket de l’étape 1
  • Path Prefix (optionnel) : le préfixe de l’étape 1
  • Format : JSONL ou Parquet

cside nomme l’export pour vous, à partir de la portée et du bucket. Une fois l’export enregistré, les fichiers quotidiens commencent à arriver sous votre préfixe. Depuis le même onglet, vous pouvez mettre un export en pause avec son interrupteur, le modifier ou le supprimer.

Partager un bucket avec l’export des alertes de sécurité

L’export Device Intelligence et l’export S3 des alertes de sécurité écrivent depuis le même rôle IAM cside et demandent la même autorisation s3:PutObject, donc une seule instruction AllowCsideNotificationExport portant sur tout le bucket couvre les deux.

Ce sont deux destinations indépendantes, chacune avec son bucket, sa région et son préfixe optionnel, vous pouvez donc les pointer vers un même bucket ou vers des buckets séparés. Leurs fichiers n’entrent jamais en conflit : les alertes sont écrites sous la forme alerts-team-<team_id>-<from>-<to>.csv, les évaluations sous la forme cside-fingerprints/team=<team_id>/dt=<YYYY-MM-DD>/. Les préfixes servent à organiser les objets, ce n’est pas ce qui sépare les deux exports.

Structure d’un enregistrement

Chaque ligne est un objet JSON avec un ensemble de champs d’identité de premier niveau, plus des objets imbriqués pour chaque groupe de signaux :

ObjetDescription
fingerprintL’empreinte de l’appareil (navigateur, matériel, rendu et signaux d’environnement).
network_client_metricsCaractéristiques TCP et TLS de la connexion.
ip_enrichmentDonnées d’ASN, de géo et de confidentialité dérivées de l’IP du visiteur.
geo_lite_city_dataGéolocalisation au niveau de la ville pour l’IP du visiteur.
vpn_evaluationProbabilité de VPN et signaux associés.
bot_evaluationProbabilité de bot, verdict et signaux associés.
fingerprint_enrichmentSignaux dérivés de l’empreinte, comme la détection d’e-mail jetable.
rule_evaluationsRésultats des règles évaluées pour cette visite.
behaviorSignaux comportementaux dans la page pour la session : hooks d’API JavaScript, nombre d’événements non fiables et détection d’agent. Présent lorsque des données comportementales ont été collectées, sinon null.
Une clé absente signifie une valeur par défaut

Un champ n’apparaît que lorsqu’il a une valeur autre que celle par défaut. Une clé absente signifie que la valeur était vide, false, 0, ou non collectée. Lorsque vous analysez le fichier, traitez une clé absente comme une valeur par défaut, pas comme une erreur.

Champs de premier niveau

ChampTypeDescription
evaluation_idstringID unique de cette évaluation.
customer_idstringL’ID cside de votre domaine.
customer_domainstringLe domaine évalué.
team_idstringL’ID de votre équipe cside.
timestampstringHeure de l’évaluation, ISO 8601.
page_urlstringLa page où l’évaluation a été déclenchée.
session_idstringID de session du navigateur.
request_idstringID de corrélation de la requête d’origine.
client_ipstringAdresse IP du visiteur.
user_agentstringUser agent du navigateur du visiteur.
device_idstringIdentifiant stable de l’appareil, dérivé des signaux collectés. Présent aussi dans l’objet fingerprint.
is_botbooleanSi le visiteur est classé comme bot. Le verdict complet est dans bot_evaluation.
bot_agent_idstringBot identifié, le cas échéant (par exemple google-googleother).
is_vpnbooleanSi le visiteur est classé comme utilisant un VPN. Le verdict complet est dans vpn_evaluation.
vpn_probabilitynumberProbabilité de VPN, de 0 à 1.
vpn_confidencenumberConfiance dans la classification VPN, de 0 à 1.
vpn_reasonsstring[]Raisons lisibles de la classification VPN.
device_fingerprintstringJeton compact d’empreinte de l’appareil (base64).
threat_fingerprintstringJeton compact d’empreinte de menace (base64).

Objet fingerprint

L’empreinte de l’appareil est le plus gros objet. Les tableaux ci-dessous regroupent ses champs par catégorie.

Identité

ChampTypeDescription
device_idstringIdentifiant stable de l’appareil, dérivé des signaux collectés.
ChampTypeDescription
productstringValeur navigator.product du navigateur.
product_substringValeur navigator.productSub du navigateur.
browser_namestringNom du navigateur.
browser_versionstringVersion du navigateur.
mobilebooleanSi le navigateur se déclare mobile.
apple_pay_versionnumberVersion de l’API Apple Pay, quand elle est disponible.
user_agentstringChaîne user agent du navigateur.
pluginsstring[]Plugins installés dans le navigateur.
platformstringPlateforme du système d’exploitation.
cpu_architecturestringArchitecture CPU signalée.
hardware_architecturenumberIndicateur d’architecture matérielle.
connectionstringType de connexion réseau (par exemple 4g).

Rendu (Canvas, WebGL, WebGPU)

ChampTypeDescription
canvas_signalstringSignal de rendu Canvas.
webgl_signalstringSignal de rendu WebGL.
webgl_vendorstringChaîne de fournisseur WebGL.
webgl_rendererstringChaîne de moteur de rendu WebGL.
video_card_vendorstringFournisseur du GPU.
video_card_rendererstringMoteur de rendu du GPU.
video_card_vendor_unmaskedstringFournisseur du GPU non masqué, quand il est disponible.
video_card_renderer_unmaskedstringMoteur de rendu du GPU non masqué, quand il est disponible.
video_card_versionstringChaîne de version du pilote GPU.
video_card_shading_language_versionstringVersion du langage de shading.
webgpu_supportedbooleanSi WebGPU est pris en charge.
webgpu_adapterstringDescription de l’adaptateur WebGPU.
webgpu_signalstringSignal de rendu WebGPU.

Langue et heure

ChampTypeDescription
timezonestringFuseau horaire signalé.
localestringParamètre régional signalé.
languagesstring[]Langues acceptées.

Audio

ChampTypeDescription
audio_signalstringSignal d’empreinte audio.
audio_max_channelsnumberNombre maximal de canaux de sortie audio.
audio_channel_count_modestringMode de comptage des canaux audio.

Matériel

ChampTypeDescription
device_memorynumberMémoire de l’appareil signalée, en Go.
hardware_concurrencynumberNombre de cœurs CPU logiques.
js_heap_size_limitnumberLimite du tas JavaScript, en octets.
math_valuesobjectRésultats des sondes de précision mathématique, indexés par opération.

Écran

ChampTypeDescription
screen_widthnumberLargeur de l’écran en pixels.
screen_heightnumberHauteur de l’écran en pixels.
screen_resolutionstringChaîne de résolution d’écran.
color_depthnumberProfondeur de couleur de l’écran.
device_pixel_rationumberRapport de pixels de l’appareil.
touch_supportbooleanSi la saisie tactile est prise en charge.
max_touch_pointsnumberNombre maximal de points tactiles simultanés.
media_matchesstring[]Media queries CSS correspondantes.

API du navigateur

ChampTypeDescription
online_statusbooleanSi le navigateur se déclare en ligne.
do_not_trackstringRéglage Do Not Track.
cookies_enabledbooleanSi les cookies sont activés.
media_devicesstring[]Types de périphériques multimédias disponibles.
indexeddb_supportbooleanPrise en charge d’IndexedDB.
localstorage_supportbooleanPrise en charge de localStorage.
sessionstorage_supportbooleanPrise en charge de sessionStorage.
bluetooth_supportbooleanPrise en charge de Web Bluetooth.
geolocation_supportbooleanPrise en charge de l’API de géolocalisation.
device_motion_supportbooleanPrise en charge du mouvement de l’appareil.
device_orientation_supportbooleanPrise en charge de l’orientation de l’appareil.
speech_recognition_supportbooleanPrise en charge de la reconnaissance vocale.
vibration_supportbooleanPrise en charge de l’API de vibration.
gamepad_supportbooleanPrise en charge de l’API gamepad.
fullscreen_supportbooleanPrise en charge de l’API plein écran.
clipboard_supportbooleanPrise en charge de l’API presse-papiers.
service_worker_supportbooleanPrise en charge des Service Workers.
webassembly_supportbooleanPrise en charge de WebAssembly.

Préférences

ChampTypeDescription
prefers_dark_modebooleanPréfère le thème sombre.
prefers_reduced_motionbooleanPréfère les animations réduites.

Polices

ChampTypeDescription
detected_fontsstring[]Polices détectées sur l’appareil.
font_metricsobjectMétriques de rendu des polices, indexées par mesure.

Signaux réseau

ChampTypeDescription
stun_ipsstring[]Adresses IP issues des candidats WebRTC du visiteur, généralement l’adresse publique signalée par le serveur STUN. Souvent vide : les navigateurs masquent les adresses locales et WebRTC n’est pas toujours disponible.
permission_statesobjectÉtats des autorisations, indexés par nom d’autorisation.

WebRTC, synthèse vocale et MathML

ChampTypeDescription
webrtc_supportedbooleanPrise en charge de WebRTC.
webrtc_hashstringHash de l’ensemble de fonctionnalités WebRTC.
webrtc_detailsobjectCapacités WebRTC détaillées.
webrtc_errorstringErreur de la sonde WebRTC, le cas échéant.
speech_synthesis_supportedbooleanPrise en charge de la synthèse vocale.
speech_hashstringHash de l’ensemble des voix de synthèse.
speech_detailsobjectDonnées détaillées de synthèse vocale.
speech_errorstringErreur de la sonde vocale, le cas échéant.
mathml_supportedbooleanPrise en charge de MathML.
mathml_hashstringHash du rendu MathML.
mathml_detailsobjectDonnées détaillées du rendu MathML.
mathml_errorstringErreur de la sonde MathML, le cas échéant.

Performances et batterie

ChampTypeDescription
fpsnumberImages par seconde mesurées.
battery_infoobjectÉtat de la batterie : charging, level, charging_time, discharging_time.

Détection de navigation privée

ChampTypeDescription
incognito_detectedbooleanSi un mode de navigation privée a été détecté.
incognito_supportstringNiveau de prise en charge de la méthode de détection.
incognito_methodstringMéthode de détection utilisée.
incognito_quota_bytesnumberQuota de stockage observé pendant la détection.

Détection des outils de développement

ChampTypeDescription
developer_tools_detectedbooleanSi les outils de développement semblent ouverts.
developer_tools_supportstringNiveau de prise en charge de la détection.
developer_tools_methodstringMéthode de détection utilisée.
developer_tools_gap_pxnumberÉcart de la fenêtre, en pixels, utilisé pour la détection.

Détection de machine virtuelle

ChampTypeDescription
virtual_machine_detectedbooleanSi l’appareil semble être une machine virtuelle.
virtual_machine_supportstringNiveau de prise en charge de la détection.
virtual_machine_reasonstringRaison pour laquelle l’appareil a été signalé.

Automatisation et falsification

ChampTypeDescription
web_driverbooleanSi navigator.webdriver est défini.
web_driver_tamperedbooleanSi l’indicateur webdriver semble falsifié.
cdpbooleanUtilisation du Chrome DevTools Protocol détectée.
cdp_tamperedbooleanSi les signaux CDP semblent falsifiés.
tamper_injected_globalsstring[]Variables globales suspectes injectées.
tamper_expose_binding_leakbooleanFuite de binding associée à l’automatisation.
tamper_desc_instance_ownstring[]Descripteurs de propriété propres anormaux.
tamper_desc_proto_nonnativestring[]Descripteurs de prototype non natifs.
tamper_xrealm_webdriver_mismatchbooleanIncohérence de webdriver entre realms.
tamper_xrealm_renderer_deltabooleanDifférence de moteur de rendu entre realms.
tamper_probe_blockedbooleanSi les sondes de falsification ont été bloquées.

Attestation de l’appareil

ChampTypeDescription
device_uvpaabooleanAuthentificateur de plateforme avec vérification de l’utilisateur disponible.
device_client_caps_countnumberNombre de capacités du client signalées.
device_caps_uvpabooleanCapacité de l’authentificateur de plateforme.
device_apple_pay_active_cardbooleanApple Pay a une carte active.
device_payment_enrolledbooleanL’appareil est enregistré pour un moyen de paiement.
device_serial_presentbooleanCapacité série présente.
device_hid_presentbooleanCapacité HID présente.
device_notif_staticstringSignal statique de capacité de notification.
device_notif_queriedstringSignal interrogé de capacité de notification.
device_realness_probe_errorbooleanSi une sonde d’authenticité a échoué.

DRM

ChampTypeDescription
drm_probedbooleanSi la prise en charge du DRM a été sondée.
drm_clearkeybooleanPrise en charge de Clear Key.
drm_widevinebooleanPrise en charge de Widevine.
drm_widevine_robustnessstringNiveau de robustesse de Widevine.
drm_externalclearkeybooleanPrise en charge d’External Clear Key.
drm_fairplaybooleanPrise en charge de FairPlay.
drm_playreadybooleanPrise en charge de PlayReady.
drm_hw_secure_allbooleanPrise en charge du décodage sécurisé matériel.
drm_ua_brand_is_google_chromebooleanLa marque du UA déclare Google Chrome.
drm_errorstringErreur de la sonde DRM, le cas échéant.
drm_elapsed_msnumberDurée de la sonde DRM, en millisecondes.

Étiquettes fournies par le client

ChampTypeDescription
external_idsobjectIdentifiants que vous avez attachés à l’empreinte, comme accountId, orderId ou email.
extension_presence_resultsobjectExtensions de navigateur détectées, indexées par extension.

Objet network_client_metrics

Caractéristiques TCP et TLS au niveau de la connexion.

ChampTypeDescription
client_ipstringAdresse IP du visiteur.
client_portnumberPort source du visiteur.
user_agentstringUser agent vu au niveau réseau.
js_timezonestringFuseau horaire signalé par JavaScript.
timestampstringHeure à laquelle l’échantillon réseau a été prélevé, ISO 8601.
request_idstringID de requête au niveau réseau.
protocolstringProtocole HTTP utilisé.
quic_versionnumberVersion de QUIC, lorsque la connexion a utilisé QUIC.
syn_ip_ttlnumberTTL IP du paquet SYN initial.
syn_window_sizenumberTaille de fenêtre TCP du SYN initial.
syn_window_scalenumberÉchelle de fenêtre TCP du SYN initial.
tcp_rtt_usecnumberTemps d’aller-retour TCP estimé, en microsecondes.
tcp_rttvar_usecnumberVariance du temps d’aller-retour TCP.
tcp_rtt_min_usecnumberTemps d’aller-retour TCP minimal observé.
tcp_timestampnumberValeur de l’option timestamp TCP.
tcp_mss_synnumberMSS TCP annoncé.
tcp_mss_rcvnumberMSS TCP observé du pair.
tls_handshake_usecnumberDurée du handshake TLS, en microsecondes.
tls_clienthello_sizenumberTaille du ClientHello, en octets.
tls_sni_formatstringFormat de l’extension SNI.
tls_alpn_protocolsstring[]Protocoles ALPN proposés dans le handshake TLS.
tls_clienthello_ciphersnumber[]Suites de chiffrement proposées.
tls_clienthello_extensionsnumber[]Extensions TLS proposées.
tls_clienthello_signature_algsnumber[]Algorithmes de signature proposés.
tls_clienthello_legacy_versionnumberVersion legacy du ClientHello.
tls_clienthello_supported_versionsnumber[]Versions de TLS proposées.
tls_ja4stringEmpreinte JA4 du client TLS.
matched_againststringDomaine auquel la connexion a été associée.
team_idstringL’ID de votre équipe cside.

Objet ip_enrichment

Données dérivées de l’adresse IP du visiteur.

ChampTypeDescription
asnnumberNuméro de système autonome.
asn_namestringNom de l’organisation de l’ASN.
asn_networkstringPlage réseau de l’ASN.
asn_typestringType d’ASN, comme hosting ou isp.
city_namestringNom de la ville.
country_codestringCode pays.
country_namestringNom du pays.
latitudenumberLatitude.
longitudenumberLongitude.
postal_codestringCode postal.
region_codestringCode de région.
region_namestringNom de la région.
timezonestringFuseau horaire.
hostingbooleanL’IP appartient à un hébergeur.
proxybooleanL’IP est un proxy connu.
relaybooleanL’IP est un relais privé.
torbooleanL’IP est un nœud de sortie Tor.
vpnbooleanL’IP est un VPN connu.
servicestringService de confidentialité identifié, le cas échéant.
maxmind_asnnumberASN selon MaxMind.
is_datacenter_ipbooleanL’IP est dans une plage de centre de données.
is_likely_datacenternumberScore de probabilité de centre de données.

Objet geo_lite_city_data

Géolocalisation au niveau de la ville.

ChampTypeDescription
city_namestringNom de la ville.
country_codestringCode pays.
country_namestringNom du pays.
latitudenumberLatitude.
longitudenumberLongitude.
postal_codestringCode postal.
region_codestringCode de région.
region_namestringNom de la région.
timezonestringFuseau horaire.

Objet vpn_evaluation

Probabilité de VPN et signaux associés.

ChampTypeDescription
is_vpnbooleanSi le visiteur est classé comme utilisant un VPN.
vpn_probabilitynumberProbabilité de VPN, de 0 à 1.
vpn_confidencenumberConfiance dans la classification, de 0 à 1.
reasonsstring[]Raisons lisibles de la classification.
featuresobjectSignaux numériques utilisés pour la classification.
contextobjectContexte d’enrichissement, comme le nom d’hôte DNS inverse, l’ASN et la géo.

Objet bot_evaluation

Probabilité de bot et verdict.

ChampTypeDescription
is_botbooleanSi le visiteur est classé comme bot.
bot_probabilitynumberProbabilité de bot, de 0 à 1.
bot_confidencenumberConfiance dans la classification, de 0 à 1.
bot_agent_idstringBot identifié, le cas échéant (par exemple google-googleother).
reasonsstring[]Raisons lisibles de la classification.
session_event_countnumberNombre d’événements comportementaux traités pour la session.
model_1_scorenumberScore du premier modèle de bot (signaux d’empreinte et réseau).
model_1_thresholdnumberSeuil de décision appliqué au score du premier modèle.
model_2_scorenumberScore du deuxième modèle de bot (signaux comportementaux).
model_2_thresholdnumberSeuil de décision appliqué au score du deuxième modèle.
featuresobjectSignaux numériques utilisés pour la classification.

Objet fingerprint_enrichment

ChampTypeDescription
throwaway_email_detectedbooleanSi un e-mail attaché utilise un domaine jetable.

Objet rule_evaluations

ChampTypeDescription
rulesobject[]Résultats des règles nommées. Chaque entrée contient slot, rule_id, result, metadata et computed_at.

Objet behavior

Signaux comportementaux dans la page pour la session. L’objet entier vaut null lorsqu’aucune donnée comportementale n’a été collectée pour l’évaluation, ce qui vous permet de distinguer « aucun agent détecté » de « aucune donnée comportementale ».

ChampTypeDescription
start_timenumberDébut de la fenêtre d’observation comportementale.
end_timenumberFin de la fenêtre d’observation comportementale.
page_urlsstring[]Pages vues pendant la fenêtre comportementale de la session.
js_hooksobject[]API JavaScript intégrées interceptées. Chaque entrée contient key (la fonction interceptée, comme eval, fetch, function_bind, script_create ou node_append_child), initializer (ce qui a installé le hook) et count (le nombre de déclenchements).
untrusted_event_countnumberNombre d’événements DOM signalés avec isTrusted à false, un signal d’automatisation courant.
agent_detectedbooleanSi un échantillon de la session a été signalé comme un agent automatisé.

Exemple d’enregistrement

Un seul enregistrement, mis en forme ici pour la lisibilité. Dans le fichier, chaque enregistrement tient sur une ligne.

{
  "evaluation_id": "289076244130249728",
  "customer_id": "7371466449724252160",
  "customer_domain": "shop.example.com",
  "team_id": "7196353823991660544",
  "timestamp": "2026-04-21T17:53:19.378Z",
  "page_url": "https://shop.example.com/checkout",
  "client_ip": "203.0.113.42",
  "user_agent": "Mozilla/5.0 ... Chrome/124.0 Safari/537.36",
  "device_id": "fp_dev_5c8e21",
  "is_bot": false,
  "is_vpn": false,
  "fingerprint": {
    "device_id": "fp_dev_5c8e21",
    "browser_name": "Chrome",
    "browser_version": "124.0.0.0",
    "platform": "MacIntel",
    "timezone": "America/Los_Angeles",
    "languages": ["en-US", "en"],
    "screen_width": 1512,
    "screen_height": 982,
    "device_memory": 8,
    "external_ids": { "orderId": "txn_9931" }
  },
  "network_client_metrics": {
    "client_ip": "203.0.113.42",
    "tls_ja4": "t13d1516h2_8daaf6152771_b186095e22b6"
  },
  "geo_lite_city_data": {
    "country_code": "US",
    "city_name": "San Francisco",
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "ip_enrichment": { "asn": 13335, "asn_name": "CLOUDFLARENET", "hosting": false },
  "vpn_evaluation": { "is_vpn": false, "vpn_probability": 0.04 },
  "bot_evaluation": { "is_bot": false, "bot_probability": 0.07 },
  "behavior": {
    "start_time": 1776793999000,
    "end_time": 1776794011000,
    "page_urls": ["https://shop.example.com/checkout"],
    "js_hooks": [{ "key": "eval", "initializer": "inline", "count": 2 }],
    "untrusted_event_count": 0,
    "agent_detected": false
  }
}
Was this page helpful?