Inteligencia IP contra el cibercrimen: cómo prevenir ciberataques
Inteligencia IP contra el cibercrimen: qué señales de ASN, VPN, Tor y hosting frenan cada ataque, con código Python probado para 7 defensas y consultas reales de hoy.

Cuando consultamos tres direcciones públicas el 15 de octubre de 2026, un servidor VPN comercial confirmado por sondeo obtuvo 92 (block), un nodo de salida de Tor obtuvo 100 (block) y el propio host de pruebas de Nmap en un servidor en la nube de Linode obtuvo 10 (allow). Los tres están en centros de datos, pero solo se bloquearon los dos anonimizadores. Esa distancia entre "nube" y "delito" es de lo que trata el resto de esta guía.
Lo que está en juego está medido, no proyectado. El Internet Crime Complaint Center del FBI recibió 1.008.597 denuncias en 2025, el primer año por encima del millón, con 20.877 millones de dólares en pérdidas declaradas, un 26% más que en 2024 (IC3 2025 Internet Crime Report). Y el tráfico que transporta los ataques es cada vez menos humano: el Bad Bot Report 2026 de Imperva concluyó que el tráfico automatizado supuso más del 53% de todo el tráfico web en 2025, frente al 51% del año anterior.
Esta guía explica qué son las señales, qué categorías de delito frenan, siete defensas con código Python que hoy probamos contra direcciones reales, una matriz de señales y ataques, y los casos en los que los datos IP no tienen nada que decir.

