TRACIO analiza la dirección IP de cada visitante en el servidor. Marca VPN, proxies, nodos de salida de Tor y orígenes de datacenter, y resuelve la geolocalización a nivel de ciudad. Todo el análisis se ejecuta en el servidor, sin dependencias del cliente.
IP Intelligence llega a su aplicación a través del payload del webhook: el
objeto network (booleanos de VPN/proxy/Tor/datacenter más el tipo de conexión) y el
objeto geo (país, ciudad, coordenadas, zona horaria) se entregan en cada
webhook. El ISP y el ASN se añaden en Business y superiores. Consulte
Webhooks para la forma completa del payload y la verificación de firma.
La clasificación de VPN, proxy, Tor y datacenter se resuelve a partir de la IP de conexión
usando bases de datos comerciales de IP intelligence (IP2Location para el tipo de VPN/proxy/Tor,
MaxMind para la geolocalización y el ASN). Cada una se expone como un único booleano en el
objeto network del webhook: no hay desglose por método ni puntuación de confianza en
el payload público.
| Flag | Campo | Significado |
|---|---|---|
| VPN | network.vpn | La IP pertenece a un proveedor de VPN conocido |
| Proxy | network.proxy | La IP es un proxy de datacenter o residencial |
| Tor | network.tor | La IP es un nodo de salida de Tor conocido |
| Datacenter | network.datacenter | La IP pertenece a un proveedor de cloud/hosting |
{ "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}Los proxies de datacenter y residenciales se exponen ambos como network.proxy; el origen
de datacenter se reporta adicionalmente como network.datacenter. La clasificación proviene
de la base de datos de proxies de IP2Location, que cubre los principales proveedores de cloud/hosting (AWS,
Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, DigitalOcean, Hetzner, OVH,
Linode/Akamai, Vultr y otros).
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connectionType": "DCH" }}Una coincidencia de nodo de salida de Tor en la IP de conexión se expone como network.tor. Por separado,
el propio navegador Tor se reconoce en el cliente por su configuración anti-fingerprinting,
con independencia de la ruta de red — consulte
Smart Signals.
La geolocalización a nivel de ciudad se resuelve en el servidor a partir de la IP de conexión
(MaxMind) y se entrega en el objeto geo del webhook.
| Campo | Tipo | Descripción | Plan |
|---|---|---|---|
geo.country | string | Código de país ISO 3166-1 alpha-2 | Todos |
geo.city | string | Nombre de la ciudad | Todos |
geo.lat | number | Latitud aproximada | Todos |
geo.lon | number | Longitud aproximada | Todos |
geo.timezone | string | Identificador de zona horaria IANA | Todos |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}En los planes Business y Enterprise también se identifica el operador. En el payload del
webhook, ambos campos están en el objeto network:
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}Al leer una sesión desde la Server API, el reparto es ligeramente
distinto: isp está en geo y asn en network. Los mismos datos en dos superficies: lea
el campo donde lo coloque la superficie que esté usando.
En Pro y superiores el webhook lleva un bloque velocity: cuánto se ha estado moviendo el
visitante recientemente:
| Campo | Tipo | Descripción |
|---|---|---|
velocity.events5m | number | Eventos de este visitante en los últimos 5 minutos |
velocity.uniqueIps | number | IP distintas observadas para este visitante |
velocity.uniqueLocations | number | Ubicaciones distintas observadas para este visitante |
El bloque está presente cuando los contadores del visitante están disponibles en el momento
del evento (normalmente la fase primary). Que falte el bloque significa «sin datos», no
ceros: no interprete su ausencia como «no hay actividad inusual».
La coincidencia con listas de bloqueo de IP no forma parte del contrato público: ni el
payload del webhook ni el panel exponen categorías de listas de bloqueo. La superficie del
webhook para el riesgo de red son los flags booleanos de network, el tipo de conexión y los
contadores de velocity anteriores; úselos junto con los campos decision y bot (consulte
Smart Signals) para las decisiones de riesgo.
Esto lee directamente el objeto network del payload del webhook. Consulte
Webhooks para el payload completo y la verificación de firma.
// `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 }}