Lista completa dos campos de dados de IP que você precisa conhecer
Todos os campos de dados de IP de uma resposta real da GeoIPHub: 103 campos em 10 grupos, cada um com tipo, um valor de exemplo real e a indicação clara dos 11 campos reservados.

Pergunte "quais dados é possível obter de um endereço IP?" e a maioria das respostas para em "uma localização aproximada". Essa é a menor parte do panorama da inteligência de IP. O mesmo endereço também diz qual rede é dona dele, se é uma linha doméstica ou um servidor alugado, se é uma VPN, uma saída Tor ou um relay de privacidade, se alguma blocklist o inclui e se é um rastreador verificado. Para entender como os campos de detecção são construídos, veja como funciona a detecção de VPN e proxy.
Esta referência mudou bastante desde a versão de julho. A API ganhou três campos, nossas tabelas tinham deixado dois de fora, a pontuação de uma saída Tor passou de 79 para 100, e vários campos retornam valores que as tabelas de julho descreviam de forma errada. Todos os exemplos abaixo vêm de GET api.geoiphub.com/v1/lookup/{ip} em 22 de outubro de 2026, e você pode reproduzir qualquer um deles com a ferramenta gratuita de consulta de IP.

Contamos 103 campos em sete respostas reais em 22 de outubro de 2026
Obtivemos sete respostas em 22 de outubro de 2026, entre 04:56 e 04:57 UTC, e contamos 103 campos em 10 grupos. Cinco campos são novos nesta lista desde julho, e 11 são placeholders. Os sete endereços eram infraestrutura pública, escolhidos para acionar grupos diferentes:
| IP | O que é | Veredito em 22 out. 2026 |
|---|---|---|
| 185.220.101.1 | Saída Tor, TORSERVERS-NET, Hamburgo | 100, block |
| 185.213.155.73 | Servidor de VPN da Mullvad, Frankfurt | 100, block |
| 66.249.66.1 | Googlebot | 0, allow |
| 104.28.46.99 | Egress do iCloud Private Relay na Cloudflare | 9, allow |
| 45.33.32.156 | scanme.nmap.org, um servidor da Linode | 10, allow |
| 8.8.8.8 | Google Public DNS (anycast) | 10, allow |
| 1.1.1.1 | DNS da Cloudflare (anycast) | 10, allow |
Um pequeno script em Node percorreu cada resposta e listou cada campo folha, contando geo.country_names como um único campo, porque é um mapa de traduções. As sete respostas tinham exatamente as mesmas 103 chaves. Veja como elas se dividem:
| Grupo | Campos | Placeholders hoje |
|---|---|---|
| ip | 1 | 0 |
| asn | 12 | 0 |
| geo | 15 | 0 |
| whois | 8 | 0 |
| network | 7 | 3 (open_ports, service, cloud_region) |
| detection | 23 | 0 |
| threat | 25 | 7 (blocklist_sources, crawler.spoofed, botnet.last_seen, os 3 campos de honeypot, spammer_last_seen) |
| dns | 3 | 0 |
| scoring | 4 | 0 |
| meta | 5 | 1 (sources) |
| Total | 103 | 11 |
Cinco campos são novos nesta lista. Três foram adicionados à API em outubro: detection.residential_proxy_status, residential_proxy_evidence e residential_proxy_last_seen. Eles já estão na referência de campos da API, marcados como reservados. Os outros dois, threat.crawler.unverified e threat.spammer_last_seen, já estavam na resposta em julho, e nossas tabelas antigas simplesmente não os incluíam. Nenhum campo da lista de julho foi removido.
Onze campos são placeholders. Verificamos o código que monta a resposta da API: dez deles são gravados como um valor vazio constante ([], "none" ou 0) em todas as consultas, e crawler.spoofed ainda não tem nenhuma fonte de dados por trás. Outros oito campos trazem dados, mas são reservados, e não publicamos seus valores: blocklist_count, ptr_pattern nos dois grupos e os cinco campos de proxy residencial. As tabelas abaixo marcam os dois tipos.
Como os 10 grupos se encaixam em uma consulta de saída Tor
Os grupos ficam mais fáceis de entender quando acompanhados em um único endereço. Esta é a resposta real para 185.220.101.1, uma saída Tor, reduzida aos campos que contam sua história:
{
"ip": "185.220.101.1",
"asn": {
"asn": 60729,
"org": "TORSERVERS-NET - Stiftung Erneuerbare Freiheit",
"asn_type": "hosting",
"connection_type": "datacenter",
"rpki": "valid"
},
"geo": {
"country_code": "DE",
"city": "Hamburg (Hamburg-Nord)",
"timezone": "Europe/Berlin",
"geo_confidence": 0.8
},
"whois": {
"org": "none",
"netname": "ARTIKEL10",
"status": "ASSIGNED PA",
"registered": "2017-09-12T00:00:00.000Z"
},
"network": {
"ptr_record": "none",
"fcrdns_valid": "none",
"abuse_contact": "abuse@artikel10.org"
},
"detection": {
"is_vpn": false,
"is_tor": true,
"is_hosting": true,
"is_anonymous": true,
"anonymity_level": "high"
},
"threat": {
"is_spammer": true,
"threat_types": ["spammer", "tor"],
"dnsbl_sources": ["zen.spamhaus.org"]
},
"scoring": {
"fraud_score": 100,
"confidence": 0.7402500000000001,
"recommended_action": "block",
"detection_methods": ["tor_exit", "datacenter_blocklisted", "no_ptr_datacenter", "known_spammer"]
},
"meta": {
"last_classified_at": "2026-10-22T04:56:41.816Z",
"last_scanned": "2026-10-20T18:45:48.000Z",
"latency_ms": 2
}
}
Os grupos confirmam uns aos outros. O ASN diz hosting, detection.is_tor vem da lista de saídas do Tor Project, threat.dnsbl_sources mostra uma listagem no Spamhaus ZEN, e o grupo de pontuação junta tudo isso em block, com os quatro métodos que dispararam.
A resposta também mostra uma lacuna. ptr_record é "none", então no_ptr_datacenter disparou, mas um dig -x 185.220.101.1 ao vivo na mesma manhã retornou um hostname tor-exit. O DNS reverso armazenado pela API fica atrás do registro ao vivo em alguns endereços. Essa lacuna também explica por que rdns_tor, mostrado na versão de julho deste post, não dispara mais. Essa verificação cruzada entre grupos é o motivo para carregar tantos campos. Agora, cada grupo por vez.
1. O próprio IP (ip)
O campo ip devolve o endereço exato que a API resolveu, como string. Use-o para confirmar que você consultou o que pretendia, principalmente depois de interpretar um cabeçalho X-Forwarded-For, em que escolher o salto errado é um bug clássico. Ele também é a chave natural para o seu próprio cache.
IPv4 e IPv6 são aceitos. Se você não tem certeza de qual é o seu endereço público, a ferramenta qual é o meu IP o mostra junto com tudo o que um site consegue inferir a partir dele.
2. Dados de rede e ASN (asn)
O grupo asn diz qual rede anuncia o endereço, e está entre os dados de IP mais confiáveis que você pode obter. Todo IP roteável pertence a um Autonomous System (sistema autônomo), e essa informação vem da tabela de roteamento global, não de uma estimativa.
| Campo | Tipo | O que informa | Exemplo (8.8.8.8) |
|---|---|---|---|
| asn | number | Autonomous System Number que anuncia o IP | 15169 |
| org | string | Organização que opera o AS | GOOGLE - Google LLC |
| asn_type | string | Classe de rede: isp, hosting, cdn, mobile, satellite, unknown | hosting |
| user_type | string | Classe de uso, por exemplo hosting, residential, cellular, content_delivery_network | hosting |
| isp | string | Nome do ISP (hoje com o mesmo valor de org) | GOOGLE - Google LLC |
| domain | string | Domínio associado à rede | none |
| connection_type | string | datacenter, residential, mobile, satellite, unknown | datacenter |
| access_type | string | Meio de acesso lido a partir de marcadores de rDNS: fiber, cable, dsl, cellular, datacenter | datacenter |
| carrier | string | Nome da operadora móvel, para IPs de celular | none |
| mcc | string | Mobile Country Code, para IPs de celular | none |
| mnc | string | Mobile Network Code, para IPs de celular | none |
| rpki | string | Validação de origem de rota RPKI: valid, invalid, unknown | valid |
Os valores mudam conforme o endereço. 1.1.1.1 voltou com asn_type: "cdn" e user_type: "content_delivery_network", e o Googlebot voltou com user_type: "search_engine_spider". O egress do Private Relay retornou asn_type: "unknown", connection_type: "unknown" e user_type: "consumer_privacy_network". Uma coisa mudou desde julho: 8.8.8.8 agora retorna rpki: "valid", enquanto o exemplo da nossa documentação ainda mostra "invalid".
O campo a observar é connection_type. Um endereço de datacenter em um login de consumidor merece uma segunda olhada. Mas hospedagem, por si só, não é fraude: 45.33.32.156 é hospedagem pura e recebeu 10, allow. Você pode verificar qualquer endereço com a verificação gratuita de IP de datacenter, e a página da API de geolocalização de IP explica o modelo de ASN.
3. Dados de geolocalização (geo)
O grupo geo coloca o endereço no mapa, e é o grupo em que mais se confia além da conta. Todos os 15 campos trouxeram dados em todas as consultas que fizemos.
| Campo | Tipo | O que informa | Exemplo (1.1.1.1) |
|---|---|---|---|
| country_code | string | Código de país ISO 3166-1 alpha-2 | AU |
| country_name | string | Nome do país | Australia |
| country_names | object | Nomes do país localizados, indexados por código de idioma | { en, de, es, fr, ja, ... } |
| country_geoname_id | number | ID GeoNames do país | 2077456 |
| continent_code | string | Código de continente com duas letras | OC |
| continent_name | string | Nome do continente | Oceania |
| continent_geoname_id | number | ID GeoNames do continente | 6255151 |
| is_in_european_union | boolean | O país é Estado-membro da UE | false |
| flag_emoji | string | Bandeira Unicode do país | 🇦🇺 |
| region | string | Estado, província ou região | New South Wales |
| city | string | Cidade estimada mais provável | Sydney |
| timezone | string | Fuso horário IANA, ou "none" | Australia/Sydney |
| latitude | number | Latitude aproximada | -33.8688 |
| longitude | number | Longitude aproximada | 151.209 |
| geo_confidence | number | Confiança na resposta de cidade, de 0 a 1 | 0.8 |
O país é sólido, e a cidade é aproximada. Um estudo revisado por pares sobre geolocalização por DNS reverso, com dados de 2018, mediu erros medianos de 11,1 km e 16,7 km para dois bancos de dados comerciais. Reunimos mais evidências em quão precisa é a geolocalização de IP. Trate a cidade como um raio, nunca como um ponto exato, e nunca use um IP para localizar uma pessoa.
Leia geo_confidence junto com detection.is_anycast. 1.1.1.1 retornou 0,8 para Sydney, mas também é is_anycast: true, porque o mesmo endereço é anunciado de vários lugares ao mesmo tempo. Para um endereço anycast, a cidade é uma localização plausível entre várias.
Apareceram mais duas lacunas. timezone voltou como "none" para os três endereços dos EUA que consultamos (8.8.8.8, o 66.249.66.1 do Googlebot e 45.33.32.156), enquanto a cidade veio preenchida; portanto, derive o fuso você mesmo quando precisar dele. E o egress do Private Relay 104.28.46.99 foi localizado em Luanda, Angola, enquanto a própria lista de egress da Apple coloca essa faixa em Lusaka, Zâmbia. Para relays, use a localização da linha da Apple, como explicamos em como comparar IPs de relay com a lista de egress da Apple.
4. Dados de WHOIS e registro (whois)
O grupo whois diz quem registrou o bloco e quando, obtido via RDAP nos cinco Regional Internet Registries (registros regionais de internet). Ele acrescenta uma camada de titularidade que a geolocalização não cobre.
| Campo | Tipo | O que informa | Exemplo (1.1.1.1) |
|---|---|---|---|
| org | string | Organização registrante | APNIC and Cloudflare DNS Resolver project |
| country | string | País de registro (pode ser diferente do geo) | AU |
| netname | string | Nome do bloco de rede | APNIC-LABS |
| status | string | Status de alocação do bloco | ASSIGNED PORTABLE |
| registered | string (ISO 8601) | Data de registro, quando publicada | 2011-08-11T00:00:00.000Z |
| last_changed | string (ISO 8601) | Quando o registro foi alterado pela última vez | 2023-04-26T22:57:58.000Z |
| has_vpn_keywords | boolean | O texto do registro bateu com uma de 46 palavras-chave de VPN | false |
| has_hosting_keywords | boolean | O texto do registro bateu com uma de 27 palavras-chave de hospedagem | false |
A cobertura varia conforme o registro. 8.8.8.8 e 45.33.32.156 retornaram "none" para org, netname, status e last_changed, com apenas country e registered preenchidos. O registro do servidor da Mullvad era completo: netname: "NET-31173-185-213-155-0-24", registrado em 19/07/2017 e alterado pela última vez em 11/11/2025.
Os indicadores de palavras-chave são evidência de apoio, nunca o único motivo para sinalizar um endereço. Os dois foram false para os sete endereços, inclusive o servidor da Mullvad, cujo org no registro diz "31173 Services AB infrastructure in Frankfurt, DE." sem nenhuma menção a VPN. É por isso que as listas de provedores das próximas seções importam mais.
5. Evidências de rede (network)
O grupo network traz o DNS reverso e o contato de abuso do registro. Três dos seus sete campos são placeholders hoje.
| Campo | Tipo | O que informa | Exemplo (8.8.8.8) |
|---|---|---|---|
| ptr_record | string | Hostname de DNS reverso (PTR) armazenado | dns.google |
| ptr_pattern | string | Classificação do host PTR. Reservado: não publicamos seus valores | (não exibido) |
| fcrdns_valid | boolean, ou "none" | O host PTR resolve de volta para este IP; "none" quando não há PTR armazenado | true |
| abuse_contact | string | Endereço de abuso do registro | network-abuse@google.com |
| open_ports | number[] | Placeholder: sempre [] hoje | [] |
| service | string | Placeholder: sempre "none" hoje | none |
| cloud_region | string | Placeholder: sempre "none" hoje | none |
abuse_contact é o campo a que você recorre quando precisa denunciar alguma atividade, e ele veio preenchido em cinco dos nossos sete endereços. fcrdns_valid não é um boolean simples: ele retornou a string "none" para a saída Tor, o servidor da Mullvad e o relay, que não têm PTR armazenado. Código que testa === false deixa esse caso passar.
Não confie em um PTR armazenado sem verificá-lo. Para o Googlebot 66.249.66.1, o ptr_record armazenado pertence a um endereço vizinho, enquanto um dig -x ao vivo retorna crawl-66-249-66-1.googlebot.com. Confirmamos o valor de 8.8.8.8 (dns.google) e o de 1.1.1.1 (one.one.one.one) com dig -x na mesma manhã.
open_ports fica vazio mesmo quando uma sondagem obteve resposta. Ele é gravado como [] em todas as consultas. Observe que o wireguard_open do servidor da Mullvad não é resultado de sondagem: significa que a lista de servidores da Mullvad marca aquele servidor como WireGuard. Leia resultados de sondagem como openvpn_open em scoring.detection_methods até o campo ser implementado.
6. Detecção de VPN, proxy, Tor e relay (detection)
O grupo detection responde se o endereço anonimiza o usuário, e de que forma. Com 23 campos, é o maior grupo, e três deles são novos desde julho.
| Campo | Tipo | O que informa | Exemplo (185.213.155.73, Mullvad) |
|---|---|---|---|
| is_proxy | boolean | Respondeu como proxy aberto durante a sondagem ativa | false |
| is_vpn | boolean | Infraestrutura de VPN por handshake, lista de provedor, ASN ou WHOIS | true |
| is_tor | boolean | Está na lista de saídas do Tor Project, atualizada diariamente | false |
| is_hosting | boolean | Infraestrutura de hospedagem ou nuvem | true |
| is_relay | boolean | Relay de privacidade, informado separadamente das VPNs | false |
| is_mobile | boolean | Rede de operadora móvel | false |
| is_satellite | boolean | ISP por satélite | false |
| is_anycast | boolean | Anunciado a partir de vários locais | false |
| is_residential_proxy | boolean | Reservado: não é um recurso em funcionamento, não dependa dele | (não exibido) |
| is_public_proxy | boolean | Proxy aberto listado publicamente | false |
| is_anonymous | boolean | Verdadeiro quando se aplica VPN, proxy ou Tor | true |
| proxy_type | string | Protocolo de um proxy detectado | none |
| anonymity_level | string | none, low, medium ou high | medium |
| vpn_provider | string | Nome do operador da VPN, quando está em uma lista | Mullvad |
| vpn_provider_tier | string | Rótulo derivado do nome do provedor; não construa nada sobre ele | (não exibido) |
| relay_provider | string | Nome do operador do relay | none |
| proxy_score | number | Probabilidade de proxy, de 0 a 100 | 0 |
| vpn_confidence | number | De 0 a 100; também mostra qual caminho de identificação disparou | 95 |
| residential_proxy_status | string | Novo em outubro de 2026, não está em /docs. Reservado | (não exibido) |
| residential_proxy_evidence | string | Novo em outubro de 2026, não está em /docs. Reservado | (não exibido) |
| residential_proxy_last_seen | string | Novo em outubro de 2026, não está em /docs. Reservado | (não exibido) |
| residential_proxy_score | number | Reservado junto com is_residential_proxy | (não exibido) |
| last_seen | string (ISO 8601) | Quando uma detecção mudou pela última vez | 2026-10-20T20:17:50.000Z |
vpn_provider é o campo a destacar. A maioria das APIs consegue dizer que um IP é "uma VPN"; dar nome ao operador exige uma lista de provedores. Identificamos uma VPN pelas listas de servidores de nove provedores, por uma lista pública de terceiros ou por uma pequena tabela de redes de VPN conhecidas, e vpn_confidence mostra qual caminho disparou: 95 aqui significa a própria lista da Mullvad. Quando um endereço não está em nenhuma lista, vpn_provider retorna "none" mesmo que um handshake prove que é uma VPN. Detalhamos esses caminhos em como uma VPN é identificada pela sua própria lista de servidores, e você pode testar qualquer endereço com o teste de detecção de VPN.
is_relay e relay_provider funcionam em par. 104.28.46.99 retornou is_relay: true, relay_provider: "iCloud Private Relay", pontuação 9 e allow. A API também retorna "Cloudflare WARP" para as faixas de conexão WARP publicadas pela Cloudflare, os endereços aos quais o app WARP se conecta, e um valor não documentado, "Cloudflare", para outros egress de privacidade da Cloudflare que a lista da Apple não cobre.
is_anonymous não cobre relays. A /docs o descreve como verdadeiro para qualquer anonimizador, incluindo relays, mas o egress do relay retornou is_anonymous: false com anonymity_level: "medium". O indicador acompanha apenas VPN, proxy e Tor, então leia is_relay separadamente.
Os três novos campos de proxy residencial são reservados. Eles chegaram em uma mudança de backend em outubro e ainda não estão documentados. Detecção de proxy residencial não é um recurso que oferecemos hoje, então trate os cinco campos de proxy residencial como reservados e não crie regras com base neles. Se esse tipo de tráfego preocupa você, é aqui que explicamos o que uma consulta de IP consegue e não consegue ver.
7. Inteligência de ameaças e bots (threat)
O grupo threat verifica se o endereço é conhecido como abusivo ou como um bot legítimo. Ele tem 25 campos, e sete deles são placeholders.
| Campo | Tipo | O que informa | Exemplo (66.249.66.1, Googlebot) |
|---|---|---|---|
| is_abusive | boolean | Está em feeds de ameaças focados em abuso | false |
| is_bogon | boolean | Espaço não alocado ou reservado | false |
| is_crawler | boolean | Rastreador ou bot de IA conhecido | true |
| is_spammer | boolean | Origem de spam conhecida | false |
| is_scanner | boolean | Faixa de scanner que varre toda a internet | false |
| is_botnet | boolean | Endereço de C2 de botnet (dados do Feodo Tracker) | false |
| is_cgnat | boolean | NAT de operadora (CGNAT); as pontuações têm teto | false |
| threat_types | string[] | Todas as categorias de ameaça que se aplicam | [] |
| blocklist_count | number | Reservado: não dependa dele | (não exibido) |
| blocklist_sources | string[] | Placeholder: não é preenchido hoje | (não exibido) |
| dnsbl_sources | string[] | Quais das 3 zonas de blocklist DNS o listam | [] |
| crawler.verified | boolean | Bateu com as faixas de IP oficiais do operador | true |
| crawler.unverified | boolean | Parece um rastreador, mas não está nas faixas oficiais | false |
| crawler.spoofed | boolean | Placeholder: ainda sem fonte de dados | (não exibido) |
| crawler.name | string | Nome do bot, escrito sem hífens | Googlebot |
| crawler.operator | string | Quem opera o bot | |
| crawler.category | string | Categoria do bot | search_engine |
| crawler.verification_method | string | Como a identidade foi confirmada | ip_range_list |
| botnet.role | string | Papel em uma botnet, quando conhecido | none |
| botnet.family | string | Família de malware, quando conhecida | none |
| botnet.last_seen | string | Placeholder: sempre "none" hoje | none |
| honeypot.hits_30d | number | Reservado | (não exibido) |
| honeypot.type | string | Reservado | (não exibido) |
| honeypot.last_hit | string | Reservado | (não exibido) |
| spammer_last_seen | string | Placeholder: sempre "none" hoje | none |
A saída Tor preenche a outra metade desta tabela: is_spammer: true, threat_types: ["spammer", "tor"] e dnsbl_sources: ["zen.spamhaus.org"]. O servidor da Mullvad retornou threat_types: ["vpn"], então o array também repete os indicadores de anonimizador.
O objeto crawler é onde ficam as decisões sobre bots. Para 66.249.66.1, a API retornou verified: true, name: "Googlebot", operator: "Google" e verification_method: "ip_range_list", comparado com 19 feeds oficiais de faixas de rastreadores de 10 operadores. As categorias que vimos nas consultas de outubro são search_engine, ai e fetcher. Os nomes perdem os hífens, então o fetcher acionado por usuário do Google volta como GoogleUserTriggeredFetcher.
A detecção de falsificação acontece no seu código. A API vê apenas o IP, nunca o User-Agent. Uma requisição que diz ser o Googlebot, mas retorna crawler.verified: false, não é verificada, e essa comparação cabe a você. Mostramos como fazer isso em detecção de bots por IP e em como verificar rastreadores de IA por IP, rDNS e CIDR.
is_cgnat deve suavizar uma decisão, não endurecê-la. Um endereço CGNAT é compartilhado por muitos assinantes, por isso a pontuação tem um teto nesse caso, e um único mal-intencionado não deve bloquear uma operadora inteira. Veja a visão geral de inteligência de ameaças para conhecer os feeds por trás deste grupo.
8. DNS reverso (dns)
O grupo dns repete três campos de DNS reverso de network, para que o código que só precisa de rDNS leia um único objeto pequeno. Os valores são idênticos às cópias em network em todas as respostas que obtivemos.
| Campo | Tipo | O que informa | Exemplo (1.1.1.1) |
|---|---|---|---|
| ptr_record | string | Hostname PTR armazenado | one.one.one.one |
| ptr_pattern | string | Reservado: não publicamos seus valores | (não exibido) |
| fcrdns_valid | boolean, ou "none" | O PTR resolve de volta para este IP | true |
fcrdns_valid é o campo em que confiar. Um PTR que, na resolução direta, aponta de volta para o mesmo IP é uma evidência muito mais forte do que apenas a string do PTR, que qualquer pessoa que controle a zona reversa pode definir. Vale o mesmo cuidado da seção 5: compare um PTR armazenado com um dig -x ao vivo antes de citá-lo.
9. Pontuação de risco (scoring)
O grupo scoring transforma as evidências em uma decisão. São quatro campos, e detection_methods é o que torna a pontuação auditável.
| Campo | Tipo | O que informa | Exemplo (185.220.101.1, Tor) |
|---|---|---|---|
| fraud_score | number | Pontuação de risco de 0 a 100; quanto maior, mais arriscado | 100 |
| confidence | number | Evidência por trás do veredito, de 0 a 1 | 0.7402500000000001 |
| recommended_action | string | allow, review, step_up ou block | block |
| detection_methods | string[] | Os sinais exatos que dispararam | tor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer |
O fraud_score combina 36 motivos ponderados, e alguns motivos subtraem. O Googlebot mostra isso: datacenter_ip e verified_crawler dispararam, e a pontuação ficou em 0. Um relay nunca chega a block, porque as pontuações de relay têm teto de 60. O recommended_action associa a pontuação a faixas:
| Pontuação | recommended_action | O que significa |
|---|---|---|
| 0 a 25 | allow | Nenhuma evidência de risco relevante |
| 26 a 50 | review | Alguns sinais dispararam; registre e acompanhe |
| 51 a 75 | step_up | Evidência concreta; adicione um desafio |
| 76 a 100 | block | Evidência forte, vinda de vários sinais |
Imprima confidence como número, não como string: ele chega com todo o ruído de ponto flutuante. Explicamos o modelo no guia da pontuação de fraude de IP e em como cada motivo define a pontuação e sua confiança, e onde definir limites em como escolher o limite da pontuação de fraude de IP para login, cadastro e checkout. Você pode pontuar qualquer endereço com a verificação de pontuação de fraude de IP.
10. Metadados (meta)
O grupo meta data a resposta e identifica a requisição. Dois dos seus cinco campos significam algo diferente do que o nome sugere.
| Campo | Tipo | O que informa | Exemplo (104.28.46.99) |
|---|---|---|---|
| last_classified_at | string (ISO 8601) | Quando esta resposta foi montada | 2026-10-22T04:56:51.010Z |
| last_scanned | string (ISO 8601) | Quando uma detecção deste IP mudou pela última vez | 2026-10-20T18:52:36.000Z |
| request_id | string | ID único desta consulta; informe-o ao suporte | aa25852e-0dc1-4fd6-8780-3b9283d13aba |
| latency_ms | number | Tempo de processamento no servidor | 3 |
| sources | string[] | Placeholder: sempre [] hoje | [] |
last_classified_at é o horário da resposta, não o da classificação. Nas sete consultas, ele ficou a cerca de um segundo do momento em que enviamos a requisição. Use last_scanned para avaliar a atualidade dos dados. Ele trouxe o mesmo valor de detection.last_seen em todas as respostas, e as sete tinham data de 20 de outubro.
Dados de IP desatualizados são dados de IP errados, porque as faixas mudam de dono. O request_id é o que você informa se achar que uma classificação está errada. A latência variou de 0 a 3 ms no servidor nas sete consultas.
Como outros provedores chamam os mesmos campos
Outros provedores de dados de IP cobrem um terreno parecido com nomes de campos diferentes, e alguns reservam os campos mais ricos para planos superiores. Lemos a documentação pública de três provedores em 22 de outubro de 2026 e mantivemos apenas o que essas páginas afirmam.
| Provedor | Campo documentado por eles | O que a documentação diz | Campo mais próximo na GeoIPHub |
|---|---|---|---|
| MaxMind | location.accuracy_radius | "The approximate accuracy radius, in kilometers" (o raio de precisão aproximado, em quilômetros) ao redor das coordenadas | geo.geo_confidence (de 0 a 1, sem raio) |
| MaxMind | traits.user_type | 15 valores, incluindo consumer_privacy_network, content_delivery_network e search_engine_spider | asn.user_type, que retornou essas mesmas três strings nas nossas consultas |
| MaxMind | objeto anonymizer | Os indicadores de anonimizador saíram de traits e foram para um único objeto, que inclui provider_name | detection.vpn_provider |
| IPinfo | vpn, proxy, tor, relay, hosting, service | service é "the name of the VPN, proxy, or anonymization service" (o nome do serviço de VPN, proxy ou anonimização) | Indicadores detection.is_*, vpn_provider, relay_provider |
| IPinfo | Cobertura por plano | O Core inclui apenas is_anonymous e is_hosting; Plus e Max usam um endpoint /anonymous | Todos os campos em todos os planos |
| IPinfo | asn.type | Exemplos citados: isp, business, hosting, education | asn.asn_type |
| IPQualityScore | fraud_score | Construído a partir do IP, do user agent, do idioma e de outras entradas opcionais; 75+ é suspeito, e eles sugerem sinalizar ou bloquear a partir de 90+ | scoring.fraud_score, apenas a partir do IP; block acima de 75 |
| IPQualityScore | is_crawler | Rastreador de mecanismo de busca confirmado, verificado por hostname ou IP | threat.crawler.verified, via faixas de IP oficiais |
| IPQualityScore | connection_type | Residential, Corporate, Education, Mobile ou Data Center | asn.connection_type |
Fontes: respostas dos web services GeoIP da MaxMind, dados de detecção de privacidade da IPinfo, dados de ASN da IPinfo e parâmetros de resposta da detecção de proxy da IPQualityScore.
Daí saem duas lições práticas. A escala de uma pontuação só faz sentido ao lado dos limites documentados: o 75 da IPQualityScore é "suspeito", enquanto o nosso 76 já é block. E um campo com o mesmo nome pode significar coisas diferentes, então mapeie os campos pelo significado documentado, não pelo nome. Nosso checklist do comprador para escolher um provedor de dados de IP transforma isso em um teste curto que você pode aplicar a qualquer API.
Quais campos de dados de IP importam para cada decisão
Raramente você precisa dos 103 campos de uma vez. Associe os campos à decisão e ignore os placeholders:
| Caso de uso | Campos que mais importam | Atenção a |
|---|---|---|
| Verificações de fraude no login ou no checkout | scoring.fraud_score, recommended_action, detection_methods, detection.is_vpn, is_tor, is_proxy | Não bloqueie com base apenas no geo; is_cgnat limita a pontuação por um motivo |
| Conformidade geográfica e licenciamento | geo.country_code, geo.region, detection.is_relay | A cidade é aproximada; o geo de um relay pode divergir da lista da Apple |
| Gestão de bots e rastreadores | threat.crawler.verified, crawler.name, crawler.category | Compare você mesmo com o User-Agent declarado; crawler.spoofed é um placeholder |
| Denúncias de abuso e investigações | network.abuse_contact, whois.netname, threat.dnsbl_sources | Verifique PTRs armazenados com dig antes de citá-los |
| Localização | geo.country_code, geo.timezone | timezone pode ser "none"; geo_confidence é apenas uma indicação em IPs anycast |
Em uma investigação, a ordem em que você lê os grupos importa tanto quanto os campos. Nosso guia passo a passo para investigar um endereço IP acompanha três IPs reais em doze verificações passivas que usam esses grupos em sequência.
Verifique os campos você mesmo antes de construir
A lista de campos muda com o tempo, então o hábito mais seguro é contá-la você mesmo. Faça uma consulta e liste as chaves folha:
curl -s https://api.geoiphub.com/v1/lookup/8.8.8.8 \
-H "x-api-key: YOUR_API_KEY" \
| jq 'del(.geo.country_names)
| [paths(type != "object") | select(all(.[]; type == "string"))]
| length + 1'
O filtro conta cada array como um campo, ignora os elementos dos arrays e soma country_names de volta como um campo. Ele imprimiu 103 para as sete respostas que salvamos. Se o seu número for diferente, compare as chaves com a referência da API e com este post. Se você testar sem chave, espace as chamadas: a 30ª requisição sem chave dentro de um minuto já retorna 429 e bloqueia o seu IP por duas horas.
Perguntas frequentes
Quais dados é possível obter de um endereço IP?
Muito mais do que uma localização. Uma consulta real na GeoIPHub em 22 de outubro de 2026 retornou 103 campos em 10 grupos: o próprio IP, a rede (ASN, ISP, tipo de conexão, RPKI), geolocalização aproximada, dados de registro WHOIS, evidências de rede e DNS reverso, detecção de VPN, proxy, Tor e relay com o nome do provedor quando ele está em uma lista, sinais de ameaça e de rastreador verificado, uma pontuação de risco explicável de 0 a 100 e metadados da requisição. Onze desses campos são placeholders que hoje retornam um valor vazio fixo.
Um endereço IP pode revelar o endereço exato da minha casa?
Não. A geolocalização de IP estima uma área aproximada (no máximo uma cidade ou região), nunca um endereço de rua nem uma pessoa específica. Resultados no nível de cidade são imprecisos, e conexões móveis, CGNAT e VPN os tornam ainda mais fracos. Quem promete precisão de endereço apenas a partir de um IP está exagerando.
O que é um ASN nos dados de IP?
Um Autonomous System Number (número de sistema autônomo) identifica a rede que anuncia um endereço IP para a internet. Por exemplo, 8.8.8.8 retorna AS15169, GOOGLE - Google LLC. O ASN e sua organização vêm da tabela de roteamento global, por isso estão entre os campos de dados de IP mais confiáveis, ao contrário de um palpite sobre a localização física.
O que é uma pontuação de fraude de IP e como ela é calculada?
Uma pontuação de fraude de IP é um único número de 0 a 100 que resume quão arriscado um endereço parece. A GeoIPHub combina 36 motivos ponderados, subtrai os que inocentam, como um rastreador verificado, e retorna os métodos exatos que dispararam, além de uma ação recomendada: allow até 25, review até 50, step_up até 75, block acima de 75. Uma saída Tor que consultamos em 22 de outubro de 2026 recebeu 100, com quatro métodos listados.
Qual é a diferença entre um IP residencial e um IP de datacenter?
Um IP residencial é atribuído por um ISP de consumo a uma conexão doméstica; um IP de datacenter (hospedagem) pertence a um provedor de nuvem ou de servidores. A distinção está nos campos asn.connection_type e asn.asn_type. Nas nossas sete consultas de outubro, o servidor de VPN da Mullvad, a saída Tor e o Googlebot voltaram todos com connection_type datacenter.
Todos os provedores de API de IP retornam os mesmos campos em todos os planos?
Não. A documentação da IPinfo diz que o plano Core inclui apenas os indicadores de privacidade is_anonymous e is_hosting, com campos de privacidade mais completos nos planos Plus, Max e em APIs personalizadas. A GeoIPHub retorna todos os campos em todos os planos, inclusive no plano gratuito de 1.500 consultas por dia.
O que significa raio de precisão na geolocalização de IP?
O raio de precisão é a distância, em quilômetros, ao redor das coordenadas retornadas dentro da qual a localização real provavelmente está. A MaxMind o documenta como location.accuracy_radius. A GeoIPHub não retorna um raio; ela retorna geo.geo_confidence, um valor de 0 a 1 que fica em 0 quando não há evidências suficientes para indicar uma cidade.
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.


