Saltar al contenido
Prevención del fraude

Motivos de la puntuación de riesgo: cómo leer detection_methods campo por campo

Los motivos de la puntuación de riesgo, campo por campo: cada valor de detection_methods que devuelve nuestro código de puntuación, su peso y una consulta real en la que un rastreador verificado bajó de 64 a 35.

PorEquipo de GeoIPHubPublicadoActualizadoTiempo de lectura18 min de lectura
Muchos haces de luz que convergen en un único punto brillante, en representación de motivos con nombre que se suman en una puntuación de riesgo

A un cliente lo bloquean en el pago y escribe para preguntar por qué. "Nuestro proveedor dijo 92" termina mal la conversación. "Tu conexión venía de un servidor VPN listado con un puerto OpenVPN abierto" es una respuesta que puedes defender, reconsiderar o ajustar. Eso es lo que te da una puntuación de fraude explicable: códigos de motivo, no solo un número.

Esta página es el diccionario de esas respuestas. Para saber qué significa el número en sí y dónde están las bandas, empieza por qué es una puntuación de fraude IP y cómo leerla. A continuación mostramos la aritmética, recorremos una respuesta real motivo por motivo, tratamos los cinco motivos que restan y enumeramos cada valor de detection_methods que puede devolver nuestro código de puntuación, con su peso y lo que hace que se active.

Placas translúcidas de distinto grosor en equilibrio sobre un único pivote, en representación de señales de puntuación ponderadas
Cada motivo tiene un peso; la puntuación es la suma, y los motivos se enumeran.

Los motivos de la puntuación de riesgo se suman: puntos por confianza y después un límite

En la puntuación de GeoIPHub, cada motivo aporta sus puntos multiplicados por su confianza, y la puntuación es el total redondeado, limitado entre 0 y 100. No hay ningún modelo oculto encima. Este es el paso de puntuación de nuestra API (scoring.service.ts), reducido a su aritmética:

GeoIPHub API
// Each fired reason: { points, confidence } from scoring.json let sum = fired.reduce((s, r) => s + r.points * r.confidence, 0); if (isCgnat && !ownThreatEvidence) sum = Math.min(sum, 50); // CGNAT cap if (isRelay) sum = Math.min(sum, 60); // relay cap const fraud_score = Math.max(0, Math.min(100, Math.round(sum))); const confidence = fired.length === 0 ? 0.1 : Math.min(0.99, Math.abs(sum) / fired.length / 50 + fired.length * 0.05);

Hay dos detalles que confunden a la gente. Primero, el confidence de la respuesta no es la probabilidad de fraude. Crece con el número de motivos y su tamaño medio, así que cuatro motivos modestos pueden aportar más confianza que uno grande. Una consulta sin motivos devuelve 0,1. Segundo, el orden de detection_methods es el orden en que el código los comprueba, no su tamaño. No trates la primera entrada como el motivo principal.

Otros proveedores exponen los motivos de otra forma. Las respuestas de minFraud de MaxMind incluyen risk_score_reasons: multiplicadores sobre la puntuación de riesgo, cada uno con códigos como ANONYMOUS_IP, y MaxMind señala que "normalmente solo se devuelven para transacciones de riesgo medio a alto". Sigma Identity Fraud de Socure combina una puntuación entre 0,001 y 0,999 con códigos de motivo que "proporcionan información detallada para ayudarte a entender los factores que influyeron en la puntuación de riesgo de fraude". Los motivos de GeoIPHub son puntos que se suman, y se enumera cada motivo que movió la puntuación, sea cual sea la puntuación.

Comprobamos que la aritmética se cumple con datos en vivo. Estas siete consultas sin clave se hicieron el 29 de octubre de 2026 entre las 04:43:09 y las 04:43:54 UTC, con unos siete segundos de separación, y cada puntuación y cada confianza se reconstruyen exactamente a partir de sus motivos:

