Como fazer solicitações

Classifique um único endereço IP como VPN, proxy, ponto de saída do Tor, hospedagem/CDN ou proxy residencial/móvel.

Ponto de extremidade da API

OBTER https://vpn-proxy-detection.whoisxmlapi.com/api/v1/ip/185.220.101.1?apiKey=YOUR_API_KEY
A ativação da sua conta após o cadastro pode levar até um minuto.

Coleção Postman

O Postman é um aplicativo para desktop e web que permite enviar solicitações a uma API por meio de uma interface gráfica de usuário . Recomendamos usar o Postman com os endpoints das APIs do WhoisXML ao explorar as funcionalidades das APIs, bem como ao solucionar problemas com seu aplicativo.

A coleção do Postman para a API WhoisXML está disponível nos links a seguir:

A coleção inclui um ambiente pré-configurado. Você precisará configurar a variável api_key para executar cada solicitação. Obtenha sua chave de API pessoal na página Meus produtos. Se tiver dúvidas relacionadas à API, entre em contato conosco.

Parâmetros de entrada

apiKey

Obrigatório. Obtenha sua chave de API pessoal na página “Meus produtos ”.

ipAddress

Obrigatório. O endereço IPv4 a ser classificado. Especificado como um segmento do caminho da URL da solicitação, por exemplo, /api/v1/ip/185.220.101.1.

Exemplo de saída

{
    "ip": "185.220.101.1",
    "network": "185.220.101.0\/24",
    "classification": "tor",
    "provider": null,
    "confidence": 1.0,
    "source": "port_scan",
    "detection_method": "port_scan",
    "first_seen": "2024-01-15T08:30:00Z",
    "last_seen": "2026-06-08T08:59:09Z",
    "observation_count": 127,
    "hits_days_pct": 47.78,
    "providers_num": 0,
    "confidence_decay": 0.6650,
    "freshness_class": "current",
    "is_vpn": false,
    "is_proxy": false,
    "is_tor": true,
    "is_relay": false,
    "is_hosting": false,
    "is_cdn": false,
    "is_residential_proxy": false,
    "is_residential_proxy_high_confidence": false,
    "is_residential_proxy_mobile": false,
    "is_open_proxy": false,
    "is_corporate_vpn": false,
    "risk_score": 100,
    "asn": 60729,
    "asn_org": "TORSERVERS-NET - Stiftung Erneuerbare Freiheit, DE",
    "cdn_operator": null,
    "asn_abuse": {
        "abuse_score": 88,
        "abuse_level": "high",
        "flagged_ratio": 0.62,
        "flagged_ip_count": 1240,
        "total_announced_ips": 2000
    },
    "metadata": {
        "raw_score": 100,
        "signals": { "open_ports": [9001, 9030] },
        "dns_enrichment": null,
        "tls_enrichment": null
    },
    "observed_location": null
}

Code: 200 OK.

Parâmetros de saída

ip

O endereço IPv4 consultado, devolvido.

rede

String ou nulo. O intervalo CIDR ao qual o endereço IP pertence, quando conhecido.

classificação

String. O tipo de detecção do IP.

Valores permitidos: vpn, corporate_vpn, proxy, hosting, cdn, tor, relay, residential_proxy, residential_proxy_likely, residential_proxy_mobile, datacenter_proxy, mobile_proxy, suspected_vpn, suspected_proxy, unknown.

prestador

String ou nulo. Provedor atribuído ao endereço IP (por exemplo, uma marca de VPN, rede de proxy residencial, empresa de hospedagem). Nulo quando não há atribuição disponível.

confiança

Número real no intervalo [0, 1]. Nível de confiança calibrado na classificação. Valores mais altos indicam evidência mais forte.

fonte

String. O método de detecção que gerou o registro (por exemplo, mslm, port_scan, proxy_enum, netflow_analysis, asn_classification).

método_de_detecção

