Pular para o conteúdo
Prevenção de fraude

Motivos da pontuação de risco: como ler detection_methods campo a campo

Motivos da pontuação de risco, campo a campo: cada valor de detection_methods que o nosso código de pontuação retorna, o seu peso e uma consulta real em que um rastreador verificado reduziu 64 para 35.

PorEquipe GeoIPHubPublicadoAtualizadoTempo de leitura17 min de leitura
Muitos feixes de luz convergindo para um único ponto brilhante, representando motivos nomeados que somam uma pontuação de risco

Um cliente é bloqueado no checkout e escreve perguntando por quê. "Nosso fornecedor disse 92" encerra a conversa mal. "A sua conexão veio de um servidor de VPN listado com uma porta OpenVPN aberta" é uma resposta que você pode sustentar, reconsiderar ou ajustar. É isso que uma pontuação de fraude explicável oferece: códigos de motivo, não apenas um número.

Esta página é o dicionário dessas respostas. Para saber o que o número em si significa e onde ficam as faixas, comece por o que é uma pontuação de fraude de IP e como lê-la. Abaixo mostramos a aritmética, rastreamos uma resposta real motivo por motivo, tratamos dos cinco motivos que subtraem e listamos cada valor de detection_methods que o nosso código de pontuação pode retornar, com o seu peso e o que o faz disparar.

Placas translúcidas de espessuras diferentes equilibradas sobre um único eixo, representando sinais de pontuação ponderados
Cada motivo tem um peso; a pontuação é a soma, e os motivos são listados.

Os motivos da pontuação de risco se somam: pontos vezes confiança, depois um limite

Na pontuação do GeoIPHub, cada motivo contribui com os seus pontos multiplicados pela sua confiança, e a pontuação é o total arredondado, limitado entre 0 e 100. Não há nenhum modelo oculto por cima. Esta é a etapa de pontuação da nossa API (scoring.service.ts), reduzida à sua 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);

Dois detalhes confundem as pessoas. Primeiro, o confidence na resposta não é a probabilidade de fraude. Ele cresce com o número de motivos e o tamanho médio deles, então quatro motivos modestos podem ter mais confiança do que um grande. Uma consulta sem motivos retorna 0,1. Segundo, a ordem de detection_methods é a ordem em que o código os verifica, não o tamanho deles. Não trate a primeira entrada como o motivo principal.

Outros fornecedores expõem os motivos de forma diferente. As respostas do minFraud da MaxMind trazem risk_score_reasons: multiplicadores sobre a pontuação de risco, cada um com códigos como ANONYMOUS_IP, e a MaxMind observa que eles "geralmente só são retornados para transações de risco médio a alto". O Sigma Identity Fraud da Socure combina uma pontuação entre 0,001 e 0,999 com códigos de motivo que "fornecem informações detalhadas para ajudar você a entender os fatores que influenciaram a pontuação de risco de fraude". Os motivos do GeoIPHub são pontos aditivos, e todo motivo que mexeu na pontuação é listado, seja qual for a pontuação.

Verificamos que a aritmética se mantém com dados ao vivo. Estas sete consultas sem chave foram feitas em 29/10/2026 entre 04:43:09 e 04:43:54 UTC, com cerca de sete segundos de intervalo, e cada pontuação e confiança se reconstrói exatamente a partir dos seus motivos:

IP (o que é)detection_methodsSomaPontuação, açãoconfidence
185.220.101.1 (saída Tor)tor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer108.05100, block0.74
185.213.155.73 (Mullvad, na lista dela)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 do Google acionado por usuário)datacenter_ip, rdns_hosting, verified_crawler-12.50, allow0.23
66.249.66.1 (Googlebot)datacenter_ip, verified_crawler-18.50, allow0.285

Rastreando uma resposta real: AhrefsBot com 35, review

O 5.39.1.230 do AhrefsBot teve pontuação 35, review, porque três motivos somaram 63,5 pontos e a correspondência de rastreador verificado tirou 28,5. É o melhor caso didático porque os motivos puxam em direções opostas. Aqui está a resposta recortada da consulta das 04:43:09 UTC (meta.last_classified_at 2026-10-29T04:43:09.547Z), com os valores sem edição:

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 uma linha de aritmética:

