Formuler des demandes

Classer une adresse IP donnée comme VPN, proxy, point de sortie Tor, hébergement / CDN ou proxy résidentiel / mobile.

API endpoint

OBTENIR https://vpn-proxy-detection.whoisxmlapi.com/api/v1/ip/185.220.101.1?apiKey=YOUR_API_KEY
L'activation de votre compte peut prendre jusqu'à une minute après votre inscription.

Postman collection

Postman est une application de bureau et Web qui vous permet d'envoyer des requêtes à une API depuis une interface utilisateur graphique . Nous vous recommandons d'utiliser Postman avec les points de terminaison des API WhoisXML lorsque vous explorez les fonctionnalités des API, ainsi que lorsque vous effectuez le dépannage de votre application.

WhoisXML API Postman collection  est disponible aux liens suivants :

La collection comprend un environnement préconfiguré. Vous devrez configurer la variable api_key sur pour déclencher chaque requête. Récupérez votre clé API personnelle sur la page « Mes produits ». Si vous avez des questions concernant l'API, contactez-nous.

Paramètres d'entrée

apiKey

Obligatoire. Récupérez votre clé API personnelle sur la page « Mes produits ».

adresse IP

Obligatoire. L'adresse IPv4 à classer. Spécifiée sous la forme d'un segment de chemin de l'URL de la requête, par exemple /api/v1/ip/185.220.101.1.

Exemple de résultat