IP (qué es)detection_methodsSumaPuntuación, acciónconfidence
185.220.101.1 (nodo de salida de Tor)tor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer108.05100, block0.74
185.213.155.73 (Mullvad, en su lista)known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter101.5100, block0.71
5.39.1.230 (AhrefsBot)datacenter_blocklisted, no_ptr_datacenter, verified_crawler, known_spammer35.035, review0.375
45.33.32.156 (scanme.nmap.org, Linode)datacenter_ip10.010, allow0.25
104.28.46.99 (iCloud Private Relay)relay_ip8.59, allow0.22
107.178.192.1 (fetcher de Google activado por el usuario)datacenter_ip, rdns_hosting, verified_crawler-12.50, allow0.23
66.249.66.1 (Googlebot)datacenter_ip, verified_crawler-18.50, allow0.285

Recorrido por una respuesta real: AhrefsBot con 35, review

La dirección 5.39.1.230 de AhrefsBot obtuvo 35, review, porque tres motivos sumaron 63,5 puntos y su coincidencia de rastreador verificado restó 28,5. Es el mejor caso didáctico porque sus motivos tiran en ambas direcciones. Esta es la respuesta recortada de la consulta de las 04:43:09 UTC (meta.last_classified_at 2026-10-29T04:43:09.547Z), con los valores sin editar:

GeoIPHub API
curl https://api.geoiphub.com/v1/lookup/5.39.1.230 \ -H "x-api-key: YOUR_API_KEY"
GeoIPHub API
{ "ip": "5.39.1.230", "asn": { "asn": 16276, "org": "OVH - OVH SAS", "asn_type": "hosting" }, "detection": { "is_vpn": false, "is_proxy": false, "is_hosting": true }, "threat": { "is_spammer": true, "dnsbl_sources": ["zen.spamhaus.org"], "crawler": { "verified": true, "name": "AhrefsBot", "operator": "Ahrefs", "verification_method": "ip_range_list" } }, "dns": { "ptr_record": "none" }, "scoring": { "fraud_score": 35, "confidence": 0.375, "recommended_action": "review", "detection_methods": ["datacenter_blocklisted", "no_ptr_datacenter", "verified_crawler", "known_spammer"] } }

Cada motivo corresponde a una línea de aritmética:

MotivoPor qué se activó aquíPuntos × confianzaSuma
datacenter_blocklistedDirección de hosting de OVH que además está en una lista de spam30 × 0.75+22.5
no_ptr_datacenterDirección de hosting sin DNS inverso en nuestros registros10 × 0.50+5.0
verified_crawlerDentro de los rangos de IP de rastreador publicados por Ahrefs-30 × 0.95-28.5
known_spammerListada en zen.spamhaus.org40 × 0.90+36.0
Total35.0, review

Quita la coincidencia de rastreador y la suma es 63,5, que se redondea a 64: verificación adicional. El archivo de rangos verificado movió a un rastreador real y declarado de un desafío a una revisión registrada. No lo movió a allow, porque un motivo exculpatorio es un peso, no una lista de permitidos. Una entrada de Spamhaus en la misma dirección sigue contando.

Dónde se equivoca esta respuesta

Uno de los cuatro motivos es un hueco nuestro. no_ptr_datacenter dice que la dirección no tiene DNS inverso, pero dig -x 5.39.1.230 a las 04:44 UTC devolvió proxy-fr005-cip7.ahrefs.net. El motivo lee nuestros registros PTR almacenados, y ese registro falta.

Corregir el hueco no bajaría esta puntuación, y el código muestra por qué. Nuestro clasificador de PTR interpreta cualquier nombre de host que contenga "proxy" como un patrón de proxy. Así que, con el registro almacenado, no_ptr_datacenter (+5) se sustituiría por rdns_proxy (+14), y la puntuación subiría al menos a 44. Seguiría siendo revisión, pero por un nombre de host que Ahrefs eligió para la salida de su rastreador, no por un anonimizador. Hemos registrado ambas cosas. Lee no_ptr_datacenter y los motivos rdns_* como evidencia débil, que es lo que ya indican sus pesos.

Motivos exculpatorios: cinco pueden restar, y se detienen en cero

Los motivos exculpatorios tienen puntos negativos, así que bajan la suma, pero la puntuación nunca baja de 0. La configuración de puntuación de GeoIPHub tiene seis, y cinco pueden activarse hoy:

