Las Smart Signals son señales de enriquecimiento del lado del servidor calculadas a partir de huellas digitales del navegador, IP intelligence y análisis de comportamiento. Proporcionan un contexto profundo sobre cada visitante sin recopilar ninguna información de identificación personal.
Las Smart Signals —las señales enriquecidas de decisión, riesgo, red y bot— llegan a su servidor por dos vías: se le envían como webhooks (ver Webhooks) y pueden leerse bajo demanda a través de la Server API. Además se muestran en el dashboard. Los ejemplos siguientes consumen la forma del payload del webhook; los mismos campos aparecen al leer una sesión desde la API.
Una visita se resuelve en 35+ smart signals que abarcan red, navegador, dispositivo y análisis de comportamiento. La referencia siguiente nombra las que usará con más frecuencia, entre ellas:
| Señal | Descripción | Respuesta | Plataforma |
|---|---|---|---|
| VPN Detection | Marca el uso de VPN a partir de IP intelligence | network.vpn: boolean | Web |
| Proxy Detection | Identifica el uso de proxies de datacenter y residenciales | network.proxy: boolean | Web |
| Tor Detection | Coteja la IP con nodos de salida de Tor conocidos | network.tor: boolean | Web |
| Datacenter | Marca las IPs pertenecientes a proveedores de nube/hosting conocidos | network.datacenter: boolean | Web |
| IP Geolocation | Geolocalización a nivel de ciudad + ISP y ASN a partir de la dirección IP | geo.{ country, city, timezone }, network.{ isp, asn } | Web |
| Señal | Descripción | Respuesta | Disponibilidad |
|---|---|---|---|
| Browser Tampering | Detecta User-Agent falsificado, navigator modificado, inyección de extensiones | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Puntúa compilaciones de navegador que falsifican la huella mediante sondeos de CSS y propiedades | bot.antidetectScore: number (0–100, Pro+) | Web |
| Privacy Settings | Detecta configuraciones de navegador centradas en la privacidad (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Detecta cuándo están abiertas las DevTools del navegador | { result: boolean } | Web — Business y Enterprise |
| Incognito | Infiere la navegación privada en Chromium, Firefox y Safari | identification.incognito: boolean | Web |
| Señal | Descripción | Disponibilidad |
|---|---|---|
| Emulator | Detecta emuladores de Android (BlueStacks, Genymotion, Nox, Android SDK) mediante el renderizador de GPU y marcadores de UA | Web — todos los planes |
Detecciones solo nativas. La detección de root, jailbreak, apps clonadas/duales y la instrumentación con Frida dependen de señales que solo un SDK móvil nativo puede recopilar. TRACIO distribuye SDK de navegador, así que no son efectivas en el agente web: apóyese en su lugar en los veredictos de automatización, headless, antidetección, emulador y comportamiento.
| Señal | Descripción | Respuesta | Plataforma |
|---|---|---|---|
| Bot Detection | Identifica frameworks de automatización y navegadores headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web |
| Risk Score | Riesgo agregado de la solicitud, en el objeto decision del webhook | decision.riskScore: number, decision.suspectScore: number, decision.action: "real"|"fake"|"suspicious" | Web |
Los indicadores de VPN, proxy, Tor y datacenter se resuelven en el lado del servidor a partir de la
IP del visitante usando bases de datos comerciales de IP intelligence (IP2Location /
MaxMind). El payload público del webhook muestra los resultados combinados como booleanos
en el objeto network —network.vpn, network.proxy, network.tor,
network.datacenter— sin desglose por método ni cadena de confianza. Ver
IP Intelligence para más detalles.
La navegación privada se infiere en Chromium, Firefox y Safari, y le llega como
identification.incognito. No existe ninguna API del navegador que la informe, así
que el veredicto surge de una votación ponderada sobre cómo se comporta el
almacenamiento en una ventana privada: los errores del origin private file system, la
durabilidad del almacenamiento y las peculiaridades de cada plataforma contribuyen
cada una por su parte.
Es una señal probabilística, no una certeza: trátela como una entrada más entre
varias, y no como un hecho sobre el que actuar por sí solo. Como las ventanas
privadas también suprimen la cookie _vid_t, una visita en incógnito se identifica
únicamente a partir de las señales, y su identification.confidence es
correspondientemente más baja.
El detector de tampering identifica a los visitantes que han modificado su navegador para tergiversar su identidad:
navigator comparando los prototipos de los gettersPluginArray.prototype y MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor y otras funciones críticas han sido reemplazadas por ProxiesEl anomalyScore (0.0-1.0) cuantifica el grado de inconsistencia. Los valores por encima de 0.5 indican una manipulación significativa.
El objeto decision del webhook lleva el riesgo agregado de una solicitud:
decision.riskScore (entero 0-100), decision.suspectScore (número) y
decision.action (la acción recomendada). La puntuación agrega las salidas de las smart
signals; las bandas siguientes describen cómo se mapea riskScore a los niveles de riesgo:
| Rango de puntuación | Nivel de riesgo | Indicadores típicos |
|---|---|---|
| 0-10 | Normal | Señales limpias, visitante conocido, IP residencial |
| 11-30 | Bajo | Inconsistencias menores, IP de datacenter o primera visita |
| 31-60 | Medio | VPN detectada, manipulación del navegador o velocidad inusual |
| 61-80 | Alto | Múltiples señales de riesgo, proxy + manipulación, actividad alta |
| 81-100 | Crítico | Bot detectado, nodo de salida de Tor o anomalías graves |
La puntuación agrega las salidas de las smart signals activas —principalmente IP intelligence (VPN/proxy/Tor/datacenter), el veredicto de bot y la manipulación del navegador—. La interacción humana confirmada (ratón/teclado) reduce la puntuación.
Se detectan cuatro configuraciones de navegador centradas en la privacidad:
| Navegador | Método de detección | Umbral |
|---|---|---|
| Tor Browser | Canvas bloqueado + WebGL bloqueado + zona horaria UTC + fuentes limitadas + tamaño de pantalla redondeado | 3+ marcadores |
| Brave | UA de Brave o navigator.brave o marca "Brave" en Client Hints | 1+ marcador |
| Firefox ETP (estricto) | Almacenamiento particionado o canvas resistido (se requiere UA de Firefox) | 1+ marcador |
| Safari ITP | Cookies bloqueadas o IndexedDB restringido (se requiere UA de Safari) | 1+ marcador |
Las Smart Signals llegan a su servidor a través del payload del webhook (ver Webhooks para la forma completa y la verificación de firmas) y al leer una sesión desde la Server API. Los ejemplos siguientes leen los campos directamente del payload del webhook; los nombres de los campos son los mismos en ambos casos.
// `payload` is the webhook delivery body (/docs/webhooks)const score = payload.decision.riskScoreconst isVPN = payload.network.vpnconst isBot = payload.bot.result === "bot"
if (isBot) { return block("Automated access")}
if (score > 60) { return requireMFA()}
if (isVPN && score > 30) { return requireCaptcha()}
return allow()// `payload` is the webhook delivery body (/docs/webhooks)function computeFraudRisk(payload: WebhookPayload): string { let risk = "low"
if (payload.decision.riskScore > 60) risk = "high" else if (payload.decision.riskScore > 30) risk = "medium"
// Escalate when multiple network signals agree if (payload.network.vpn && payload.network.proxy) risk = "high" if (payload.network.tor) risk = "high" if (payload.bot.result === "bot") risk = "high"
return risk}