TRACIO analyzuje IP adresu každého návštěvníka na straně serveru. Označuje sítě VPN, proxy, výstupní uzly sítě Tor a původ z datových center a určuje geolokaci na úrovni města. Veškerá analýza probíhá na straně serveru bez jakýchkoli závislostí na straně klienta.
IP intelligence se do vaší aplikace dostává prostřednictvím webhook payloadu: objekt
network (booleovské hodnoty VPN/proxy/Tor/datacenter, typ připojení a od plánu Pro výše také
proxy_detected) a objekt geo (země, město, souřadnice, časové pásmo) jsou doručovány s
každým webhookem. ISP, ASN a objekt real_ip přibývají od plánu Business výše. Kompletní
strukturu payloadu a ověření podpisu najdete v Webhookech.
Klasifikace VPN, proxy, Toru a datového centra se určuje z připojující se IP
pomocí komerčních databází IP intelligence (IP2Location pro typ VPN/proxy/Tor,
MaxMind pro geolokaci a ASN). Každý z těchto čtyř příznaků je vystaven jako jediná booleovská hodnota v objektu
network webhooku — ve veřejném payloadu není žádné členění podle metody ani skóre
spolehlivosti.
| Příznak | Pole | Význam |
|---|---|---|
| VPN | network.vpn | IP patří známému poskytovateli VPN |
| Proxy | network.proxy | IP je datacentrová nebo rezidenční proxy |
| Tor | network.tor | IP je známý výstupní uzel sítě Tor |
| Datacenter | network.datacenter | IP patří cloudovému/hostingovému poskytovateli |
{ "network": { "vpn": true, "proxy": true, "tor": false, "datacenter": false, "connection_type": "VPN" }}// `payload` is the webhook delivery body (/docs/webhooks)if (payload.network.vpn) { // visitor is connecting through a VPN}Datacentrové i rezidenční proxy se obě vystavují jako network.proxy; původ z datového
centra je navíc hlášen jako network.datacenter. Klasifikace pochází
z databáze proxy IP2Location, která pokrývá hlavní cloudové/hostingové poskytovatele (AWS,
Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, DigitalOcean, Hetzner, OVH,
Linode/Akamai, Vultr a další).
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connection_type": "DCH" }}network.proxy klasifikuje adresu, ze které přišlo spojení. Samostatná kontrola porovnává
stránkový provoz návštěvy s její surovou síťovou cestou: pokud oba odcházejí přes různé sítě,
mezi prohlížečem a vaším webem se nachází proxy nebo VPN a návštěva je hlášena s
network.proxy_detected: true. Dvě adresy stejného poskytovatele — NAT operátora, druhý výstup
téže VPN — se nepočítají.
V plánech Business a vyšších se veřejná adresa pozorovaná za proxy nebo VPN doručuje vedle
adresy, ze které přišlo spojení, spolu s její zemí a ISP, jako network.real_ip. Chybí, pokud
žádná taková adresa pozorována nebyla, proto ji čtěte se zabezpečením
(network.real_ip?.country); country a isp chybí, pokud je nebylo možné určit.
{ "network": { "proxy": false, "proxy_detected": true, "real_ip": { "address": "203.0.113.7", "country": "NL", "isp": "KPN" } }}Ve Webhookech obě pole přicházejí pod stejnými názvy při každé návštěvě.
Souhrn návštěvníka v Data API je agreguje jako
network.proxy_detected_seen (zda někdy nějaká proxy stála vpředu) a network.last_real_ip
(poslední pozorovanou adresu spolu s její zemí a ISP).
Shoda výstupního uzlu sítě Tor s připojující se IP se vystavuje jako network.tor. Odděleně
je samotný prohlížeč Tor rozpoznán na straně klienta podle jeho konfigurace proti
fingerprintingu, nezávisle na síťové cestě — viz
Smart Signals.
Geolokace na úrovni města se určuje na straně serveru z připojující se IP
(MaxMind) a je doručena v objektu geo webhooku.
| Pole | Typ | Popis | Plán |
|---|---|---|---|
geo.country | string | Kód země podle ISO 3166-1 alpha-2 | Všechny |
geo.city | string | Název města | Všechny |
geo.lat | number | Přibližná zeměpisná šířka | Všechny |
geo.lon | number | Přibližná zeměpisná délka | Všechny |
geo.timezone | string | Identifikátor časového pásma IANA | Všechny |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}V plánech Business a Enterprise je navíc identifikován operátor. Ve webhook payloadu leží
obě pole na objektu network a ISP se opakuje jako geo.isp:
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}Při čtení relace přes Data API je rozdělení mírně jiné: isp leží pouze na geo a asn na network. Stejná data, dvě rozhraní — pole čtěte tam, kam je ukládá
rozhraní, které používáte.
Od plánu Pro výše nese webhook blok velocity — nakolik se návštěvník v poslední době
přesouval:
| Pole | Typ | Popis |
|---|---|---|
velocity.events5m | number | Události tohoto návštěvníka za posledních 5 minut |
velocity.unique_ips | number | Různé IP zaznamenané u tohoto návštěvníka |
velocity.unique_locations | number | Různé lokality zaznamenané u tohoto návštěvníka |
Blok je přítomen, když jsou čítače návštěvníka v okamžiku události dostupné (obvykle fáze
primary). Chybějící blok znamená „žádná data“, nikoli nuly — nevykládejte si jeho
nepřítomnost jako „žádná neobvyklá aktivita“.
Porovnávání IP s blokovacími seznamy není součástí veřejného kontraktu: ani webhook
payload, ani dashboard nevystavuje kategorie blokovacích seznamů. Webhookové rozhraní pro
síťová rizika tvoří booleovské příznaky network, proxy_detected, objekt real_ip od plánu
Business, typ připojení a výše uvedené čítače velocity; použijte je společně s poli decision
a bot (viz Smart Signals) pro rozhodování o riziku.
Toto čte objekt network webhook payloadu přímo. Kompletní payload a ověření podpisu najdete v
Webhookech.
// `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 }}