MotivoPuntos × confianzaRestaSe activa cuando
verified_crawler-30 × 0.9528.5La dirección está dentro de uno de los 19 archivos oficiales de rangos de IP de rastreadores (Googlebot, Bingbot, GPTBot, ClaudeBot, AhrefsBot y otros)
residential_isp-20 × 0.8517Línea de banda ancha doméstica sin evidencia de VPN, proxy ni Tor
rdns_residential-20 × 0.8016El DNS inverso parece de una línea doméstica (dsl, pool, dynamic, cable, customer)
mobile_carrier-15 × 0.8012Red móvil (datos del operador, un nombre de host móvil o nuestro indicador de CGNAT) sin evidencia de anonimizador
rdns_mobile-10 × 0.707El DNS inverso parece de una red móvil
rdns_cgnat-15 × 0.7010.5Hoy nunca se activa: nuestro clasificador de nombres de host no tiene ningún patrón de CGNAT

El descuento por rastreador verificado se ve en la consulta de Googlebot. datacenter_ip sumó 10, verified_crawler restó 28,5 y la API devolvió 0. El sobrante de menos 18,5 se descarta. No se acumula como crédito frente a un motivo posterior, y es el comportamiento correcto: un rango verificado no debería poder ocultar una entrada en una lista de botnets. Los 19 archivos de rangos que hay detrás de verified_crawler se enumeran, con sus fechas y un generador de listas de permitidos, en nuestra lista de IP de rastreadores verificados; cómo verificar Googlebot por IP trata en detalle los archivos de Google.

No podemos mostrarte el descuento residencial con una dirección en vivo, porque publicar la consulta de una conexión doméstica identificaría a un hogar. Así que aquí tienes la ruta del código en prosa. Los motivos residenciales dependen del DNS inverso: nuestro código considera residencial una línea solo cuando su nombre de host PTR coincide con un patrón doméstico como dsl, pool o dynamic. Cuando coincide, salvo que la línea también esté marcada como móvil o CGNAT, residential_isp (-17) y rdns_residential (-16) se activan juntos, para un total de menos 33. Una línea móvil o con CGNAT recibe mobile_carrier (-12) en lugar de residential_isp, así que ese par suma menos 28. Una línea doméstica cuyo ISP no publica DNS inverso, o que nombra sus hosts con un patrón que no reconocemos, no recibe ningún descuento. Sin nada más en su contra, simplemente obtiene 0. Es la misma puntuación, así que el hueco solo importa cuando se activan otros motivos.

Los descuentos también se invierten. Si una línea residencial tiene evidencia de proxy, Tor o protocolo VPN (una etiqueta IPsec por sí sola no cuenta), residential_isp se sustituye por residential_with_threat (+21,25). Una línea móvil hace lo mismo con mobile_with_threat (+16). El descuento por parecer un hogar se retira en el momento en que el hogar empieza a reenviar tráfico.

Junto a los descuentos hay dos límites. Una dirección de relay tiene un máximo de 60, así que una salida de iCloud Private Relay nunca puede llegar a block; explicamos cómo detectar el tráfico de Private Relay y WARP y por qué conviene dejarlo pasar. Una dirección que nuestro paso de CGNAT marca tiene un máximo de 50, salvo que tenga evidencia propia de VPN, proxy, Tor, protocolo VPN, botnet o abuso.

Cada valor de detection_methods, campo por campo

El código de puntuación de GeoIPHub puede nombrar 41 motivos, y 36 de ellos pueden aparecer hoy en una respuesta. Las tablas siguientes enumeran los 36 con sus puntos, su confianza y su aportación, agrupados según la pregunta que responde cada uno.

¿Es la dirección un anonimizador? Estos proceden de la lista de nodos de salida del Tor Project, de las listas de servidores publicadas por los proveedores, de nuestros propios sondeos de protocolo y de una lista de proxies de terceros. Los sondeos cubren SOCKS5, SOCKS4, HTTP CONNECT, HTTP forward, OpenVPN, IKE (v1 y v2), PPTP y L2TP. No hay sondeo de WireGuard.