MotivoPor que disparou aquiPontos × confiançaSoma
datacenter_blocklistedEndereço de hospedagem da OVH que também está em uma lista de spam30 × 0.75+22.5
no_ptr_datacenterEndereço de hospedagem sem DNS reverso nos nossos registros10 × 0.50+5.0
verified_crawlerDentro das faixas de IP de rastreador publicadas pela Ahrefs-30 × 0.95-28.5
known_spammerListado em zen.spamhaus.org40 × 0.90+36.0
Total35.0, review

Tire a correspondência de rastreador e a soma é 63,5, que arredonda para 64: step up. O arquivo de faixas verificado levou um rastreador real e declarado de um desafio para uma revisão registrada. Não o levou para allow, porque um motivo atenuante é um peso, não uma allowlist. Uma listagem na Spamhaus no mesmo endereço continua contando.

Onde esta resposta está errada

Um dos quatro motivos é uma lacuna nossa. no_ptr_datacenter diz que o endereço não tem DNS reverso, mas dig -x 5.39.1.230 às 04:44 UTC retornou proxy-fr005-cip7.ahrefs.net. O motivo lê os nossos registros PTR armazenados, e esse registro está faltando.

Corrigir a lacuna não reduziria essa pontuação, e o código mostra por quê. O nosso classificador de PTR lê qualquer hostname que contenha "proxy" como um padrão de proxy. Então, com o registro armazenado, no_ptr_datacenter (+5) seria substituído por rdns_proxy (+14), e a pontuação subiria para pelo menos 44. Continua sendo review, mas por causa de um hostname que a Ahrefs escolheu para a saída do seu rastreador, não por um anonimizador. Registramos as duas coisas. Leia no_ptr_datacenter e os motivos rdns_* como evidências fracas, que é o que os pesos deles já dizem.

Motivos atenuantes: cinco podem subtrair, e param em zero

Os motivos atenuantes têm pontos negativos, então reduzem a soma, mas a pontuação nunca cai abaixo de 0. A configuração de pontuação do GeoIPHub tem seis deles, e cinco podem disparar hoje:

MotivoPontos × confiançaSubtraiDispara quando
verified_crawler-30 × 0.9528.5O endereço está dentro de um dos 19 arquivos oficiais de faixas de IP de rastreadores (Googlebot, Bingbot, GPTBot, ClaudeBot, AhrefsBot e outros)
residential_isp-20 × 0.8517Linha de banda larga doméstica sem evidência de VPN, proxy ou Tor
rdns_residential-20 × 0.8016O DNS reverso parece de uma linha doméstica (dsl, pool, dynamic, cable, customer)
mobile_carrier-15 × 0.8012Rede móvel (dados da operadora, um hostname móvel ou o nosso sinalizador de CGNAT) sem evidência de anonimizador
rdns_mobile-10 × 0.707O DNS reverso parece de uma rede móvel
rdns_cgnat-15 × 0.7010.5Nunca dispara hoje: o nosso classificador de hostnames não tem padrão de CGNAT

O desconto de rastreador verificado aparece na consulta do Googlebot. datacenter_ip somou 10, verified_crawler tirou 28,5 e a API retornou 0. O saldo de menos 18,5 é descartado. Ele não vira crédito contra um motivo posterior, e esse é o comportamento certo: uma faixa verificada não deveria conseguir esconder uma listagem de botnet. Os 19 arquivos de faixas por trás de verified_crawler estão listados, com as suas datas e um gerador de allowlist, na nossa lista de IPs de rastreadores verificados; como verificar o Googlebot por IP trata dos arquivos do Google em detalhe.

Não podemos mostrar o desconto residencial em um endereço ao vivo, porque publicar a consulta de uma conexão doméstica identificaria uma família. Então aqui está o caminho do código em texto. Os motivos residenciais dependem do DNS reverso: o nosso código só considera uma linha residencial quando o hostname PTR dela corresponde a um padrão doméstico como dsl, pool ou dynamic. Quando isso acontece, a menos que a linha também esteja sinalizada como móvel ou CGNAT, residential_isp (-17) e rdns_residential (-16) disparam juntos, somando menos 33. Uma linha móvel ou de CGNAT recebe mobile_carrier (-12) no lugar de residential_isp, então esse par soma menos 28. Uma linha doméstica cujo ISP não publica DNS reverso, ou nomeia os hosts em um padrão que não reconhecemos, não recebe nenhum dos descontos. Sem mais nada contra ela, simplesmente tem pontuação 0. É a mesma pontuação, então a lacuna só importa quando outros motivos disparam.

