TRACIO analyse l'adresse IP de chaque visiteur côté serveur. Il signale les VPN, les proxys, les nœuds de sortie Tor et les origines datacenter, et résout la géolocalisation au niveau de la ville. Toute l'analyse s'exécute côté serveur, sans aucune dépendance côté client.
L'IP intelligence parvient à votre application via le payload du webhook : l'objet
network (booléens VPN/proxy/Tor/datacenter plus type de connexion) et l'objet
geo (pays, ville, coordonnées, fuseau horaire) sont livrés sur chaque
webhook. L'ISP et l'ASN sont ajoutés à partir de Business. Consultez
Webhooks pour la structure complète du payload et la vérification de
signature.
La classification VPN, proxy, Tor et datacenter est résolue à partir de l'IP de connexion
au moyen de bases de données commerciales d'intelligence IP (IP2Location pour le type VPN/proxy/Tor,
MaxMind pour la géolocalisation et l'ASN). Chacune est exposée sous forme d'un booléen unique sur
l'objet network du webhook — il n'existe ni ventilation par méthode ni score de confiance dans
le payload public.
| Indicateur | Champ | Signification |
|---|---|---|
| VPN | network.vpn | L'IP appartient à un fournisseur VPN connu |
| Proxy | network.proxy | L'IP est un proxy datacenter ou résidentiel |
| Tor | network.tor | L'IP est un nœud de sortie Tor connu |
| Datacenter | network.datacenter | L'IP appartient à un fournisseur cloud/hébergement |
{ "network": { "vpn": true, "proxy": true, "tor": false, "datacenter": false, "connectionType": "VPN" }}// `payload` is the webhook delivery body (/docs/webhooks)if (payload.network.vpn) { // visitor is connecting through a VPN}Les proxys datacenter et résidentiels apparaissent tous deux sous network.proxy ; l'origine
datacenter est en outre signalée via network.datacenter. La classification provient de
la base de données proxy IP2Location, qui couvre les principaux fournisseurs cloud/hébergement (AWS,
Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, DigitalOcean, Hetzner, OVH,
Linode/Akamai, Vultr, et d'autres).
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connectionType": "DCH" }}Une correspondance avec un nœud de sortie Tor sur l'IP de connexion apparaît via network.tor. Séparément,
le navigateur Tor lui-même est reconnu côté client à sa
configuration anti-fingerprinting, indépendamment du chemin réseau — voir
Smart Signals.
La géolocalisation au niveau de la ville est résolue côté serveur à partir de l'IP de connexion
(MaxMind) et livrée sur l'objet geo du webhook.
| Champ | Type | Description | Offre |
|---|---|---|---|
geo.country | string | Code pays ISO 3166-1 alpha-2 | Toutes |
geo.city | string | Nom de la ville | Toutes |
geo.lat | number | Latitude approximative | Toutes |
geo.lon | number | Longitude approximative | Toutes |
geo.timezone | string | Identifiant de fuseau horaire IANA | Toutes |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}Sur les offres Business et Enterprise, l'opérateur est également identifié. Dans le payload
du webhook, les deux champs se trouvent sur l'objet network :
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}Lors de la lecture d'une session via la Server API, la répartition est
légèrement différente : isp se trouve sur geo et asn sur network. Mêmes données, deux
surfaces — lisez le champ là où le place la surface que vous utilisez.
À partir de Pro, le webhook transporte un bloc velocity — dans quelle mesure le visiteur
s'est déplacé récemment :
| Champ | Type | Description |
|---|---|---|
velocity.events5m | number | Événements de ce visiteur au cours des 5 dernières minutes |
velocity.uniqueIps | number | IP distinctes observées pour ce visiteur |
velocity.uniqueLocations | number | Localisations distinctes observées pour ce visiteur |
Le bloc est présent lorsque les compteurs du visiteur sont disponibles au moment de
l'événement (normalement la phase primary). Un bloc absent signifie « aucune donnée », et
non des zéros — ne traitez pas son absence comme « aucune activité inhabituelle ».
La correspondance avec des listes de blocage IP ne fait pas partie du contrat public :
ni le payload du webhook ni le dashboard n'exposent de catégories de listes de blocage. La
surface du webhook pour le risque réseau se compose des indicateurs booléens network, du
type de connexion et des compteurs de vélocité ci-dessus ; utilisez-les conjointement avec
les champs decision et bot (voir Smart Signals) pour les décisions
de risque.
Ceci lit directement l'objet network du payload du webhook. Consultez
Webhooks pour le payload complet et la vérification de signature.
// `payload` is the webhook delivery body (/docs/webhooks)function assessIPRisk(payload: WebhookPayload) { const { vpn, proxy, tor, datacenter } = payload.network
const risks: string[] = [] let riskLevel = "low"
if (tor) { risks.push("Tor exit node") riskLevel = "critical" }
if (vpn) { risks.push("VPN detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (proxy) { risks.push("Proxy detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (datacenter) { risks.push("Datacenter IP") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
return { riskLevel, risks }}