Valor de detection_methodsPuntos × confianzaSumaQué significa
tor_exit45 × 0.9944.55En la lista oficial de nodos de salida del Tor Project, que se vuelve a leer cada 6 horas
known_vpn_server40 × 0.9036is_vpn es true: en la lista de servidores de un proveedor, dentro de una red que sabemos que opera servidores VPN, o respondió a nuestro sondeo de protocolo VPN
multi_source_vpn30 × 0.8525.5Una VPN cuyo registro WHOIS o RDAP también contiene palabras clave de VPN, de modo que dos fuentes coinciden
openvpn_open35 × 0.9031.5Nuestro sondeo obtuvo una respuesta OpenVPN de la dirección
ipsec_open30 × 0.8024Nuestro sondeo obtuvo una respuesta IKE, o la lista de servidores del proveedor etiqueta el servidor para IKEv2 (lo hacen las listas de NordVPN, Surfshark y Windscribe)
pptp_open30 × 0.9227.6Nuestro sondeo obtuvo una respuesta PPTP
l2tp_open30 × 0.8525.5Nuestro sondeo obtuvo una respuesta L2TP
wireguard_open35 × 0.7024.5La lista de servidores publicada por el proveedor de VPN etiqueta este servidor como WireGuard. No es un handshake
socks5_open35 × 0.9533.25Un proxy SOCKS5 o SOCKS4 respondió a nuestro sondeo
http_proxy_open35 × 0.9533.25Un proxy HTTP CONNECT o HTTP forward respondió a nuestro sondeo
blocklist_proxy25 × 0.7017.5Marcada como proxy sin un listener SOCKS o HTTP propio, como una dirección de salida a la que vimos que un proxy abierto entregaba nuestro tráfico de prueba
proxy_observed_third_party25 × 0.7017.5En una lista de terceros de direcciones vistas reenviando tráfico como proxy en el último día
residential_proxy40 × 0.9036Un proxy que marcamos nosotros mismos en una línea que nuestros datos consideran residencial o móvil. Una inferencia aproximada, no detección de proxies residenciales
relay_ip10 × 0.858.5Una salida de relay de privacidad como iCloud Private Relay; además limita la puntuación a 60

¿Se ha portado mal la dirección? Estos proceden de tres zonas DNSBL y de nuestras fuentes de abuso y de botnets.

Valor de detection_methodsPuntos × confianzaSumaQué significa
known_spammer40 × 0.9036Listada en zen.spamhaus.org, b.barracudacentral.org o bl.spamcop.net
abusive_listed30 × 0.8024Listada en nuestras fuentes de abuso, o en al menos dos de las tres zonas DNSBL
botnet_c250 × 0.9547.5Una fuente de botnets la lista como servidor de mando y control
botnet_infected35 × 0.8028Una fuente de botnets la lista con cualquier otro papel, como una máquina infectada

¿Es infraestructura de servidores? Hosting significa uno de 853 ASN de hosting seleccionados, un rango de los 10 proveedores de nube que cargamos o un rango anycast. Solo puede activarse uno de los tres motivos datacenter_*, empezando por el más fuerte.

Valor de detection_methodsPuntos × confianzaSumaQué significa
datacenter_with_vpn_proxy40 × 0.9036Dirección de hosting con cualquiera de las evidencias de protocolo VPN o proxy anteriores, incluida la etiqueta WireGuard de una lista
datacenter_blocklisted30 × 0.7522.5Dirección de hosting que además está en una lista de abuso, spam o botnets
datacenter_ip20 × 0.5010Dirección de hosting sin nada más en su contra
no_ptr_datacenter10 × 0.505Dirección de hosting sin DNS inverso en nuestros registros almacenados, que tienen huecos
whois_vpn_keywords20 × 0.7014El registro WHOIS o RDAP contiene palabras clave de VPN, pero la dirección no está marcada como VPN
whois_hosting15 × 0.558.25El registro WHOIS o RDAP contiene palabras clave de hosting, pero la dirección no está en nuestras listas de hosting

¿Qué dice su DNS inverso? Estos leen el nombre de host PTR almacenado con patrones sencillos, y por eso cada uno pesa poco.