Os descontos também se invertem. Se uma linha residencial tem evidência de proxy, Tor ou protocolo de VPN (uma marcação de IPsec sozinha não conta), residential_isp é substituído por residential_with_threat (+21,25). Uma linha móvel faz o mesmo com mobile_with_threat (+16). Um desconto por parecer uma casa é retirado no momento em que a casa começa a retransmitir tráfego.

Dois limites ficam ao lado dos descontos. Um endereço de relay é limitado a 60, então uma saída do iCloud Private Relay nunca chega a block; explicamos como detectar o tráfego do Private Relay e do WARP e por que deixá-lo passar. Um endereço que a nossa etapa de CGNAT sinaliza é limitado a 50, a menos que tenha evidência própria de VPN, proxy, Tor, protocolo de VPN, botnet ou abuso.

Cada valor de detection_methods, campo a campo

O código de pontuação do GeoIPHub pode nomear 41 motivos, e 36 deles podem aparecer em uma resposta hoje. As tabelas abaixo listam todos os 36 com os seus pontos, confiança e contribuição, agrupados pela pergunta que cada um responde.

O endereço é um anonimizador? Estes vêm da lista de saídas do Tor Project, das listas de servidores publicadas pelos provedores, das nossas próprias sondagens de protocolo e de uma lista de proxies de terceiros. As sondagens cobrem SOCKS5, SOCKS4, HTTP CONNECT, HTTP forward, OpenVPN, IKE (v1 e v2), PPTP e L2TP. Não há sondagem de WireGuard.

Valor de detection_methodsPontos × confiançaSomaO que significa
tor_exit45 × 0.9944.55Está na lista oficial de saídas do Tor Project, relida a cada 6 horas
known_vpn_server40 × 0.9036is_vpn é true: está na lista de servidores de um provedor, dentro de uma rede que sabemos que roda servidores de VPN, ou respondeu à nossa sondagem de protocolo de VPN
multi_source_vpn30 × 0.8525.5Uma VPN cujo registro WHOIS ou RDAP também tem palavras-chave de VPN, então duas fontes concordam
openvpn_open35 × 0.9031.5A nossa sondagem recebeu uma resposta OpenVPN do endereço
ipsec_open30 × 0.8024A nossa sondagem recebeu uma resposta IKE, ou a lista de servidores do provedor marca o servidor para IKEv2 (as listas da NordVPN, da Surfshark e da Windscribe fazem isso)
pptp_open30 × 0.9227.6A nossa sondagem recebeu uma resposta PPTP
l2tp_open30 × 0.8525.5A nossa sondagem recebeu uma resposta L2TP
wireguard_open35 × 0.7024.5A lista de servidores publicada pelo provedor de VPN marca este servidor como WireGuard. Não é um handshake
socks5_open35 × 0.9533.25Um proxy SOCKS5 ou SOCKS4 respondeu à nossa sondagem
http_proxy_open35 × 0.9533.25Um proxy HTTP CONNECT ou HTTP forward respondeu à nossa sondagem
blocklist_proxy25 × 0.7017.5Sinalizado como proxy sem um listener SOCKS ou HTTP próprio, como um endereço de saída para o qual vimos um proxy aberto repassar o nosso tráfego de teste
proxy_observed_third_party25 × 0.7017.5Está em uma lista de terceiros com endereços vistos retransmitindo tráfego no último dia
residential_proxy40 × 0.9036Um proxy que nós mesmos sinalizamos em uma linha que os nossos dados consideram residencial ou móvel. Uma inferência aproximada, não detecção de proxy residencial
relay_ip10 × 0.858.5Uma saída de relay de privacidade como o iCloud Private Relay; também limita a pontuação a 60

O endereço se comportou mal? Estes vêm de três zonas de DNSBL e dos nossos feeds de abuso e de botnets.

Valor de detection_methodsPontos × confiançaSomaO que significa
known_spammer40 × 0.9036Listado em zen.spamhaus.org, b.barracudacentral.org ou bl.spamcop.net
abusive_listed30 × 0.8024Listado nos nossos feeds de abuso, ou em pelo menos duas das três zonas de DNSBL
botnet_c250 × 0.9547.5Um feed de botnets o lista como servidor de comando e controle
botnet_infected35 × 0.8028Um feed de botnets o lista em qualquer outro papel, como uma máquina infectada

É infraestrutura de servidores? Hospedagem significa um dos 853 ASNs de hospedagem curados, uma faixa dos 10 provedores de nuvem que carregamos ou uma faixa anycast. Só um dos três motivos datacenter_* pode disparar, do mais forte para o mais fraco.