String. Igual ao original (campo herdado, mantido para compatibilidade com versões anteriores).

vista pela primeira vez

String (ISO-8601) ou nulo. Data em que o endereço IP foi observado pela primeira vez.

visto pela última vez

String (ISO-8601) ou nulo. Data e hora da última vez em que o endereço IP foi detectado.

contagem_de_observações

Número inteiro. Número total de vezes em que o IP foi observado (acessos).

hits_days_pct

Valor flutuante ou nulo. Persistência: a porcentagem de dias dentro da janela de observação móvel de 90 dias em que o IP foi observado como um proxy ativo ou ponto de saída de VPN (númerode dias de observação distintos ÷ 90 × 100).

High (>50) indicates a consistently active exit; low (<5) indicates sporadic or one-shot activity. Null when the result comes from a network-range detection with no per-IP observation history.

número_de_prestadores

Número inteiro. Número de redes proxy/VPN distintas pelas quais o endereço IP foi observado como ponto de saída. Um valor igual a 2 ou mais significa que o endereço IP é compartilhado ou revendido em várias redes comerciais — um forte indício de uso de proxy. O valor 0 significa que não há histórico de enumeração por endereço IP (apenas detecção em nível de intervalo).

diminuição_da_confiança

Intervalo entre [0, 1,5]. Pontuação composta da força da evidência: fator de atualidade × consistência × reforço por múltiplos provedores. Valores acima de 1,0 indicam IPs ativos diariamente por múltiplos provedores; 0,0 significa que nunca foram observados no nível do ponto. Para obter uma pontuação normalizada entre 0 e 1, utilize min(decaimento_de_confiança, 1,0).

classe_de_frescor

String. O intervalo de validade da observação é derivado de `last_seen`, permitindo que você filtre sem precisar fazer cálculos com datas.

Valores permitidos: atual (observado no último dia), recente (na última semana), desatualizado (nos últimos 90 dias), congelado (há mais de 90 dias ou nunca observado).

is_vpn

Boolean. True if the classification is in {vpn, vpn_concentrator, corporate_vpn, commercial_vpn, vpn_hosting} (confirmed VPN endpoints). Does not include tor, relay, suspected_vpn, or vpn_suspecttor/relay have dedicated booleans; suspected_vpn/vpn_suspect are corroboration-only signals that do not set is_vpn. This asymmetry with is_proxy is deliberate: suspected_proxy does set is_proxy, but suspected_vpn/vpn_suspect never set is_vpn.

is_proxy

Booleano. Verdadeiro se a classificação estiver em {proxy, datacenter_proxy, mobile_proxy, suspected_proxy}. Não inclui proxies residenciais (consulte is_residential_proxy). Para encontrar qualquer proxy de qualquer tipo, combine is_proxy OU is_residential_proxy.

is_tor

Booleano. Verdadeiro se o endereço IP for um nó de saída do Tor (classificação “tor”).

is_relay

Booleano. Verdadeiro se a classificação for “relay” — um serviço de retransmissão que preserva a privacidade (por exemplo, Apple Private Relay). Diferente de “is_vpn”: os relés encaminham o tráfego do consumidor por meio de uma saída operada pelo provedor, sem um ponto de extremidade selecionável pelo usuário.

is_hosting

Booleano. Verdadeiro se o endereço IP pertencer a um datacenter ou provedor de hospedagem.

is_cdn

Booleano. Verdadeiro se o endereço IP pertencer a uma rede de distribuição de conteúdo.

is_residential_proxy

Boolean. True if the classification is in {residential_proxy, residential_proxy_likely, residential_proxy_mobile}. Mutually exclusive with is_proxy; use the more specific booleans below to filter further.

is_residential_proxy_high_confidence

Booleano. Verdadeiro se a classificação for == residential_proxy (o nível de precisão ≥85%). Subconjunto de is_residential_proxy.

is_residential_proxy_mobile