Valor de detection_methodsPuntos × confianzaSumaQué significa
rdns_tor30 × 0.8024El nombre de host parece de un nodo de salida de Tor
rdns_vpn20 × 0.7515El nombre de host contiene "vpn" o el nombre de una marca de VPN
rdns_proxy20 × 0.7014El nombre de host contiene "proxy", "squid" o "socks"
rdns_hosting10 × 0.606El nombre de host parece de un servidor o de un host en la nube
fcrdns_mismatch5 × 0.402El nombre de host no vuelve a resolverse a la dirección
rdns_residential-20 × 0.80-16El nombre de host parece de una línea doméstica
rdns_mobile-10 × 0.70-7El nombre de host parece de una red móvil

¿Qué tipo de línea es y es un rastreador conocido? Los motivos de tipo de red siempre son uno de un par: el descuento sin evidencia de anonimizador, o la penalización con ella.

Valor de detection_methodsPuntos × confianzaSumaQué significa
residential_isp-20 × 0.85-17Línea residencial, deducida del DNS inverso, sin evidencia de anonimizador
residential_with_threat25 × 0.8521.25Línea residencial con evidencia de proxy, Tor o protocolo VPN (una etiqueta IPsec por sí sola no cuenta)
mobile_carrier-15 × 0.80-12Línea móvil sin evidencia de anonimizador
mobile_with_threat20 × 0.8016Línea móvil con evidencia de anonimizador
verified_crawler-30 × 0.95-28.5Dentro de un archivo oficial de rangos de IP de rastreadores, que se vuelve a descargar a diario

Cinco motivos que el código conoce pero nunca devuelve

Hay cinco nombres que existen en el código de puntuación de GeoIPHub pero que hoy no pueden aparecer en una respuesta, así que no construyas reglas que los esperen:

  • spoofed_crawler (+42,75). Nada en nuestro pipeline lo establece, y una consulta solo ve una IP, nunca un User-Agent. La comparación de un nombre de bot declarado con threat.crawler se hace en tu código.
  • honeypot_hit (+33,25). El recuento de honeypot es un marcador de posición que siempre vale 0.
  • known_vpn_asn (+22,5). Nuestro código solo etiqueta una red como VPN cuando la dirección ya es una VPN, así que known_vpn_server siempre gana.
  • rdns_cgnat (-10,5). Nuestro clasificador de nombres de host no tiene ningún patrón de CGNAT.
  • shadowsocks_suspected (+10). No tenemos sondeo de Shadowsocks, y ninguna de las listas de proveedores que cargamos etiqueta Shadowsocks.

El archivo de configuración también contiene otros 11 pesos que la ruta de consulta nunca lee, así que esos nombres tampoco llegan nunca a una respuesta. Preferimos enumerar un motivo inactivo antes que dejar que lo descubras esperando.

Escribe reglas sobre los motivos, no sobre el número bruto

La razón práctica para aprender estos nombres es que las reglas escritas sobre motivos sobreviven a nuestros huecos de datos, y las escritas sobre el total no. Nuestros umbrales de bloqueo para inicio de sesión, registro y pago fijan las bandas; dentro de ellas, unas pocas reglas a nivel de motivo hacen la mayor parte del trabajo:

  • Trata tor_exit, socks5_open, http_proxy_open y botnet_c2 como fuertes por sí solos: cada uno suma 33 o más y procede de una lista o de nuestro propio sondeo.
  • No actúes solo por no_ptr_datacenter, fcrdns_mismatch o cualquier motivo rdns_*. Valen entre 2 y 24 puntos y leen nombres de host almacenados que pueden faltar o estar desactualizados.
  • Lee verified_crawler junto con threat.crawler.verified y un operador que coincida con el bot que declara el User-Agent, nunca threat.crawler.name. Un rastreador verificado en una lista de spam, como AhrefsBot el 29 de octubre de 2026, va en tu lista de permitidos para el rastreo, no en tu proceso de pago.
  • Trata wireguard_open como evidencia de lista, no como resultado de un sondeo. Significa que la lista publicada por el proveedor dice que el servidor usa WireGuard.
  • Registra el array detection_methods completo con cada decisión. Es el rastro de auditoría que pedirá un agente de soporte o quien revise un contracargo.