Valor de detection_methodsPontos × confiançaSomaO que significa
datacenter_with_vpn_proxy40 × 0.9036Endereço de hospedagem com qualquer evidência de protocolo de VPN ou proxy acima, incluindo a marcação de WireGuard de uma lista
datacenter_blocklisted30 × 0.7522.5Endereço de hospedagem que também está em uma lista de abuso, spam ou botnet
datacenter_ip20 × 0.5010Endereço de hospedagem sem mais nada contra ele
no_ptr_datacenter10 × 0.505Endereço de hospedagem sem DNS reverso nos nossos registros armazenados, que têm lacunas
whois_vpn_keywords20 × 0.7014O registro WHOIS ou RDAP tem palavras-chave de VPN, mas o endereço não está sinalizado como VPN
whois_hosting15 × 0.558.25O registro WHOIS ou RDAP tem palavras-chave de hospedagem, mas o endereço não está nas nossas listas de hospedagem

O que o DNS reverso dele diz? Estes leem o hostname PTR armazenado com padrões simples, e é por isso que cada um tem peso leve.

Valor de detection_methodsPontos × confiançaSomaO que significa
rdns_tor30 × 0.8024O hostname parece de uma saída Tor
rdns_vpn20 × 0.7515O hostname contém "vpn" ou o nome de uma marca de VPN
rdns_proxy20 × 0.7014O hostname contém "proxy", "squid" ou "socks"
rdns_hosting10 × 0.606O hostname parece de um servidor ou host de nuvem
fcrdns_mismatch5 × 0.402O hostname não resolve de volta para o endereço
rdns_residential-20 × 0.80-16O hostname parece de uma linha doméstica
rdns_mobile-10 × 0.70-7O hostname parece de uma rede móvel

Que tipo de linha é, e é um rastreador conhecido? Os motivos de tipo de rede são sempre um de um par: o desconto sem evidência de anonimizador ou a penalidade com ela.

Valor de detection_methodsPontos × confiançaSomaO que significa
residential_isp-20 × 0.85-17Linha residencial, inferida pelo DNS reverso, sem evidência de anonimizador
residential_with_threat25 × 0.8521.25Linha residencial com evidência de proxy, Tor ou protocolo de VPN (uma marcação de IPsec sozinha não conta)
mobile_carrier-15 × 0.80-12Linha móvel sem evidência de anonimizador
mobile_with_threat20 × 0.8016Linha móvel com evidência de anonimizador
verified_crawler-30 × 0.95-28.5Dentro de um arquivo oficial de faixas de IP de rastreadores, baixado novamente todos os dias

Cinco motivos que o código conhece, mas nunca retorna

Cinco nomes existem no código de pontuação do GeoIPHub, mas não podem aparecer em uma resposta hoje, então não crie regras que esperem por eles:

  • spoofed_crawler (+42,75). Nada no nosso pipeline o define, e uma consulta só vê um IP, nunca um User-Agent. A comparação entre o nome de bot alegado e threat.crawler acontece no seu código.
  • honeypot_hit (+33,25). A contagem de honeypot é um placeholder que é sempre 0.
  • known_vpn_asn (+22,5). O nosso código só rotula uma rede como VPN quando o endereço já é uma VPN, então known_vpn_server sempre vence.
  • rdns_cgnat (-10,5). O nosso classificador de hostnames não tem padrão de CGNAT.
  • shadowsocks_suspected (+10). Não temos sondagem de Shadowsocks, e nenhuma lista de provedores que carregamos marca Shadowsocks.

O arquivo de configuração também guarda mais 11 pesos que o caminho de consulta nunca lê, então esses nomes também nunca chegam a uma resposta. Preferimos listar um motivo inativo a deixar você descobri-lo esperando.

Escreva regras com base nos motivos, não no número bruto