Lo que la inteligencia IP añade a una dirección sin más
La inteligencia IP es el enriquecimiento de una dirección IP sin procesar con todo lo que revela sobre su origen y su fiabilidad. Una dirección sin más es solo un número. Pásala por un pipeline de enriquecimiento y se convierte en un perfil:
- Geolocalización: país, región, ciudad aproximada y zona horaria.
- Propiedad de la red: el número de sistema autónomo (ASN) y la organización que controla el espacio de direcciones.
- Tipo de conexión: banda ancha residencial, móvil, empresarial, o hosting y centro de datos.
- Indicadores de anonimizador: ¿es esto una VPN, un proxy o un nodo de salida de Tor?
- Señales de amenaza y abuso: ¿se ha visto esta dirección escaneando, enviando spam o en una lista de bloqueo DNS?
- Una puntuación de riesgo compuesta: un único número que fusiona las señales anteriores en una decisión de permitir, revisar, pedir verificación adicional o bloquear.
La distinción que confunde a la gente: esto no es lo mismo que la geolocalización IP. La geolocalización solo responde a "¿dónde está esta IP?" y, como explicamos en qué precisión tiene realmente la geolocalización IP, tiene una precisión de alrededor del 99% a nivel de país, pero mucho menor a nivel de ciudad. La disciplina más amplia, que desglosamos capa por capa en nuestra guía sobre lo que cubre la inteligencia IP más allá de la ubicación, añade las capas de red, tipo de conexión, anonimizador y reputación que responden a la pregunta que de verdad importa a los equipos de fraude y seguridad: ¿puedo confiar en esta conexión? La mayoría de las implementaciones solo leen el campo del país, y el campo del país por sí solo no dice casi nada sobre si una solicitud es legítima.
Por qué la IP de origen es la primera señal en una defensa contra el cibercrimen
La IP de origen es la primera señal porque un atacante puede falsificar casi todo lo demás, pero tiene que mostrarte una dirección enrutable. Tres hechos estructurales la hacen valiosa.
1. Es inevitable. Un atacante puede falsificar un User-Agent, inventarse un email, comprar una tarjeta robada y falsificar la huella digital de un dispositivo. Lo que no puede hacer es llegar a tu servidor sin una IP de origen que tú puedas observar. Puede esconderse detrás de una infraestructura, pero la propia infraestructura deja huellas.
2. Los atacantes reutilizan infraestructura a gran escala. El cibercrimen rentable está industrializado. Los kits de credential stuffing machacan miles de cuentas desde servidores alquilados; las redes de pruebas de tarjetas recorren rangos de centros de datos; los scrapers y los revendedores funcionan desde pools de nube y de proxies. Esa reutilización es justamente lo que dejan al descubierto las señales de red: un inicio de sesión desde un ASN de hosting, un pago desde un rango de centro de datos, un "comprador" que llega a través de un proxy abierto.
3. Está disponible antes del paso costoso. La IP está presente desde el primer paquete, antes de la autenticación y antes de la autorización del pago. Eso la convierte en el lugar más barato para clasificar el riesgo, de modo que tus defensas caras (desafíos MFA, revisión manual, KYC reforzado) solo se activen cuando estén justificadas.
El inconveniente, al que volvemos más abajo, es que la IP es una señal, no un veredicto. La habilidad está en usarla para decidir quién merece más escrutinio, no para imponer prohibiciones generalizadas.
Las categorías de cibercrimen que frenan las señales IP
El cibercrimen no es una sola cosa, así que tampoco lo es el papel de la IP para frenarlo. Así contribuye la IP de origen en las principales categorías de ataque, con la guía en profundidad de cada una.
Robo de cuentas y credential stuffing
El credential stuffing (reutilizar pares de usuario y contraseña filtrados contra formularios de inicio de sesión) es hoy la vía dominante hacia el robo de cuentas. El ataque solo es rentable porque está automatizado y repartido entre infraestructura barata. Una consulta marca los ASN de hosting, los proxies y las salidas anonimizadas en los que se apoya el stuffing masivo, y alimenta una imagen de velocidad (¿cuántas cuentas está tocando esta IP?) que un solo inicio de sesión no puede revelar. El matiz: el bloqueo por IP por sí solo falla, porque los actores sofisticados se pasan a los proxies residenciales, así que la IP tiene que ser una señal de riesgo, no toda la decisión.
Fraude en pagos, pruebas de tarjetas y abuso en el pago
El pago es donde el cibercrimen se convierte en dinero, y por eso atrae a bots de carding, scripts de pruebas de tarjetas y, cada vez más, agentes de compras de IA automatizados. Las pruebas de tarjetas funcionan como autorizaciones de alta velocidad y bajo importe, a menudo desde IP de centros de datos y de proxies. Las señales de tipo de conexión y de riesgo te permiten aumentar la fricción en la minoría sospechosa de pagos y dejar intactas las sesiones legítimas (incluido el tráfico de agentes legítimos). Dónde trazar la línea se responde en a partir de qué puntuación de fraude IP deberías bloquear.
Bots, scrapers y suplantación de rastreadores
Con los bots ya como mayoría del tráfico web, distinguir un rastreador real de un suplantador importa en cada endpoint. Una cabecera User-Agent: GPTBot es una afirmación que cualquiera puede enviar. HUMAN Security comprobó que el 5,7% de todo el tráfico observado que presentaba un user agent de rastreador o scraper de IA estaba falsificado. La defensa es la procedencia: verificar rastreadores y agentes de IA por IP mediante DNS inverso, rangos CIDR publicados y Web Bot Auth. Una consulta no puede ver el User-Agent, así que la comparación entre el nombre declarado y threat.crawler.verified se hace en tu código. Para el panorama general, consulta cómo clasifican los datos IP a los bots en clases, y para los scrapers que copian tu contenido o tus precios, nuestra guía de detección de web scraping.
Abuso de la anonimización: VPN, proxies y Tor
La anonimización es el camuflaje del ciberdelincuente, pero también la usan millones de personas perfectamente legítimas que se preocupan por su privacidad. La detección moderna de VPN y proxies separa a unos de otros mediante las listas de servidores de los proveedores, el análisis de ASN y el sondeo activo de protocolos, en lugar de una lista de bloqueo desactualizada. La variante más peligrosa es el proxy residencial: redes que enrutan el tráfico a través de dispositivos reales de consumidores. Infoblox midió que las consultas DNS a dominios de proxies residenciales pasaron de casi 400.000 millones al mes en enero de 2025 a más de 500.000 millones al mes en abril de 2026. Los datos IP por sí solos no pueden marcarlos de forma fiable, y GeoIPHub no detecta proxies residenciales, así que hay que atraparlos con señales de dispositivo, de comportamiento y de velocidad. Cómo gestionar el tráfico anonimizado sin rechazar a los usuarios legítimos de VPN es el tema de detectar tráfico anonimizado sin bloquear a clientes reales.
Cuentas falsas, identidad sintética y fraude con cuentas nuevas
El abuso de bonos, la acumulación de referidos, las mulas de dinero y las redes de identidades sintéticas dependen de crear cuentas a gran escala. Como cada cuenta falsa necesita un origen "de aspecto nuevo", los atacantes van agotando IP de proxies y de centros de datos, que es justamente la infraestructura que estas señales sacan a la luz. Incorporar la puntuación de riesgo al registro es una de las formas más baratas de encarecer la creación masiva de cuentas. Nuestra comprobación del registro según el tipo de IP muestra lo que devuelve cada tipo de dirección y qué hacer con ello.
Fraude geográfico, falsificación de la ubicación y evasión de sanciones
El abuso de promociones, la elusión de las licencias de contenido y la evasión de sanciones dependen de falsificar una ubicación. Aquí la consulta cumple una doble función: la geolocalización establece la ubicación declarada, mientras que los indicadores de VPN, proxy y tipo de conexión revelan si esa ubicación se está falsificando. La defensa de restricción geográfica que verás más abajo muestra por qué la comprobación del país no significa nada sin la comprobación del anonimizador a su lado.
Tres consultas de hoy: VPN 92, nodo de salida de Tor 100, host en la nube 10
La puntuación sigue a la evidencia, no al tipo de red. Hicimos estas tres consultas el 15 de octubre de 2026 contra el endpoint público (sin clave, 30 consultas por minuto), y las respuestas siguientes son copias recortadas de la salida real. Los resultados cambian a medida que se mueven los rangos.
curl https://api.geoiphub.com/v1/lookup/102.129.235.17
{
"ip": "102.129.235.17",
"asn": {
"asn": 834,
"org": "IPXO - IPXO LLC",
"asn_type": "vpn",
"connection_type": "datacenter"
},
"detection": {
"is_vpn": true,
"is_hosting": false,
"is_anonymous": true,
"vpn_provider": "none",
"vpn_confidence": 100
},
"scoring": {
"fraud_score": 92,
"recommended_action": "block",
"detection_methods": ["known_vpn_server", "openvpn_open", "ipsec_open"]
}
}
{
"ip": "185.220.101.47",
"asn": {
"asn": 60729,
"org": "TORSERVERS-NET - Stiftung Erneuerbare Freiheit",
"asn_type": "hosting",
"connection_type": "datacenter"
},
"geo": {
"country_code": "DE",
"city": "Hamburg (Hamburg-Nord)"
},
"detection": {
"is_tor": true,
"is_hosting": true,
"is_anonymous": true
},
"threat": {
"is_spammer": true,
"threat_types": ["spammer", "tor"],
"dnsbl_sources": ["bl.spamcop.net"]
},
"scoring": {
"fraud_score": 100,
"recommended_action": "block",
"detection_methods": ["tor_exit", "datacenter_blocklisted", "no_ptr_datacenter", "known_spammer"]
}
}
{
"ip": "45.33.32.156",
"asn": {
"asn": 63949,
"org": "AKAMAI-LINODE-AP - Akamai Connected Cloud",
"asn_type": "hosting",
"connection_type": "datacenter"
},
"detection": {
"is_vpn": false,
"is_hosting": true,
"is_anonymous": false
},
"scoring": {
"fraud_score": 10,
"recommended_action": "allow",
"detection_methods": ["datacenter_ip"]
}
}
Los detection_methods del servidor VPN muestran tres confirmaciones independientes: la IP coincide con un servidor VPN conocido, y nuestros sondeos completaron handshakes reales de OpenVPN e IPsec con ella. Esa corroboración la lleva a la banda de bloqueo, aunque vpn_provider sea "none" porque la dirección no está en la lista de ningún proveedor. El nodo de salida de Tor acumula la lista de nodos de salida del Tor Project y una entrada en SpamCop, así que llega al techo de 100.
Uno de los métodos de la respuesta de Tor es más débil de lo que parece. no_ptr_datacenter dice que la dirección no tiene DNS inverso, pero un dig -x en vivo que ejecutamos esa misma mañana devolvió un nombre de host para ella. Nuestros datos PTR almacenados tienen huecos en algunas direcciones, así que da a ese método el menor peso cuando revises este veredicto.
El host de pruebas de Nmap solo tiene la señal de hosting, así que obtiene 10 y allow. Muchas API, monitores y agentes de IA legítimos funcionan en servidores en la nube, y el hosting por sí solo no es evidencia de delito. Incluso el block de la VPN es un valor por defecto que puedes anular según el flujo, como muestran las defensas siguientes.
Por qué una puntuación de riesgo es mejor que una lista de bloqueo
Una puntuación es mejor que una lista de bloqueo porque la IP es una señal, no un veredicto. Una sola IPv4 residencial puede estar compartida por cientos de personas detrás de un NAT de operador (CGNAT), así que un cliente real y un estafador pueden estar en la misma dirección. Una IP residencial impecable puede alojar un proxy. Una IP de centro de datos puede pertenecer a una VPN corporativa legítima.
El patrón duradero es convertir las señales IP en una puntuación de riesgo y después enrutar la decisión según ella:
Incoming request
|
v
[ IP lookup ] ASN, connection type, VPN / proxy / Tor, hosting, reputation
|
v
[ Risk score 0-100 ] fuse with device, behavioral, velocity and identity signals
|
+-- low : allow (don't punish the legitimate majority)
+-- medium : step-up / challenge (MFA, CAPTCHA, manual review)
+-- high : block or hold
Esta es la diferencia entre poner IP en listas de bloqueo (frágil, con muchos falsos positivos, fácil de eludir) y puntuar el riesgo de las conexiones (gradual, explicable, resistente). Cada motivo que puede nombrar una puntuación explicable, con su peso, se enumera en motivos de la puntuación de riesgo, campo por campo.
Cómo prevenir ciberataques con la geolocalización IP y las señales de red
Para prevenir ciberataques con la geolocalización IP hay que leer más que el país: los grupos geo, asn, detection, threat y scoring de una misma consulta alimentan cada uno una defensa distinta. Las siete siguientes son las que vemos con más frecuencia, cada una con código Python que puedes pegar. Todas llaman a una pequeña función auxiliar:
import json
import urllib.request
API = "https://api.geoiphub.com/v1/lookup/"
def geoiphub_lookup(ip: str, api_key: str = "") -> dict:
# The API currently answers 403 to urllib's default User-Agent, so send your own.
# Without a key you get 30 lookups a minute; with one, 1,500 a day on the free tier.
headers = {"User-Agent": "my-app/1.0"}
if api_key:
headers["x-api-key"] = api_key
req = urllib.request.Request(API + ip, headers=headers)
with urllib.request.urlopen(req, timeout=5) as resp:
return json.load(resp)
1. Bloquea el abuso conocido en el perímetro, pero deja pasar a los rastreadores verificados
La defensa más barata rechaza escáneres, nodos de botnets y nodos de salida de Tor antes de que lleguen a tu aplicación, y deja todo lo demás a la puntuación. Hay dos detalles importantes. Los rastreadores verificados van primero, porque uno real puede estar en un rango de una lista de bloqueo (la 5.39.1.230 de AhrefsBot devuelve is_abusive: true). Y el indicador de escáner se lee directamente, porque no mueve fraud_score: el escáner de Censys en 162.142.125.10 obtiene 0.
def check_ip_at_entry(ip: str) -> dict:
data = geoiphub_lookup(ip)
threat, scoring = data["threat"], data["scoring"]
# Verified search and AI crawlers can sit on blocklisted ranges: let them through
if threat["crawler"]["verified"]:
return {"action": "allow", "reason": "verified_crawler"}
# Scanner and botnet flags don't move fraud_score, so read them directly
if threat["is_scanner"] or threat["is_botnet"]:
return {"action": "block", "reason": "scanner_or_botnet"}
# Tor exit at an entry point that handles accounts or money
if data["detection"]["is_tor"]:
return {"action": "block", "reason": "tor_exit"}
return {"action": scoring["recommended_action"], "fraud_score": scoring["fraud_score"]}
Calibra según el flujo. Un formulario de restablecimiento de contraseña puede actuar con step_up, mientras que un endpoint de contenido público quizá solo actúe con block. El campo scoring.confidence (de 0,0 a 1,0) indica cuánta evidencia hay detrás de la puntuación, así que reserva los bloqueos definitivos para los veredictos con evidencia sólida.
2. Trata el tráfico de VPN, proxies y Tor según el flujo
Los anonimizadores merecen un trato distinto según el flujo, porque las VPN comerciales transportan a millones de usuarios normales, mientras que los proxies abiertos y los nodos de salida de Tor en un pago rara vez pertenecen a uno. Bloquear todas las VPN es demasiado amplio para la mayoría de los productos.
SENSITIVE_FLOWS = {"login", "signup", "checkout"}
def anonymization_response(ip: str, flow: str) -> str:
det = geoiphub_lookup(ip)["detection"]
sensitive = flow in SENSITIVE_FLOWS
if det["is_tor"] or det["is_proxy"]:
return "block" if sensitive else "challenge"
# Commercial VPNs carry millions of ordinary users: add friction only where money moves
if det["is_vpn"]:
return "challenge" if flow == "checkout" else "allow_and_log"
# iCloud Private Relay is a Safari setting, not an attack tool
return "allow"
La evidencia detrás de cada indicador:
detection.is_vpn: una coincidencia con las propias listas de servidores de los proveedores más una lista pública de terceros (incluida la etiqueta WireGuard que llevan esas listas), y handshakes reales de OpenVPN e IPsec de nuestros sondeos.detection.is_proxy: sondeos de handshake para proxies SOCKS4, SOCKS5, HTTP CONNECT y HTTP forward.detection.is_tor: la lista oficial de nodos de salida del Tor Project, actualizada a diario.detection.is_relay: iCloud Private Relay y las salidas de privacidad de Cloudflare, que dejamos pasar a propósito.
Los proxies residenciales no están en esta lista. La API no los detecta, así que no construyas una regla sobre is_residential_proxy.
3. Aplica restricciones geográficas solo junto con la detección de VPN
La restricción geográfica solo funciona cuando la comprobación del país y la del anonimizador se ejecutan juntas. Si bloqueas un país sancionado pero permites las solicitudes con is_vpn: true, los usuarios de ese país se conectan a través de un servidor VPN en Alemania y el bloqueo falla.
BLOCKED_COUNTRIES = {"KP", "IR", "CU"} # example only: your compliance team owns this list
RESTRICTED_FLOWS = {"checkout", "download", "api_access"}
def check_geo_compliance(ip: str, flow: str) -> dict:
if flow not in RESTRICTED_FLOWS:
return {"action": "allow"}
data = geoiphub_lookup(ip)
det = data["detection"]
# Behind an anonymizer the apparent country is the server's, not the user's
if det["is_anonymous"]:
return {"action": "block", "reason": "country_unverifiable"}
# Relay geolocation is approximate: confirm the country from Apple's egress list
if det["is_relay"]:
return {"action": "verify_country", "reason": "private_relay"}
if data["geo"]["country_code"] in BLOCKED_COUNTRIES:
return {"action": "block", "reason": "geo_compliance"}
return {"action": "allow"}
La rama del relay está ahí por un hueco que encontramos en nuestros propios datos. Apple mantiene la salida de Private Relay en el país del usuario, pero para la dirección de relay 104.28.46.99 nuestra base de datos dice Angola, mientras que la propia lista de salidas de Apple dice Zambia. Un relay devuelve is_anonymous: false, así que sin esa rama la comprobación del país confiaría en la respuesta equivocada.
4. Marca los viajes imposibles en los inicios de sesión
El viaje imposible es una de las señales de robo de cuentas más fiables: nadie inicia sesión desde Londres y luego desde California 30 minutos después. Guarda las coordenadas de cada inicio de sesión, calcula la distancia al anterior y marca los pares que requerirían un avión más rápido que unos 900 km/h.
import math
from datetime import datetime, timezone
MIN_DISTANCE_KM = 500 # below this, city-level geolocation error can fake a "jump"
MAX_SPEED_KMH = 900 # roughly a commercial jet
def haversine_km(lat1, lon1, lat2, lon2) -> float:
r = 6371
dlat = math.radians(lat2 - lat1)
dlon = math.radians(lon2 - lon1)
a = (math.sin(dlat / 2) ** 2
+ math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon / 2) ** 2)
return r * 2 * math.asin(math.sqrt(a))
def check_impossible_travel(previous, current_ip: str) -> dict:
# previous: your last stored login for this user, e.g.
# {"latitude": 51.5, "longitude": -0.12, "at": datetime(..., tzinfo=timezone.utc)}
data = geoiphub_lookup(current_ip)
det, geo = data["detection"], data["geo"]
# A VPN, Tor or relay location is not where the person is: don't compare it or store it
if det["is_anonymous"] or det["is_relay"]:
return {"action": "skip", "reason": "location_not_reliable"}
if previous is None:
return {"action": "allow"}
distance_km = haversine_km(previous["latitude"], previous["longitude"],
geo["latitude"], geo["longitude"])
hours = (datetime.now(timezone.utc) - previous["at"]).total_seconds() / 3600
if distance_km > MIN_DISTANCE_KM and hours < distance_km / MAX_SPEED_KMH:
return {"action": "step_up", "reason": "impossible_travel",
"distance_km": round(distance_km), "hours_elapsed": round(hours, 1)}
return {"action": "allow"}
Con un inicio de sesión en Londres guardado 30 minutos antes, el host de Linode en Fremont devolvió step_up a 8.617 km. Dos notas de calibración. Los usuarios de VPN activan el viaje imposible cada vez que cambian de servidor, y por eso los inicios de sesión anonimizados se omiten en lugar de guardarse. Y los operadores móviles enrutan a muchos usuarios a través de direcciones compartidas con datos de ciudad poco precisos, así que el mínimo de 500 km evita que la deriva de la ubicación parezca un vuelo.
5. Limita la tasa según el tipo de red
Los límites de tasa funcionan mejor cuando siguen a la red que hay detrás de la IP. Una sola dirección móvil puede transportar a cientos de personas reales detrás del NAT del operador, así que limitarla con dureza bloquea a clientes. Una dirección en la nube suele ser un solo script, aunque a veces es un agente de IA que actúa en nombre de un comprador real, así que desafíala en lugar de prohibirla.
RATE_LIMITS = {
"isp": {"per_minute": 60, "on_exceed": "delay"},
"mobile": {"per_minute": 120, "on_exceed": "delay"}, # carrier NAT puts many people on one IP
"hosting": {"per_minute": 10, "on_exceed": "challenge"}, # usually one script, sometimes a real AI agent
"vpn": {"per_minute": 20, "on_exceed": "challenge"},
}
DEFAULT_LIMIT = {"per_minute": 30, "on_exceed": "delay"} # "unknown" and any new type
def rate_limit_for(ip: str) -> dict:
data = geoiphub_lookup(ip)
if data["threat"]["crawler"]["verified"]:
return {"per_minute": 120, "on_exceed": "delay"}
if data["scoring"]["recommended_action"] == "block":
return {"per_minute": 3, "on_exceed": "block"}
return RATE_LIMITS.get(data["asn"]["asn_type"], DEFAULT_LIMIT)
Los números son valores iniciales que debes ajustar a tu propio tráfico, no óptimos medidos. Mantén un valor por defecto: el escáner de Censys devolvió asn_type: "unknown", que ninguna tabla fija incluiría. Los scrapers que alquilan IP domésticas y móviles se cuelan por cualquier regla basada en el tipo de red, y nuestra guía sobre cómo saber si están haciendo scraping de tu sitio explica las comprobaciones a nivel de logs que los atrapan.
6. Compara el país de la IP con el país de facturación en el pago
Una tarjeta con dirección de facturación en el Reino Unido usada desde una IP de otro país es un patrón muy significativo de fraude en pagos, siempre que puedas fiarte del país de la IP. Cuando un anonimizador lo oculta, pide en su lugar la autenticación 3-D Secure (3DS).
def assess_checkout_geo_risk(ip: str, billing_country: str) -> dict:
data = geoiphub_lookup(ip)
det = data["detection"]
if det["is_vpn"] or det["is_proxy"] or det["is_tor"]:
return {"risk": "high", "reason": "anonymizer_hides_country", "action": "require_3ds"}
# Private Relay keeps the user's country but our relay geolocation can miss it: skip the compare
if det["is_relay"]:
return {"risk": "standard", "reason": "private_relay", "action": "allow"}
ip_country = data["geo"]["country_code"]
if ip_country != billing_country:
return {"risk": "elevated", "reason": f"ip_{ip_country}_billing_{billing_country}",
"action": "require_3ds"}
return {"risk": "standard", "action": "allow"}
No mantengas una lista escrita a mano de "países de riesgo". Los atacantes enrutan deliberadamente a través de IP de aspecto limpio en países de bajo riesgo, así que apunta a la infraestructura (estado de anonimizador, indicadores de abuso, tipo de ASN) y no a la geografía de la que parece proceder. Nuestra guía para reducir los contracargos profundiza en el flujo de pago.
7. Deja las sesiones de bots fuera de la analítica
Filtrar las sesiones automatizadas antes de que se registren en la analítica hace que tus datos de conversión, y cualquier modelo de pujas entrenado con ellos, se refieran a personas reales. A los rastreadores verificados se les sigue sirviendo contenido; simplemente no se cuentan.
def should_record_session(ip: str) -> bool:
data = geoiphub_lookup(ip)
det, threat, scoring = data["detection"], data["threat"], data["scoring"]
if threat["crawler"]["verified"]:
return False # serve the crawler, but keep it out of analytics
if det["is_tor"] or det["is_proxy"]:
return False
if scoring["recommended_action"] == "block":
return False
if det["is_hosting"] and scoring["fraud_score"] > 50:
return False
return True
El tráfico de pago tiene su propio método, que empieza por renunciar a la lista de exclusión de IP: consulta cómo detectar el fraude de clics por dirección IP.
Lo que devolvieron las siete comprobaciones para seis direcciones reales
El 15 de octubre de 2026 ejecutamos cada una de las funciones anteriores, exactamente tal como están publicadas, contra seis direcciones públicas. La columna del pago compara cada IP con una dirección de facturación de Estados Unidos.
| IP (qué es) | Comprobación en el perímetro | Anonimizador en el inicio de sesión | Límite de tasa | Pago frente a tarjeta de EE. UU. | Contar en la analítica |
|---|---|---|---|---|---|
| 185.220.101.47 (nodo de salida de Tor) | block: tor_exit | block | 3/min, block | high: require_3ds | no |
| 102.129.235.17 (VPN comercial) | block: puntuación 92 | allow_and_log | 3/min, block | high: require_3ds | no |
| 45.33.32.156 (host de pruebas de Nmap, Linode) | allow: puntuación 10 | allow | 10/min, challenge | standard: allow | sí |
| 162.142.125.10 (escáner de Censys) | block: scanner_or_botnet | allow | 30/min, delay | standard: allow | sí |
| 5.39.1.230 (AhrefsBot, verificado) | allow: verified_crawler | allow | 120/min, delay | elevated: FR frente a US | no |
| 104.28.46.99 (iCloud Private Relay) | allow: puntuación 9 | allow | 30/min, delay | standard: private_relay | sí |
Dos filas muestran por qué las comprobaciones tienen que ejecutarse juntas. El escáner de Censys supera todas las comprobaciones salvo la del perímetro, porque el indicador de escáner es su única señal. Y la VPN que la comprobación del perímetro bloquea solo por la puntuación únicamente queda registrada en el inicio de sesión, que es el comportamiento por flujo que buscas: bloquearla donde bloqueas de forma definitiva por puntuación y registrarla donde una VPN es normal.
Qué señal IP frena cada ataque
Cada señal corresponde a un ataque distinto y a una acción distinta. Úsalo como configuración inicial y después ajústalo según el flujo.
| Señal | Lo que detecta | Acción recomendada |
|---|---|---|
| detection.is_tor: true | Anonimización con Tor en credential stuffing, carding y fraude | Bloquear en flujos sensibles |
| detection.is_proxy: true | Proxy SOCKS o HTTP abierto, normalmente herramientas de abuso | Bloquear en inicio de sesión, pago y registro |
| detection.is_vpn: true | VPN comercial, con uso mixto legítimo y abusivo | Desafiar en el pago; permitir y registrar en el resto |
| detection.is_relay: true | iCloud Private Relay o salida de privacidad de Cloudflare | Permitir; no confiar en su ciudad |
| detection.is_hosting: true en un flujo de consumidor | Scripts, o un agente de IA que compra para una persona real | Desafiar; bloquear solo con una puntuación alta |
| threat.is_scanner o is_botnet: true | Infraestructura de escaneo y de botnets (no mueve la puntuación) | Bloquear en el perímetro |
| threat.crawler.verified: true | Un rastreador de búsqueda o de IA real en los rangos publicados por su operador | Permitir; excluir de la analítica |
| Distancia de más de 500 km a más de 900 km/h | Robo de cuentas con credenciales robadas | Pedir verificación adicional y después marcar la cuenta |
| geo.country_code distinto del de facturación, sin anonimizador | Pruebas de tarjetas, o un cliente de vacaciones | Exigir 3DS |
| scoring.fraud_score por encima de 75 (block) | Varias señales que se corroboran a la vez | Bloquear o retener para revisión manual |
Lo que los datos IP no pueden detectar
Los datos IP son un filtro de primera pasada, y hay tres tipos de ataque que lo atraviesan sin más. Para el procedimiento por incidente, desde la propiedad hasta el veredicto, consulta cómo investigar una dirección IP sospechosa.
Proxies residenciales con reputación limpia. Una IP añadida ayer a un pool de proxies no tiene historial de abuso y supera las comprobaciones de listas de bloqueo, y GeoIPHub no detecta proxies residenciales. Atraparlos requiere anomalías en la huella digital del dispositivo, en los tiempos de sesión y en las tasas de interacción.
Cuentas comprometidas en una conexión limpia. Un atacante con credenciales válidas en una conexión doméstica del país de la víctima no deja nada en los datos IP que se pueda marcar. Hacen falta señales de comportamiento (ritmo de escritura, navegación, divergencias en el historial de compras).
Ataques dirigidos. Un atacante que estudia tus defensas elegirá una IP residencial limpia en la ciudad de la víctima y superará todas las comprobaciones a nivel de IP. Aquí las defensas son la verificación por email y la vinculación de dispositivos.
El modelo correcto: la consulta filtra el volumen de ataques automatizados y poco sofisticados con un coste casi nulo por solicitud, para que las comprobaciones caras (huella digital del dispositivo, análisis de comportamiento, revisión manual) puedan centrarse en lo que queda.
Ejecutar estas comprobaciones en producción
Tres hábitos mantienen precisas las defensas basadas en IP después del lanzamiento.
Almacena en caché por IP, durante poco tiempo. Los datos de red cambian despacio dentro de una sesión, pero cambian: nuestros sondeos de VPN y proxies se ejecutan como máximo cada 12 horas y las fuentes de amenazas se actualizan cada 6 horas. Guarda en caché cada consulta durante la sesión, haz que caduque en menos de una hora para las decisiones de seguridad y en menos de un día para los campos geográficos simples. Una consulta por IP y por sesión es el modelo de coste práctico.
Registra la respuesta completa, no solo el veredicto. Cuando salta un bloqueo, quieres saber qué señal lo provocó. Guarda scoring.detection_methods y el scoring.fraud_score bruto con cada decisión. Así es como encuentras falsos positivos, como el método de PTR desactualizado de la muestra de Tor anterior, y ajustas los umbrales.
Ajusta los umbrales por flujo, no por sitio. Un restablecimiento de contraseña merece un umbral de bloqueo más bajo que la lectura de un artículo del blog. Mantén los umbrales en la configuración para que tu equipo de seguridad pueda ajustarlos sin un despliegue:
FLOW_THRESHOLDS = {
"checkout": {"block_above": 75, "challenge_above": 50},
"login": {"block_above": 80, "challenge_above": 55},
"signup": {"block_above": 85, "challenge_above": 60},
"api_read": {"block_above": 90, "challenge_above": 75},
}
Lo que devuelve una consulta de GeoIPHub frente a cada amenaza
GeoIPHub empaqueta toda esta capa en una sola llamada a la API. Una consulta devuelve más de 100 campos de datos en 10 grupos de respuesta (geolocalización, ASN y red, tipo de conexión, operador móvil, DNS inverso, indicadores de anonimizador y una puntuación de riesgo calculada), así que no tienes que combinar cinco proveedores para responder a una sola pregunta. Esto es lo que hace el trabajo frente a cada amenaza:
- Una puntuación de riesgo de 0 a 100 a partir de 36 motivos ponderados. En lugar de un indicador de sí o no, GeoIPHub devuelve una puntuación explicable con bandas de decisión integradas, allow (25 o menos), review (50 o menos), step-up (75 o menos) y block (más de 75), de modo que la misma consulta puede ajustarse de forma más estricta en el pago que en el inicio de sesión.
- Detección de VPN y proxies mediante sondeo activo. Más allá de las listas estáticas, GeoIPHub ejecuta sondeos reales de handshake en más de 25 puertos y 8 protocolos, y contrasta las propias listas de servidores de los proveedores de VPN con una lista pública de terceros, de modo que la respuesta refleja la infraestructura en vivo, no la lista de bloqueo del mes pasado.
- Detección de centros de datos y hosting. La cobertura abarca 853 ASN de hosting seleccionados más los rangos oficiales de 10 proveedores de nube, la señal que deja al descubierto los bots de carding, los scrapers y la infraestructura de stuffing que se hacen pasar por navegadores.
- Datos de nodos de salida de Tor actualizados a diario y 19 fuentes oficiales de rangos de rastreadores y bots de IA (Googlebot, GPTBot, ClaudeBot, PerplexityBot y más), para que las salidas anonimizadas y los bots que se identifican a sí mismos se puntúen frente a la realidad actual.
- Más de 30 fuentes de datos y 5 fuentes WHOIS de RIR detrás de todo ello, con consultas en caché por debajo del milisegundo y las IP desconocidas clasificadas en vivo en menos de 2,5 segundos, lo bastante rápido para estar en línea en el inicio de sesión, el registro y el pago.
Además, respeta la privacidad por diseño: envías solo la IP que quieres clasificar y recibes atributos de red y de riesgo. No hacen falta nombres, emails ni datos de pago para puntuar una solicitud.
Puedes probar las señales directamente con la herramienta gratuita de consulta de IP, comprobar la puntuación de fraude de cualquier IP o probar la detección de VPN en tu propia conexión. Cuando quieras integrarlo en tu aplicación, la guía de integración en 10 minutos explica cómo puntuar cada solicitud con cURL, Node y Python, en un plan gratuito que devuelve todos los campos, 1.500 consultas al día, sin restricciones de campos.
Aumenta el coste para el atacante, no la fricción para tus clientes
El cibercrimen está industrializado, automatizado y es cada vez menos humano, y todo él viaja a través de una dirección IP que tú puedes inspeccionar primero. Los datos IP no frenarán el fraude por sí solos, y cualquier análisis honesto lo reconoce. Pero como capa de procedencia en una defensa por capas (la señal que te dice qué sesiones merecen una mirada más atenta), es uno de los controles más útiles y de menor fricción que puedes desplegar. Bien usado, aumenta el coste del ataque para la minoría delictiva sin penalizar a la mayoría legítima.
Preguntas frecuentes
¿Qué es la inteligencia IP?
La inteligencia IP es la práctica de enriquecer una dirección IP sin procesar con todo lo que revela sobre su origen y su fiabilidad: la geolocalización, la red propietaria (ASN), el tipo de conexión, si es un centro de datos, una VPN, un proxy o un nodo de salida de Tor, el historial de abuso y una puntuación de riesgo calculada. Convierte el atributo más universal de cualquier solicitud online en una señal de decisión sobre la que puedes actuar antes de que se escriba una contraseña o se cobre una tarjeta. Es más amplia que la geolocalización IP, que solo responde a "¿dónde está esta IP?"; el enriquecimiento también responde a "¿puedo confiar en ella?".
¿Cómo ayudan los datos IP a prevenir ciberataques?
Casi todos los ataques (credential stuffing, pruebas de tarjetas, scraping, creación de cuentas falsas, pagos fraudulentos) llegan a través de una dirección IP, y los atacantes reutilizan infraestructura a gran escala. Una consulta deja al descubierto las huellas que deja esa infraestructura: un inicio de sesión desde un ASN de hosting, un pago desde un servidor VPN confirmado por sondeo, un "navegador" que en realidad es un script en la nube. Usada como señal de riesgo en tiempo real en el inicio de sesión, el registro y el pago, te permite desafiar o bloquear a la minoría sospechosa sin añadir fricción a la mayoría legítima.
¿Puede la geolocalización IP por sí sola frenar los ciberataques?
No, y cualquier proveedor que diga lo contrario está exagerando. Los datos IP son una capa de un modelo de defensa en profundidad. Una IP móvil compartida puede transportar a la vez a un estafador y a un cliente real, una IP residencial limpia puede alojar un proxy, y un atacante con credenciales robadas en una conexión doméstica de la ciudad de la víctima supera todas las comprobaciones de IP. Las señales IP son más fuertes combinadas con señales de dispositivo, de comportamiento, de velocidad y de identidad. Usa la puntuación de riesgo para decidir qué sesiones merecen más escrutinio, no para imponer bloqueos generalizados.
¿Qué tipos de cibercrimen pueden detectar las señales IP?
Las señales IP contribuyen a detectar el robo de cuentas y el credential stuffing, el fraude con cuentas nuevas y con identidades sintéticas, el fraude en pagos y las pruebas de tarjetas, el tráfico automatizado de bots y scrapers, los rastreadores que declaran un nombre que su IP no respalda y la evasión de políticas o sanciones mediante VPN y proxies. En todos los casos son la capa de procedencia: te dicen si la conexión viene de una infraestructura coherente con una persona real o con actividad automatizada o anonimizada. No detectan proxies residenciales; para esos hacen falta señales de dispositivo y de comportamiento.
¿Qué es la detección de viaje imposible y cómo funciona?
La detección de viaje imposible marca dos inicios de sesión en la misma cuenta desde lugares demasiado alejados para recorrerlos en el tiempo que hay entre ellos. Londres y Singapur están a unos 10.850 km, así que un inicio de sesión en Londres seguido de otro en Singapur 30 minutos después significa que uno de los dos no es el titular de la cuenta. Guarda la latitud y la longitud de cada inicio de sesión, calcula la distancia al anterior y marca los pares que requerirían más de unos 900 km/h, aproximadamente un avión comercial. Omite los inicios de sesión desde direcciones de VPN, Tor o relay, porque su ubicación no es la del usuario.
¿Debería bloquear todo el tráfico de determinados países?
El bloqueo por país es un instrumento tosco con daños colaterales importantes. Antes de bloquear un país entero, comprueba si tienes usuarios legítimos allí, porque un bloqueo que configuras una vez también los afectará a ellos. Alternativas más precisas: exige verificación adicional en flujos sensibles como el pago y el restablecimiento de contraseña, usa la restricción geográfica estricta solo donde la ley o un contrato la exijan, y combina el país con señales de red (ASN de hosting, detección de VPN) para apuntar a la infraestructura de la que se abusa y no a la población de la que parece proceder.
¿La inteligencia IP es lo mismo que la geolocalización IP?
No. La geolocalización IP es un subconjunto. La geolocalización asocia una IP con un país, una región y una ciudad aproximada, y tiene una precisión de alrededor del 99% a nivel de país, pero mucho menor a nivel de ciudad. La consulta completa incluye la geolocalización y añade la propiedad de la red (ASN), el tipo de conexión, los indicadores de VPN, proxy, Tor y centro de datos, las señales de abuso y una puntuación de riesgo compuesta. La geolocalización te dice dónde; el resto te dice si puedes confiar.
¿La puntuación de riesgo basada en IP vulnera la privacidad de los usuarios o el GDPR?
Funciona sobre la dirección IP y los metadatos de red, no sobre nombres, emails ni datos de pago. Con GeoIPHub envías solo la IP que quieres clasificar y recibes atributos de red y de riesgo. No hace falta intercambiar datos personales para puntuar una solicitud. Según el GDPR, una dirección IP puede ser un dato personal, así que se siguen aplicando las buenas prácticas: úsala con la finalidad legítima de prevención del fraude y seguridad, minimiza su conservación y documéntalo. Puntuar el riesgo de una IP es un control de seguridad, no un seguimiento de usuarios.
El equipo detrás de la API de GeoIPHub
Escrito por el equipo de GeoIPHub, las personas que crean la API de inteligencia IP de GeoIPHub y su escáner. Los borradores se preparan con ayuda de IA y el equipo los edita; los ejemplos de la API son consultas reales contra la API en producción, salvo que se indique que son ilustrativos.


