Cómo frenar los registros falsos: detección de cuentas falsas según el tipo de IP
Frena los registros falsos según el tipo de IP: siete consultas en vivo del 2 de noviembre de 2026, la acción de registro que corresponde a cada una y límites de velocidad por /24 y /64 para tu propio código.

Okta Threat Intelligence describió un servicio de vídeo con IA cuya prueba gratuita atrajo una avalancha de intentos de registro falsos. En los registros de uno de sus clientes, "entre el 1 de junio de 2026 y el 1 de julio de 2026, los registros muestran más de 105.000 intentos de registro por fuerza bruta desde 251 IP distintas probablemente vinculadas a bots". Los registros "estaban vinculados a proveedores de proxies y VPN". Según el cálculo de GeoIPHub sobre las cifras de Okta, eso supone unos 418 intentos por dirección a lo largo del mes, o unos 14 al día, así que un límite de unos pocos registros por IP y hora podría no activarse nunca.
Lo difícil es que los registros falsos y los clientes reales comparten las mismas redes. Las personas reales también usan VPN y escritorios en la nube, y las direcciones que comparten las personas reales, como iCloud Private Relay, los operadores móviles y el NAT de nivel de operador, parecen muy activas por naturaleza. Una regla que solo bloquea dejará entrar al grupo o dejará fuera a los clientes.
A continuación: siete direcciones desde las que puede llegar un registro, lo que la API de consulta de IP de GeoIPHub devolvió para cada una el 2 de noviembre de 2026 y lo que haríamos en el formulario, por qué las direcciones compartidas nunca deben rechazarse solo por la puntuación, límites de velocidad con código probado y lo que la IP no puede ver.

