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.

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.

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:
// 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_methods | Suma | Puntuación, acción | confidence |
|---|---|---|---|---|
| 185.220.101.1 (nodo de salida de Tor) | tor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer | 108.05 | 100, block | 0.74 |
| 185.213.155.73 (Mullvad, en su lista) | known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter | 101.5 | 100, block | 0.71 |
| 5.39.1.230 (AhrefsBot) | datacenter_blocklisted, no_ptr_datacenter, verified_crawler, known_spammer | 35.0 | 35, review | 0.375 |
| 45.33.32.156 (scanme.nmap.org, Linode) | datacenter_ip | 10.0 | 10, allow | 0.25 |
| 104.28.46.99 (iCloud Private Relay) | relay_ip | 8.5 | 9, allow | 0.22 |
| 107.178.192.1 (fetcher de Google activado por el usuario) | datacenter_ip, rdns_hosting, verified_crawler | -12.5 | 0, allow | 0.23 |
| 66.249.66.1 (Googlebot) | datacenter_ip, verified_crawler | -18.5 | 0, allow | 0.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:
curl https://api.geoiphub.com/v1/lookup/5.39.1.230 \
-H "x-api-key: YOUR_API_KEY"
{
"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:
| Motivo | Por qué se activó aquí | Puntos × confianza | Suma |
|---|---|---|---|
| datacenter_blocklisted | Dirección de hosting de OVH que además está en una lista de spam | 30 × 0.75 | +22.5 |
| no_ptr_datacenter | Dirección de hosting sin DNS inverso en nuestros registros | 10 × 0.50 | +5.0 |
| verified_crawler | Dentro de los rangos de IP de rastreador publicados por Ahrefs | -30 × 0.95 | -28.5 |
| known_spammer | Listada en zen.spamhaus.org | 40 × 0.90 | +36.0 |
| Total | 35.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:
| Motivo | Puntos × confianza | Resta | Se activa cuando |
|---|---|---|---|
| verified_crawler | -30 × 0.95 | 28.5 | La 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.85 | 17 | Línea de banda ancha doméstica sin evidencia de VPN, proxy ni Tor |
| rdns_residential | -20 × 0.80 | 16 | El DNS inverso parece de una línea doméstica (dsl, pool, dynamic, cable, customer) |
| mobile_carrier | -15 × 0.80 | 12 | Red móvil (datos del operador, un nombre de host móvil o nuestro indicador de CGNAT) sin evidencia de anonimizador |
| rdns_mobile | -10 × 0.70 | 7 | El DNS inverso parece de una red móvil |
| rdns_cgnat | -15 × 0.70 | 10.5 | Hoy 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_methods | Puntos × confianza | Suma | Qué significa |
|---|---|---|---|
| tor_exit | 45 × 0.99 | 44.55 | En la lista oficial de nodos de salida del Tor Project, que se vuelve a leer cada 6 horas |
| known_vpn_server | 40 × 0.90 | 36 | is_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_vpn | 30 × 0.85 | 25.5 | Una VPN cuyo registro WHOIS o RDAP también contiene palabras clave de VPN, de modo que dos fuentes coinciden |
| openvpn_open | 35 × 0.90 | 31.5 | Nuestro sondeo obtuvo una respuesta OpenVPN de la dirección |
| ipsec_open | 30 × 0.80 | 24 | Nuestro 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_open | 30 × 0.92 | 27.6 | Nuestro sondeo obtuvo una respuesta PPTP |
| l2tp_open | 30 × 0.85 | 25.5 | Nuestro sondeo obtuvo una respuesta L2TP |
| wireguard_open | 35 × 0.70 | 24.5 | La lista de servidores publicada por el proveedor de VPN etiqueta este servidor como WireGuard. No es un handshake |
| socks5_open | 35 × 0.95 | 33.25 | Un proxy SOCKS5 o SOCKS4 respondió a nuestro sondeo |
| http_proxy_open | 35 × 0.95 | 33.25 | Un proxy HTTP CONNECT o HTTP forward respondió a nuestro sondeo |
| blocklist_proxy | 25 × 0.70 | 17.5 | Marcada 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_party | 25 × 0.70 | 17.5 | En una lista de terceros de direcciones vistas reenviando tráfico como proxy en el último día |
| residential_proxy | 40 × 0.90 | 36 | Un 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_ip | 10 × 0.85 | 8.5 | Una 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_methods | Puntos × confianza | Suma | Qué significa |
|---|---|---|---|
| known_spammer | 40 × 0.90 | 36 | Listada en zen.spamhaus.org, b.barracudacentral.org o bl.spamcop.net |
| abusive_listed | 30 × 0.80 | 24 | Listada en nuestras fuentes de abuso, o en al menos dos de las tres zonas DNSBL |
| botnet_c2 | 50 × 0.95 | 47.5 | Una fuente de botnets la lista como servidor de mando y control |
| botnet_infected | 35 × 0.80 | 28 | Una 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_methods | Puntos × confianza | Suma | Qué significa |
|---|---|---|---|
| datacenter_with_vpn_proxy | 40 × 0.90 | 36 | Dirección de hosting con cualquiera de las evidencias de protocolo VPN o proxy anteriores, incluida la etiqueta WireGuard de una lista |
| datacenter_blocklisted | 30 × 0.75 | 22.5 | Dirección de hosting que además está en una lista de abuso, spam o botnets |
| datacenter_ip | 20 × 0.50 | 10 | Dirección de hosting sin nada más en su contra |
| no_ptr_datacenter | 10 × 0.50 | 5 | Dirección de hosting sin DNS inverso en nuestros registros almacenados, que tienen huecos |
| whois_vpn_keywords | 20 × 0.70 | 14 | El registro WHOIS o RDAP contiene palabras clave de VPN, pero la dirección no está marcada como VPN |
| whois_hosting | 15 × 0.55 | 8.25 | El 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_methods | Puntos × confianza | Suma | Qué significa |
|---|---|---|---|
| rdns_tor | 30 × 0.80 | 24 | El nombre de host parece de un nodo de salida de Tor |
| rdns_vpn | 20 × 0.75 | 15 | El nombre de host contiene "vpn" o el nombre de una marca de VPN |
| rdns_proxy | 20 × 0.70 | 14 | El nombre de host contiene "proxy", "squid" o "socks" |
| rdns_hosting | 10 × 0.60 | 6 | El nombre de host parece de un servidor o de un host en la nube |
| fcrdns_mismatch | 5 × 0.40 | 2 | El nombre de host no vuelve a resolverse a la dirección |
| rdns_residential | -20 × 0.80 | -16 | El nombre de host parece de una línea doméstica |
| rdns_mobile | -10 × 0.70 | -7 | El 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_methods | Puntos × confianza | Suma | Qué significa |
|---|---|---|---|
| residential_isp | -20 × 0.85 | -17 | Línea residencial, deducida del DNS inverso, sin evidencia de anonimizador |
| residential_with_threat | 25 × 0.85 | 21.25 | Línea residencial con evidencia de proxy, Tor o protocolo VPN (una etiqueta IPsec por sí sola no cuenta) |
| mobile_carrier | -15 × 0.80 | -12 | Línea móvil sin evidencia de anonimizador |
| mobile_with_threat | 20 × 0.80 | 16 | Línea móvil con evidencia de anonimizador |
| verified_crawler | -30 × 0.95 | -28.5 | Dentro 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 conthreat.crawlerse 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í queknown_vpn_serversiempre 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:
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.
Profundiza
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.
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.


