TRACIO analyserar varje besökares IP-adress på serversidan. Det flaggar VPN:er, proxyservrar, Tor-exitnoder och datacenterursprung, och löser upp geolokalisering på stadsnivå. All analys körs på serversidan utan beroenden på klientsidan.
IP Intelligence når din applikation via webhook-payloaden: network-objektet
(booleska värden för VPN/proxy/Tor/datacenter, anslutningstyp och, från Pro och uppåt,
proxy_detected) och
geo-objektet (land, stad, koordinater, tidszon) levereras med varje
webhook. ISP, ASN och real_ip-objektet tillkommer från Business och uppåt. Se
Webhooks för den fullständiga payload-strukturen och signaturverifiering.
Klassificering av VPN, proxy, Tor och datacenter löses upp från den anslutande IP:n
med hjälp av kommersiella IP Intelligence-databaser (IP2Location för VPN/proxy/Tor-typ,
MaxMind för geolokalisering och ASN). Var och en av dessa fyra flaggor visas som ett enskilt booleskt värde i
webhookens network-objekt – det finns ingen uppdelning per metod eller något konfidensvärde i
den publika payloaden.
| Flagga | Fält | Betydelse |
|---|---|---|
| VPN | network.vpn | IP:n tillhör en känd VPN-leverantör |
| Proxy | network.proxy | IP:n är en datacenter- eller residentiell proxy |
| Tor | network.tor | IP:n är en känd Tor-exitnod |
| Datacenter | network.datacenter | IP:n tillhör en moln-/hostingleverantör |
{ "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}Både datacenter- och residentiella proxyservrar visas som network.proxy; datacenterursprung
rapporteras dessutom som network.datacenter. Klassificeringen kommer från
IP2Location-proxydatabasen, som täcker de stora moln-/hostingleverantörerna (AWS,
Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, DigitalOcean, Hetzner, OVH,
Linode/Akamai, Vultr med flera).
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connection_type": "DCH" }}network.proxy klassificerar adressen som anslutningen kom från. En separat kontroll
jämför ett besöks sidtrafik med dess råa nätverksväg: när de två lämnar via olika nätverk
sitter en proxy eller ett VPN mellan webbläsaren och din webbplats, och besöket rapporteras
med network.proxy_detected: true. Två adresser hos samma leverantör – operatörs-NAT, en
andra utgång i samma VPN – räknas inte.
Från Business och uppåt levereras den publika adress som observerats bakom proxyn eller
VPN:et bredvid adressen som anslutningen kom från, tillsammans med dess land och ISP, som
network.real_ip. Fältet saknas när ingen sådan adress har observerats, så läs det med ett
skydd (network.real_ip?.country); country och isp saknas när de inte har kunnat
slås upp.
{ "network": { "proxy": false, "proxy_detected": true, "real_ip": { "address": "203.0.113.7", "country": "NL", "isp": "KPN" } }}I Webhooks kommer båda fälten under samma namn vid varje besök.
Besökarsammanfattningen i Data API aggregerar dem som
network.proxy_detected_seen (om en proxy någon gång har funnits framför) och
network.last_real_ip (den senaste adressen, med dess land och ISP).
En matchning mot en Tor-exitnod på den anslutande IP:n visas som network.tor. Separat
känns själva Tor-webbläsaren igen på klientsidan på sin anti-fingerprinting-konfiguration,
oberoende av nätverksvägen – se
Smart Signals.
Geolokalisering på stadsnivå löses upp på serversidan från den anslutande IP:n
(MaxMind) och levereras i webhookens geo-objekt.
| Fält | Typ | Beskrivning | Plan |
|---|---|---|---|
geo.country | string | ISO 3166-1 alpha-2 landskod | Alla |
geo.city | string | Stadsnamn | Alla |
geo.lat | number | Ungefärlig latitud | Alla |
geo.lon | number | Ungefärlig longitud | Alla |
geo.timezone | string | IANA-tidszonsidentifierare | Alla |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}På planerna Business och Enterprise identifieras även operatören. I webhook-payloaden
ligger båda fälten på network-objektet, och ISP:n upprepas som geo.isp:
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}Vid en sessionsläsning via Data API är uppdelningen något
annorlunda: isp ligger bara på geo och asn på network. Samma data, två ytor – läs
fältet där den yta du använder placerar det.
Från Pro och uppåt bär webhooken med sig ett velocity-block – hur mycket besökaren har
rört på sig den senaste tiden:
| Fält | Typ | Beskrivning |
|---|---|---|
velocity.events5m | number | Händelser från denna besökare de senaste 5 minuterna |
velocity.unique_ips | number | Distinkta IP:n som setts för denna besökare |
velocity.unique_locations | number | Distinkta platser som setts för denna besökare |
Blocket finns med när besökarräknarna är tillgängliga vid händelsetillfället (normalt
primary-fasen). Ett block som saknas betyder ”inga data”, inte nollor – tolka inte dess
frånvaro som ”ingen ovanlig aktivitet”.
Matchning mot IP-blockeringslistor ingår inte i det publika kontraktet: varken
webhook-payloaden eller dashboarden exponerar blockeringslistkategorier. Webhook-ytan för
nätverksrisk utgörs av de booleska network-flaggorna, proxy_detected, real_ip-objektet på
Business, anslutningstypen och velocity-räknarna ovan – använd dessa tillsammans med fälten decision och bot (se
Smart Signals) för riskbeslut.
Detta läser webhook-payloadens network-objekt direkt. Se
Webhooks för den fullständiga payloaden och signaturverifiering.
// `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 }}