Qué comprueba la detección de cuentas falsas en el registro, y la única señal que siempre tienes
La detección de cuentas falsas puntúa cada nuevo registro en función de la red, la velocidad, el correo electrónico, el teléfono, el dispositivo y el comportamiento. En el momento en que se envía el formulario, la IP es la única de esas señales que tu servidor siempre tiene sin pedirle nada al usuario, y por eso una puntuación de riesgo de IP suele ser la primera comprobación.
OWASP llama a este ataque OAT-019 Account Creation: "Creación masiva de cuentas, y a veces rellenado de perfiles, mediante los procesos de registro de cuentas de la aplicación". La creación de cuentas falsas rara vez es el objetivo; es la preparación para explotar promociones y referidos, para que un solo operador detrás de muchas cuentas eluda un bloqueo o para preparar campañas de credential stuffing.
El fraude en el registro es lo bastante común como para tenerlo previsto. El Customer Identity Trends Report 2025 de Okta, basado en su plataforma Auth0, dice: "En 2024, una media del 46% de todos los intentos de registro en la plataforma Auth0 se identificaron como ataques de registro". Stripe, al anunciar Sessions 2026 el 29 de abril de 2026, expresó así la cifra de su propia red: "En los servicios de IA que funcionan sobre Stripe, uno de cada seis intentos de registro lo realiza un actor malicioso".
Esto es lo que necesita cada capa, y cuáles puede responder una consulta de IP:
| Capa | Ejemplos | ¿Puede verla una consulta de IP? |
|---|---|---|
| Red | Nodo de salida de Tor, servidor VPN, servidor en la nube, relé, operador móvil | Sí |
| Velocidad | Registros por dirección, prefijo o red en una hora o un día | Solo las claves; el conteo lo hace tu código |
| Correo electrónico | Dominios desechables, variantes con signo más y con puntos | No |
| Teléfono | Números VoIP, números reciclados | No |
| Dispositivo | Rasgos del navegador y del hardware que se repiten entre cuentas | No; consulta la huella digital del dispositivo |
| Comportamiento | Velocidad de rellenado del formulario, copiar y pegar, movimiento del ratón | No |
La fila del dispositivo corresponde a otra herramienta; nuestra comparación entre la huella digital del dispositivo y los datos de IP explica cómo se combinan ambas.
Siete IP de registro, siete decisiones: lo que devolvió GeoIPHub el 2 de noviembre de 2026
GeoIPHub consultó siete direcciones desde las que puede llegar un registro entre las 04:51 y las 04:52 UTC del 2 de noviembre de 2026. Esta es la puntuación, los motivos y lo que haríamos en el formulario, usando la fila de registro de los umbrales iniciales de puntuación de riesgo de GeoIPHub. Las dos últimas filas son reglas de nuestra configuración de puntuación, no consultas.
| Dirección | Qué es | Puntuación, acción | detection_methods | En el registro |
|---|---|---|---|---|
| 185.220.101.1 | Nodo de salida de Tor, también en zen.spamhaus.org | 100, block | tor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer | Rechazar |
| 185.213.155.73 | Servidor VPN; vpn_provider indica Mullvad | 100, block | known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter | Rechazar por defecto; verificar en su lugar si tus usuarios usan VPN y no se activó ningún motivo de abuso |
| 45.83.220.7 | Dirección de la red VPN de Mullvad, vpn_provider "Mullvad (31173 Services)" | 46, review | known_vpn_server, datacenter_ip | Crear, restringir, marcar |
| 45.33.32.156 | scanme.nmap.org, un servidor en la nube de Linode | 10, allow | datacenter_ip | Permitir; contar por red de hosting |
| 104.28.46.99 | Salida de iCloud Private Relay | 9, allow | relay_ip | Permitir; límites de velocidad más laxos |
| 66.249.66.1 | Googlebot verificado (crawler.operator Google) | 0, allow | datacenter_ip, verified_crawler | Sin cuenta: un rastreador no se registra |
| 162.142.125.10 | Escáner de internet de Censys (is_scanner true) | 0, allow | No devolvió motivos | Sin cuenta |
| Cualquier dirección CGNAT | Regla de nuestra configuración de puntuación, no una consulta | Tope de 50 | El tope solo se levanta con evidencia propia de la dirección de VPN, proxy, Tor, protocolo, botnet o abuso | Nunca rechazar por puntuación |
| Cualquier dirección de operador móvil | Regla de nuestra configuración de puntuación, no una consulta | Rebajada en 12 | mobile_carrier, cuando no hay evidencia de amenaza | Nunca rechazar por puntuación |
Los dos 100 parecen idénticos y no lo son. El nodo de salida de Tor arrastra historial de spam; el servidor VPN solo tiene motivos de anonimato, sin ninguna evidencia de abuso. Esa diferencia decide si un registro con VPN se rechaza o se verifica.
El propio recommended_action de la API solo bloquea por encima de 75. Los umbrales iniciales de registro de GeoIPHub bloquean a partir de 71, y ninguna fila del 2 de noviembre de 2026 cayó entre las dos líneas.
La banda ancha doméstica no tiene fila, porque no publicamos direcciones de hogares. La puntuación de GeoIPHub solo concede a una línea doméstica su descuento cuando la dirección tiene un nombre de DNS inverso con patrón residencial, así que una línea doméstica sin él no recibe el descuento residencial, y cualquier motivo de amenaza cuenta por completo.
Lee los motivos, no el número: un registro rastreado de principio a fin
La puntuación dice cuánto riesgo tiene una dirección; scoring.detection_methods dice por qué, y el porqué decide entre restringir, verificar y rechazar. Esta es la respuesta recortada para 45.83.220.7, consultada a las 04:51:58 UTC del 2 de noviembre de 2026:
{
"ip": "45.83.220.7",
"asn": {
"asn": 39351,
"org": "ESAB-AS - 31173 Services AB",
"connection_type": "datacenter"
},
"detection": {
"is_vpn": true,
"is_hosting": true,
"is_relay": false,
"is_mobile": false,
"vpn_provider": "Mullvad (31173 Services)"
},
"threat": { "is_cgnat": false },
"scoring": {
"fraud_score": 46,
"recommended_action": "review",
"detection_methods": ["known_vpn_server", "datacenter_ip"]
}
}
Se activaron dos motivos. known_vpn_server suma 36 (40 puntos con una confianza de 0,9) y datacenter_ip suma 10 (20 con 0,5), así que la puntuación es 46. Eso cae en la franja de 26 a 50 de los umbrales iniciales de registro de GeoIPHub: crear y marcar. Crearíamos la cuenta en un estado restringido, sin créditos de prueba ni bonificación hasta que se confirme el correo. Como detection.is_hosting es true, el registro también cuenta contra AS39351 en la comprobación de velocidad de más abajo. En el primer evento de valor, como el inicio de una prueba o la concesión de créditos, vuelve a consultar la IP.
El servidor de Mullvad en 185.213.155.73 obtuvo 100 block, y cada uno de sus cuatro motivos tiene que ver con el anonimato, no con el abuso. Por defecto, en el registro se rechaza. Los productos cuyos usuarios reales usan VPN pueden escribir reglas sobre los motivos y enviar un 100 como este, con motivos de anonimato y sin ningún motivo de abuso, a verificación por correo o teléfono. Una VPN por sí sola es una elección de privacidad, y las personas a las que protege son a menudo quienes acaban marcadas por error. Un nodo de salida de Tor con historial de spam sigue rechazado en cualquier caso.
Una puntuación de 0 no es un aprobado: rastreadores y escáneres en tu formulario de registro
Los dos resultados más amables de las consultas de GeoIPHub del 2 de noviembre de 2026, el Googlebot verificado en 66.249.66.1 y el escáner de Censys en 162.142.125.10, obtuvieron 0 allow, y son precisamente los dos que nunca deberían crear una cuenta. Eso nos sorprendió más que cualquier 100.
El motivo verified_crawler de GeoIPHub resta 28,5, así que un rastreador verificado queda en la parte más baja de la escala. Eso es correcto para el rastreo y erróneo para el POST de un formulario. Si threat.crawler.verified es true en una solicitud de registro, no crees la cuenta. Para esto, lee crawler.verified y crawler.operator, nunca crawler.name.
threat.is_scanner no influye en la puntuación en absoluto: la dirección de Censys no devolvió motivos. Comprueba el indicador directamente y rechaza el registro cuando sea true.
Nunca rechaces una dirección compartida solo por la puntuación: relés, CGNAT y móviles
Una salida de iCloud Private Relay, una dirección de NAT de nivel de operador o una pasarela móvil pueden agrupar a muchas personas reales. La puntuación de GeoIPHub pone un tope de 60 a las direcciones de relé y de 50 a las direcciones CGNAT salvo que la dirección tenga su propia evidencia de amenaza, y aplica un descuento a las direcciones móviles limpias, mientras que una dirección móvil con evidencia de amenaza recibe en cambio una penalización. Tus reglas deberían mantener estas direcciones fuera de la franja de bloqueo salvo que tengan su propia evidencia.
En la puntuación de GeoIPHub, relay_ip suma 8,5 y no hay descuento por relé, así que nuestra muestra de relé obtuvo 9. El tope de CGNAT solo se levanta con evidencia propia de la dirección de VPN, proxy, Tor, protocolo, botnet o abuso. Las direcciones de operadores móviles reciben mobile_carrier, que baja la puntuación en 12 cuando no hay evidencia de amenaza.
Nada de esto significa "confiar". Significa que la IP por sí sola no puede separar al único actor malicioso de los muchos clientes que hay detrás de la misma dirección. Así que desafía estos registros, nunca los rechaces por la puntuación, y dales diez veces los límites de velocidad habituales. Para Private Relay en concreto, la recomendación es dejarlos pasar y puntuar la sesión según lo que haga la cuenta a continuación.
Cuenta los registros por IP, por /24, por /64 de IPv6 y por red de hosting en tu propio código
La API de GeoIPHub puntúa una dirección; no cuenta cuántas cuentas creó esa dirección, su /24, su /64 o su red en las últimas 24 horas. Ese contador vive en tu código, y la consulta te dice qué claves usar: asn.asn, detection.is_hosting, detection.is_relay, detection.is_mobile, asn.connection_type y threat.is_cgnat.
En el caso del servicio de vídeo con IA de Okta, los intentos de registro falsos promediaron unos 14 por dirección y día, repartidos entre 251 direcciones. Un contador por IP por sí solo podría no saltar nunca con eso. Los contadores por prefijo y por red existen exactamente para este caso.
Son puntos de partida que elegimos nosotros, no referencias del sector; ajústalos con tus propios registros.
| Clave | Ventana | Límite inicial | Notas |
|---|---|---|---|
| Dirección IPv4 exacta | 1 hora | 3 | |
| /24 de IPv4 | 1 hora | 10 | Detecta un grupo que rota dentro de un mismo bloque |
| /64 de IPv6 | 1 hora | 3 | Trata un /64 como una sola dirección IPv4; amplía a /56 o /48 cuando sigan llegando /64 nuevos de una misma asignación |
| ASN, solo hosting (detection.is_hosting true) | 24 horas | 20 | Los clientes reales rara vez se registran desde un servidor en la nube |
| Direcciones compartidas (relé, CGNAT o móvil) | Mismas ventanas | Diez veces los límites por IP y por prefijo | Nunca bloquear solo por velocidad |
Superar el límite significa un paso adicional (verificación por correo o teléfono, o un CAPTCHA) o una creación restringida, no un rechazo. En IPv6, cuenta el prefijo, nunca la dirección completa, o un solo actor se convierte en miles de registros "distintos". Los hogares suelen recibir un /56 o un /48, por eso la tabla amplía el rango; nuestra guía para limitar la tasa de IPv6 por prefijo explica los tamaños de asignación.
El código de abajo funciona con Node 18 o posterior, sin dependencias. Espera la dirección del cliente tal como la informa Node, incluidas las formas IPv4 mapeadas como ::ffff:192.0.2.1, después de que la obtengas de tu cadena de proxies de confianza. Usa ventanas fijas, una simplificación de una ventana deslizante.
// Signup velocity keys: exact IP, IPv4 /24, IPv6 /64, and ASN for hosting.
// Starting limits, not benchmarks. Tune them on your own signups.
import { isIPv4, isIPv6 } from "node:net";
const HOUR = 3600e3, DAY = 24 * HOUR;
const LIMITS = {
ip: { window: HOUR, max: 3 }, // one IPv4 address, or one IPv6 /64
v4_24: { window: HOUR, max: 10 },
asn: { window: DAY, max: 20 }, // hosting networks only
};
const SHARED_FACTOR = 10; // relay, CGNAT and mobile egress
function expandIPv6(addr) {
const [head, tail = ""] = addr.toLowerCase().split("::");
const h = head ? head.split(":") : [];
const t = tail ? tail.split(":") : [];
const fill = addr.includes("::") ? 8 - h.length - t.length : 0;
return [...h, ...Array(fill).fill("0"), ...t].map((g) => g.padStart(4, "0"));
}
export function velocityKeys(ip, lookup) {
const keys = [];
const m = ip.match(/^(?:::|(?:0{1,4}:){5})ffff:(\d+\.\d+\.\d+\.\d+)$/i);
const v4 = m && isIPv4(m[1]) ? m[1] : ip;
if (isIPv4(v4)) {
keys.push(["ip", v4], ["v4_24", v4.split(".").slice(0, 3).join(".") + ".0/24"]);
} else if (isIPv6(ip)) {
keys.push(["ip", expandIPv6(ip).slice(0, 4).join(":") + "::/64"]);
}
const asn = lookup?.asn;
if (lookup?.detection?.is_hosting && asn?.asn) keys.push(["asn", `AS${asn.asn}`]);
return keys;
}
const counters = new Map(); // in-memory and unbounded; for a demo only; use Redis INCR + EXPIRE in production
export function checkVelocity(ip, lookup, now = Date.now()) {
const shared = Boolean(
lookup?.detection?.is_relay || lookup?.threat?.is_cgnat ||
lookup?.detection?.is_mobile || lookup?.asn?.connection_type === "mobile");
const hits = [];
for (const [level, value] of velocityKeys(ip, lookup)) {
const { window, max } = LIMITS[level];
const limit = shared && level !== "asn" ? max * SHARED_FACTOR : max;
const key = `${level}:${value}:${Math.floor(now / window)}`;
const count = (counters.get(key) ?? 0) + 1;
counters.set(key, count);
if (count > limit) hits.push({ level, value, count, limit });
}
return { overLimit: hits.length > 0, hits }; // over the limit: step up, don't block
}
Ejecutamos 16 pruebas unitarias contra este código exacto el 2 de noviembre de 2026 con Node 24.20.0, usando rangos de direcciones de documentación y privados, además de la dirección de scanme.nmap.org de la tabla, sin consultas. Las 16 pasaron: las formas IPv4 mapeadas como ::ffff:45.33.32.156 se clasificaron como IPv4, la rotación dentro de un /64 saltó en el 4.º registro, 11 direcciones dentro de un mismo /24 solo activaron la clave /24, y 30 registros desde una misma salida de relé pasaron mientras que el 31.º se marcó. Una consulta fallida (null) sigue generando las claves de IP y de prefijo, así que el contador sigue funcionando cuando la API no responde.
Dónde la capa de IP se queda ciega
Una consulta de IP no puede ver una cuenta falsa que se registra desde una conexión doméstica alquilada o un teléfono real, y nunca ve el correo electrónico, el dispositivo ni cómo se rellenó el formulario.
Los proxies residenciales son la carencia más clara. GeoIPHub marca los proxies que hemos observado en líneas residenciales y móviles, incluidas las direcciones que una lista de terceros indica que están reenviando tráfico, pero no tenemos detección propia de proxies residenciales, y una línea doméstica limpia puede pasar. Las granjas de clics y de dispositivos que funcionan con tarjetas SIM reales parecen clientes móviles, y nuestra puntuación trata a los clientes móviles con suavidad a propósito.
GeoIPHub puntúa la IP; no comprueba direcciones de correo electrónico ni números de teléfono. Combina la comprobación de IP con tus propias comprobaciones de correo (dominios desechables, normalización de variantes con signo más y con puntos), la verificación telefónica, las señales de dispositivo y la agrupación de cuentas que comparten claves después del registro.
El estado restringido es lo que hace barato gestionar la franja media. Crea la cuenta, retén los créditos y libéralos tras la verificación o la primera acción real. Una cuenta falsa que nunca se verifica te cuesta una fila en la base de datos, no una prueba gratuita.
Cómo frenar los registros falsos antes de que exista la cuenta
Toda la comprobación consiste en una consulta y un conteo de velocidad entre "enviar" y "crear", en este orden:
- Toma la IP del cliente de tu cadena de proxies de confianza, no de una cabecera
X-Forwarded-Forsin procesar, que el cliente puede rellenar con cualquier cosa. - Consulta la IP.
- Rechaza los nodos de salida de Tor, los rastreadores verificados y los escáneres. Rechaza por defecto un servidor VPN con 100, o envíalo a verificación si tus usuarios usan VPN y no se activó ningún motivo de abuso. Nunca rechaces direcciones de relé, CGNAT o móviles por la puntuación. Aplica los umbrales iniciales de registro de GeoIPHub a todo lo demás.
- Ejecuta la comprobación de velocidad y pide un paso adicional si salta.
- Si la consulta falla, recurre a la comprobación de velocidad y a la confirmación por correo; no rechaces.
- Guarda la puntuación, los motivos y la hora de la consulta con la cuenta, y vuelve a consultar la IP en el primer evento de valor (inicio de la prueba, concesión de créditos, primer pago).
Nuestra integración probada en Node y Python muestra los pasos 2 y 3 como código funcional. El plan gratuito de GeoIPHub cubre 1.500 consultas al día con todos los campos incluidos.
Pega las últimas diez IP de tu registro de altas en el comprobador de puntuación de riesgo de IP y clasifícalas en las filas de la tabla. La puntuación te dice qué es cada dirección; el contador te dice cuántas cuentas ha creado.
Preguntas frecuentes
¿Cómo freno los registros falsos sin bloquear a usuarios reales?
Consulta la IP de cada registro con la API de GeoIPHub antes de crear la cuenta. Rechaza los nodos de salida de Tor y las puntuaciones más altas, verifica la franja media por correo electrónico o teléfono, y deja pasar las direcciones compartidas, como iCloud Private Relay, el NAT de nivel de operador y las pasarelas móviles, con límites de velocidad más laxos, porque una sola de esas direcciones puede agrupar a muchos clientes reales.
¿Qué tan común es el fraude en el registro?
En la plataforma Auth0 de Okta, una media del 46% de los intentos de registro de 2024 se identificaron como ataques de registro. Stripe dijo en abril de 2026 que uno de cada seis intentos de registro en los servicios de IA de su red lo realiza un actor malicioso. Ambas son cifras de proveedores sobre sus propias plataformas.
¿Puede una dirección IP por sí sola detectar cuentas falsas?
No. Una consulta de IP muestra desde qué tipo de red llegó el registro y por qué obtuvo esa puntuación, pero no puede ver el correo electrónico, el teléfono, el dispositivo ni una cuenta falsa que se registra desde una conexión doméstica alquilada. Úsala como primera capa y combínala con comprobaciones de correo, teléfono y dispositivo.
¿GeoIPHub comprueba direcciones de correo electrónico?
No. La API de GeoIPHub solo puntúa la dirección IP. Comprueba el correo y el teléfono con tus propias herramientas y combina esos resultados con la puntuación y los motivos de GeoIPHub.
¿Debería permitir que un usuario de VPN se registre?
A menudo, sí. Una VPN por sí sola es una elección de privacidad, así que puedes enviar los registros con VPN a verificación por correo o teléfono en lugar de rechazarlos, y reservar los bloqueos directos para los nodos de salida de Tor y las direcciones con historial de spam o abuso.
¿Cómo debo limitar la tasa de registros en IPv6?
Cuenta por /64, no por dirección, porque un solo abonado puede rotar por todo un /64. Amplía a /56 o /48 cuando sigan llegando nuevos /64 de la misma asignación, y mantén límites más laxos en los operadores móviles.
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.