{
    "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.

Paramètres de sortie

ip

L'adresse IPv4 interrogée, renvoyée.

réseau

Chaîne de caractères ou null. La plage CIDR à laquelle appartient l'adresse IP, lorsqu'elle est connue.

classification

String. Type de détection de l'adresse IP.

Valeurs autorisées : 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.

fournisseur

String ou valeur nulle. Fournisseur associé à l'adresse IP (par exemple, une marque de VPN, un réseau de proxys résidentiels, un hébergeur). Valeur nulle lorsqu'aucune attribution n'est disponible.

confiance

Nombre à virgule flottante compris entre [0, 1]. Niveau de confiance calibré dans la classification. Des valeurs plus élevées indiquent des preuves plus solides.

source

String. Méthode de détection à l'origine de l'enregistrement (par exemple : mslm, port_scan, proxy_enum, netflow_analysis, asn_classification).

detection_method

String. Identique à la source (champ hérité, conservé pour des raisons de compatibilité ascendante).

première apparition

Chaîne de caractères (ISO-8601) ou null. Date à laquelle l'adresse IP a été observée pour la première fois.

dernière_connexion

Chaîne de caractères (ISO-8601) ou null. Date et heure de la dernière détection de l'adresse IP.

nombre_d'observations

Nombre entier. Nombre total d'observations de l'adresse IP (hits).

hits_days_pct

Valeur flottante ou nulle. Persistance : pourcentage de jours, au sein de la fenêtre d'observation glissante de 90 jours, au cours desquels l'adresse IP a été identifiée comme un point de sortie actif de proxy ou de VPN (nombre de jours d'observation distincts ÷ 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.

nombre_de_prestataires

Nombre entier. Nombre de réseaux proxy / VPN distincts par lesquels l'adresse IP a été observée comme point de sortie. Une valeur égale ou supérieure à 2 indique que l'adresse IP est partagée ou revendue sur plusieurs réseaux commerciaux — ce qui constitue un signal fort indiquant l'utilisation d'un proxy. La valeur 0 signifie qu'il n'y a pas d'historique d'énumération par adresse IP (détection au niveau de la plage uniquement).

baisse_de_confiance

Valeur flottante comprise entre [0, 1,5]. Score composite de force des preuves : facteur de récence × cohérence × bonus « multi-fournisseurs ». Les valeurs supérieures à 1,0 indiquent des IP « multi-fournisseurs » actives quotidiennement ; 0,0 signifie qu’aucune observation n’a été relevée au niveau du point. Pour obtenir un score normalisé compris entre 0 et 1, utilisez min(confidence_decay, 1,0).

classe_de_fraîcheur

Chaîne de caractères. Compartiment indiquant la date de la dernière consultation, dérivé de « last_seen », ce qui permet de filtrer sans avoir à effectuer de calculs de date.

Valeurs autorisées : actuelle (observée au cours de la dernière journée), récente (semaine dernière), périmée (au cours des 90 derniers jours), figée (il y a plus de 90 jours, ou jamais observée).

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

Booléen. Vrai si la classification fait partie de {proxy, datacenter_proxy, mobile_proxy, suspected_proxy}. N' inclut pas les proxys résidentiels (voir is_residential_proxy). Pour trouver n'importe quel proxy, quel qu'en soit le type, combinez is_proxy OU is_residential_proxy.

is_tor

Boolean. Vrai si l'adresse IP est un nœud de sortie Tor (classification « tor »).

is_relay

Boolean. Vrai si la classification est « relais » — un service de relais préservant la confidentialité (par exemple, Apple Private Relay). À distinguer de « is_vpn »: les relais acheminent le trafic des utilisateurs via une sortie gérée par le fournisseur, sans point de terminaison sélectionnable par l'utilisateur.

is_hosting

Boolean. Vrai si l'adresse IP appartient à un centre de données ou à un hébergeur.

is_cdn

Boolean. Vrai si l'adresse IP appartient à un réseau de diffusion de contenu.

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

Booleann. Vrai si la classification == residential_proxy (niveau de précision ≥ 85 %). Sous-ensemble de is_residential_proxy.

is_residential_proxy_mobile

Booléen. Vrai si classification == residential_proxy_mobile — adresses IP d'opérateurs mobiles détectées comme des proxys. Sous-ensemble de is_residential_proxy.

is_open_proxy

Boolean. Vrai lorsque l'adresse IP figure sur une liste publique de proxys ouverts. À ne pas confondre avec is_proxy: tout proxy ouvert est également un proxy, mais la plupart des proxys ne figurent pas sur les listes publiques.

is_corporate_vpn

Booléen. Vraie si l'adresse IP correspond à un VPN de type « appliance » (Fortinet, Pulse Secure, Cisco AnyConnect, etc.). Sous-indicateur de « is_vpn ».

risk_score

Nombre entier compris entre 0 et 100. Calculé en multipliant la confiance par 100, avec une majoration de +10 pour les types de classification à haut risque.

asn

Nombre entier ou null. Numéro du système autonome annonçant l'adresse IP.

asn_org

Chaîne de caractères ou null. Nom de l'organisation enregistrée pour l'ASN.

cdn_operator

Chaîne de caractères ou null. Nom normalisé de l'opérateur CDN (en minuscules), par exemple akamai, fastly, cloudflare, aws_cloudfront. Ne peut être différent de null que lorsque classification == cdn.

asn_abuse

Objet ou null. Évaluation des abus au niveau ASN. Disponible sur tous les niveaux ; les niveaux premium (Growth+) bénéficient d'une analyse détaillée complète :

abuse_score — nombre entier compris entre 0 et 100, niveau d'abus pour cet ASN (tous niveaux confondus).

abuse_level — chaîne de caractères : faible, modéré, élevé, critique (tous les niveaux).

flagged_ratio — nombre à virgule flottante compris entre 0,0 et 1,0, représentant la proportion d'adresses IP signalées dans l'ASN (croissance positive).

flagged_ip_count — entier, nombre d'adresses IP signalées (croissance positive).

total_announced_ips — entier, nombre total d'adresses IP annoncées par cet ASN (croissance incluse).

métadonnées

Objet. Signaux de détection supplémentaires et données d'enrichissement (tous les champs sont facultatifs) :

raw_score — nombre, valeur numérique interne de confiance (0–100).

signals — objet, signaux de détection (modèles de ports, protocoles, etc.).

dns_enrichment — objet, enregistrements PTR DNS et historique RDNS.

tls_enrichment — objet, analyse des certificats TLS.

emplacement_observé

Objet ou null. Données géographiques, niveaux premium (Growth+) uniquement; null lorsqu'aucune donnée de localisation observée n'est disponible. Clés :

exit_country — chaîne de caractères ou null, code de pays ISO 3166-1 alpha-2 de l'adresse IP de sortie.

user_countries — tableau de chaînes de caractères ou valeur nulle, indiquant les pays dans lesquels des utilisateurs de cette adresse IP ont été détectés.

user_country_count — entier ou null, nombre de pays distincts des utilisateurs.

observed_lat / observed_lon — nombre ou null, coordonnées du point de sortie observé.

observed_countries — tableau de chaînes de caractères, pays dans lesquels ce concentrateur a été observé.

observation_readings — chaîne de caractères ou null, métadonnées relatives aux observations.

Accès gratuit

Une fois votre inscription effectuée, vous bénéficiez automatiquement d'un abonnement gratuit limité à 10 requêtes.

Limites de débit

Les requêtes API sont soumises à une limitation de débit par clé API sur une fenêtre glissante de 60 secondes. Cette limite dépend de votre formule d'abonnement :

Gratuit

2 requêtes/min

Starter

30 requêtes/min

Pro

100 requêtes/min

Échelle

250 requêtes/min

Entreprises

500 requêtes/min

Entreprise

Sur mesure — contactez-nous.


Les crédits de requêtes mensuels sont facturés séparément et indiqués sur la page des tarifs.

Si vous dépassez votre limite, l'API renvoie un code d'erreur HTTP 429 accompagné de l'enveloppe d'erreur standard et des en-têtes Retry-After / X-RateLimit-Reset — veuillez patienter Retry-After secondes avant de réessayer.

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

Cette API est également disponible avec un équilibreur de charge dédié et un point de terminaison premium afin de permettre des requêtes plus rapides dans le cadre de nos services API Premium et de nos offres API Entreprise.