Así queda en código, usando solo campos reales:

GeoIPHub API
const { recommended_action, detection_methods: why } = data.scoring; const strong = ["tor_exit", "socks5_open", "http_proxy_open", "botnet_c2"]; if (why.some((m) => strong.includes(m))) return block(why); // isCrawlPath is your own route check, not an API field. // claimMatchesOperator compares the bot your User-Agent names with // threat.crawler.operator; /blog/verified-crawler-ip-list has a working version. if (why.includes("verified_crawler") && isCrawlPath(req) && claimMatchesOperator(req, data.threat.crawler)) return allow(why); if (recommended_action === "block") return block(why); if (recommended_action === "step_up") return challenge(why); return allow(why);

Los motivos también te dicen de dónde viene la evidencia, algo que importa cuando un cliente la discute. known_vpn_server con vpn_confidence 95 significa la propia lista del proveedor; explicamos cómo identificamos el proveedor de VPN que hay detrás de una IP y qué indica cada valor de confianza. En cuanto a los sondeos, cómo funciona la detección de VPN y proxies explica de dónde vienen los motivos de anonimizador de más peso, y la lista completa de campos de datos IP documenta el resto de la respuesta.

Suma tú mismo una puntuación

Pega cualquier dirección en el comprobador gratuito de puntuación de fraude IP de GeoIPHub, copia sus motivos y reconstruye el número con las tablas anteriores. Si tu suma y nuestra puntuación no coinciden, uno de los dos tiene un bug, y nos gustaría saber cuál.

Preguntas frecuentes

¿Qué contiene scoring.detection_methods?

El nombre de cada motivo que modificó la puntuación, en el orden en que los comprueba el código de puntuación de GeoIPHub, no por su tamaño. Cada nombre tiene unos puntos fijos y un nivel de confianza en nuestra configuración de puntuación, y la puntuación es la suma de los puntos multiplicados por la confianza, redondeada y mantenida entre 0 y 100. El código de GeoIPHub puede nombrar 41 motivos; 36 pueden aparecer hoy en una respuesta.

¿Por qué un rastreador verificado sigue obteniendo una puntuación de revisión?

Porque en la puntuación de GeoIPHub verified_crawler es un peso, no una lista de permitidos. Resta 28,5 puntos (menos 30 con una confianza de 0,95). AhrefsBot en 5.39.1.230 también figuraba en una lista de Spamhaus el 29 de octubre de 2026, así que los motivos de spam y de lista de bloqueo pesaron más que el descuento: 35, review, frente a los 64 (step up) que obtendría sin la coincidencia de rastreador.

¿Puede una puntuación bajar de cero?

La suma ponderada sí puede; la puntuación no. Googlebot en 66.249.66.1 sumó menos 18,5 el 29 de octubre de 2026 (datacenter_ip más verified_crawler) y la API de GeoIPHub devolvió 0. El saldo negativo no se arrastra como crédito para ninguna otra cosa.

¿Significa wireguard_open que GeoIPHub completó un handshake de WireGuard?

No. GeoIPHub no tiene ningún sondeo de WireGuard. wireguard_open significa que la propia lista de servidores publicada por el proveedor de VPN etiqueta ese servidor como WireGuard. Nuestros sondeos cubren SOCKS5, SOCKS4, HTTP CONNECT, HTTP forward, OpenVPN, IKE (v1 y v2), PPTP y L2TP, así que openvpn_open, pptp_open, l2tp_open, socks5_open y http_proxy_open son resultados de sondeos.

¿Por qué veo no_ptr_datacenter en una dirección que tiene DNS inverso?

El motivo lee los registros de DNS inverso que GeoIPHub tiene almacenados, no una consulta en vivo, y esos registros tienen huecos. El 29 de octubre de 2026 se activó para AhrefsBot 5.39.1.230 y para el nodo de salida de Tor 185.220.101.1, mientras que dig -x resolvía ambas. Vale 5 puntos, así que escribe reglas sobre los motivos en los que confías y no sobre el recuento bruto.

Escrito por

Equipo de GeoIPHub

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.

Comparte este artículo
Más artículos

Artículos relacionados