Booleano. Verdadeiro se classificação == residential_proxy_mobile — IPs de operadoras de celular detectados como proxy. Subconjunto de is_residential_proxy.

is_open_proxy

Booleano. Retorna “True” quando o endereço IP aparece em uma lista pública de proxies abertos. Diferente de is_proxy: todo proxy aberto é também um proxy, mas a maioria dos proxies não consta em listas públicas.

is_corporate_vpn

Booleano. Verdadeiro se o endereço IP for de uma VPN do tipo appliance (Fortinet, Pulse Secure, Cisco AnyConnect, …). Sub-flag de is_vpn.

risk_score

Número inteiro no intervalo [0, 100]. Calculado como confiança × 100, com um aumento de +10 para tipos de classificação de alto risco.

asn

Número inteiro ou nulo. Número do Sistema Autônomo que anuncia o endereço IP.

asn_org

String ou nulo. Nome da organização registrada para o ASN.

cdn_operator

String ou nulo. Marca do operador de CDN normalizada (em letras minúsculas), por exemplo: akamai, fastly, cloudflare, aws_cloudfront. Não pode ser nulo apenas quando classificação == cdn.

asn_abuse

Objeto ou nulo. Pontuação de abuso no nível ASN. Disponível em todos os planos; os planos premium (Growth+) têm o detalhamento completo:

abuse_score — número inteiro de 0 a 100, nível de abuso para este ASN (todas as camadas).

abuse_level — string: baixo, moderado, alto, crítico (todos os níveis).

flagged_ratio — float 0,0–1,0, proporção de endereços IP sinalizados no ASN (crescimento+).

flagged_ip_count — inteiro, contagem de endereços IP sinalizados (crescimento+).

total_announced_ips — inteiro, total de IPs anunciados por este ASN (crescimento+).

metadados

Objeto. Sinais de detecção adicionais e dados de enriquecimento (todas as chaves são opcionais):

raw_score — número, o índice numérico interno de confiança (0–100).

sinais — objeto, sinais de detecção (padrões de porta, protocolos etc.).

dns_enrichment — objeto, registros PTR do DNS e histórico do RDNS.

tls_enrichment — objeto, análise de certificados TLS.

local_observado

Objeto ou nulo. Dados geográficos, apenas nos planos premium (Growth+); nulo quando não há dados de localização observada disponíveis. Chaves:

exit_country — string ou nulo, código de país ISO 3166-1 alfa-2 do endereço IP de saída.

user_countries — matriz de strings ou nulo, países nos quais foram identificados usuários com esse endereço IP.

user_country_count — inteiro ou nulo, contagem de países distintos dos usuários.

observed_lat / observed_lon — número ou nulo, coordenadas do ponto de saída observado.

observed_countries — matriz de strings, países onde esse concentrador foi observado.

observation_readings — string ou nulo, metadados sobre as observações.

Acesso gratuito

Após o cadastro, você recebe automaticamente um plano de assinatura gratuito limitado a 10 consultas.

Limites de taxa

As solicitações de API têm um limite de frequência por chave de API em uma janela móvel de 60 segundos. O limite depende do seu plano de assinatura:

Grátis

2 solicitações/min

Entrada

30 solicitações/min

Prós

100 solicitações/min

Escala

250 solicitações/min

Negócios

500 solicitações/min

Empresa

Soluções personalizadas — entre em contato conosco.


Os créditos mensais para consultas são separados e exibidos na página de preços.

Se você ultrapassar seu limite, a API retorna um código de erro HTTP 429 com o envelope de erro padrão e os cabeçalhos Retry-After / X-RateLimit-Reset — aguarde Retry-After segundos antes de tentar novamente.

{"error": {"code": "rate_limited", ...}}

Essa API também está disponível com um balanceador de carga dedicado e um endpoint premium para permitir consultas mais rápidas como parte de nossos Serviços de API Premium e Pacotes de API Empresariais.