A razão prática para aprender esses nomes é que regras escritas com base nos motivos sobrevivem às nossas lacunas de dados, e regras escritas com base no total não. Os nossos limites de bloqueio para login, cadastro e checkout definem as faixas; dentro delas, algumas regras no nível dos motivos fazem a maior parte do trabalho:

  • Trate tor_exit, socks5_open, http_proxy_open e botnet_c2 como fortes por si sós: cada um soma 33 ou mais e vem de uma lista ou da nossa própria sondagem.
  • Não aja com base apenas em no_ptr_datacenter, fcrdns_mismatch ou em qualquer motivo rdns_*. Eles valem de 2 a 24 pontos e leem hostnames armazenados que podem estar faltando ou desatualizados.
  • Leia verified_crawler junto com threat.crawler.verified e um operador que corresponda ao bot que o User-Agent alega, nunca threat.crawler.name. Um rastreador verificado em uma lista de spam, como o AhrefsBot em 29 de outubro de 2026, pertence à sua allowlist de rastreamento, não ao seu checkout.
  • Trate wireguard_open como evidência de lista, não como resultado de sondagem. Significa que a lista publicada pelo provedor diz que o servidor roda WireGuard.
  • Registre o array detection_methods completo em cada decisão. É a trilha de auditoria que um agente de suporte ou um revisor de chargeback vai pedir.

Veja como isso fica em código, usando apenas campos reais:

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);

Os motivos também dizem de onde vem a evidência, o que importa quando um cliente a contesta. known_vpn_server com vpn_confidence 95 significa a própria lista do provedor; explicamos como nomeamos o provedor de VPN por trás de um IP e o que cada valor de confiança diz. Do lado das sondagens, como funciona a detecção de VPN e proxy mostra de onde vêm os motivos de anonimizador mais pesados, e a lista completa de campos de dados de IP documenta o restante da resposta.

Some uma pontuação você mesmo

Cole qualquer endereço no verificador gratuito de pontuação de fraude de IP do GeoIPHub, copie os motivos e reconstrua o número a partir das tabelas acima. Se a sua soma e a nossa pontuação discordarem, um de nós tem um bug, e gostaríamos de saber qual.

Perguntas frequentes

O que scoring.detection_methods contém?

O nome de cada motivo que alterou a pontuação, na ordem em que o código de pontuação do GeoIPHub os verifica, não por tamanho. Cada nome tem pontos fixos e uma confiança na nossa configuração de pontuação, e a pontuação é a soma de pontos vezes confiança, arredondada e mantida entre 0 e 100. O código do GeoIPHub pode nomear 41 motivos; 36 podem aparecer em uma resposta hoje.

Por que um rastreador verificado ainda recebe uma pontuação de revisão?

Porque, na pontuação do GeoIPHub, verified_crawler é um peso, não uma allowlist. Ele subtrai 28,5 pontos (menos 30 com confiança de 0,95). O AhrefsBot em 5.39.1.230 também tinha uma listagem na Spamhaus em 29/10/2026, então os motivos de spam e de blocklist superaram o desconto: 35, review, abaixo dos 64 (step up) que teria sem a correspondência de rastreador.

Uma pontuação pode ficar abaixo de zero?

A soma ponderada pode, a pontuação não. O Googlebot em 66.249.66.1 somou menos 18,5 em 29/10/2026 (datacenter_ip mais verified_crawler) e a API do GeoIPHub retornou 0. O saldo negativo não é transferido como crédito para mais nada.

wireguard_open significa que o GeoIPHub completou um handshake de WireGuard?

Não. O GeoIPHub não tem sondagem de WireGuard. wireguard_open significa que a própria lista de servidores publicada pelo provedor de VPN marca aquele servidor como WireGuard. As nossas sondagens cobrem SOCKS5, SOCKS4, HTTP CONNECT, HTTP forward, OpenVPN, IKE (v1 e v2), PPTP e L2TP, então openvpn_open, pptp_open, l2tp_open, socks5_open e http_proxy_open são resultados de sondagem.

Por que vejo no_ptr_datacenter em um endereço que tem DNS reverso?

O motivo lê os registros de DNS reverso armazenados pelo GeoIPHub, não uma consulta ao vivo, e esses registros têm lacunas. Em 29/10/2026 ele disparou para o AhrefsBot 5.39.1.230 e para a saída Tor 185.220.101.1, enquanto dig -x resolveu os dois. Ele vale 5 pontos, então escreva regras com base nos motivos em que você confia, não na contagem bruta.

Escrito por

Equipe GeoIPHub

A equipe por trás da API do GeoIPHub

Escrito pela equipe do GeoIPHub, as pessoas que constroem a API de inteligência de IP do GeoIPHub e seu scanner. Os rascunhos são preparados com auxílio de IA e editados pela equipe; os exemplos de API são consultas reais à API em produção, salvo quando indicados como ilustrativos.

Compartilhe este artigo
Mais artigos

Artigos relacionados