Détecteur de version IP
Ce détecteur de version d’adresse IP vérifie si une chaîne constitue une adresse IPv4 complète, une adresse IPv6 complète ou aucune des deux.
Lancer gratuitement
Une entrée valide renvoie la version détectée et une représentation canonique stable, plus facile à comparer, enregistrer et contrôler. Un texte non valide produit un motif précis, par exemple un octet IPv4 hors limites, un zéro initial interdit, un nombre excessif de groupes IPv6 ou une mauvaise compression par double deux-points. L’analyseur est déterministe, n’interroge pas le réseau et applique des règles strictes au lieu de deviner le sens d’une saisie incomplète ou accompagnée d’éléments supplémentaires.
Identifiez précisément la syntaxe IPv4 et IPv6
IPv4 et IPv6 représentent les adresses sous des formes textuelles très différentes ; la simple recherche d’un point ou de deux-points ne suffit donc pas à les valider. Ce détecteur analyse la chaîne entière selon les règles structurelles des deux versions. Une adresse IPv4 doit comporter exactement quatre octets décimaux séparés par des points. Chaque octet doit être compris entre 0 et 255, ne contenir que des chiffres et ne pas commencer par zéro. IPv6 emploie huit groupes hexadécimaux séparés par des deux-points et permet d’abréger une suite de groupes nuls avec un double deux-points. Une adresse IPv6 peut aussi se terminer par une adresse IPv4 décimale intégrée si le nombre total de groupes reste correct. Le résultat n’indique IPv4 ou IPv6 qu’après validation de la valeur complète. Une valeur qui ressemble seulement à une adresse est classée dans aucune version et reçoit un motif indiquant la règle enfreinte. Vous pouvez ainsi exploiter le résultat pour les formulaires, les contrôles de configuration, le nettoyage des imports et les tests automatisés sans qu’une supposition trop permissive accepte des données erronées.
Utilisez la sortie canonique pour comparer et stocker
Une adresse IP valide peut s’écrire de plusieurs façons, en particulier en IPv6. Les lettres hexadécimales majuscules et minuscules représentent les mêmes valeurs, les zéros initiaux d’un groupe ne modifient pas l’adresse et une suite de groupes nuls peut être comprimée. Le résultat IPv6 canonique utilise des minuscules, supprime les zéros initiaux inutiles et comprime la plus longue suite d’au moins deux groupes nuls. Si plusieurs suites ont la même longueur, la première est choisie. Les composants IPv4 décimaux intégrés sont convertis en groupes hexadécimaux équivalents afin de toujours produire une seule forme IPv6 cohérente. IPv4 est renvoyé sous la forme de quatre octets décimaux ordinaires. Ces règles permettent de comparer les chaînes canoniques sans prendre deux écritures de la même adresse pour deux hôtes différents. Elles facilitent aussi la préparation des journaux, la déduplication des configurations, les instantanés de test et la présentation d’une adresse à contrôler. La canonicalisation n’effectue ni DNS, ni géolocalisation, ni analyse de sous-réseau, ni test d’accessibilité ; seule la représentation change, jamais la valeur numérique.
Interprétez les motifs de rejet et les limites strictes
Lorsque le texte est incorrect, la réponse le classe dans aucune version et explique son rejet. Les erreurs IPv4 courantes comprennent un octet manquant, une valeur supérieure à 255, des caractères non décimaux ou un zéro initial que d’anciens logiciels pourraient interpréter autrement. En IPv6, il peut s’agir d’un groupe dépassant quatre chiffres hexadécimaux, d’un mauvais nombre de groupes développés, de plusieurs doubles deux-points ou d’une compression qui ne remplace aucun groupe. Les crochets propres aux URL, les longueurs de préfixe CIDR, les numéros de port et les identifiants de zone ne font volontairement pas partie du contrat. Retirez ces éléments et envoyez uniquement l’adresse. Cette limite stricte assure une validation prévisible entre navigateurs, serveurs et langages dont les analyseurs peuvent accepter des formes historiques différentes. Une adresse absente ou d’un type autre que chaîne constitue une erreur de requête ; une chaîne à la syntaxe incorrecte reste un résultat normal assorti d’un motif. L’algorithme n’utilise ni réseau ni état externe, donc les requêtes répétées concordent toujours. Une requête API coûte $0.002, tandis que la version du navigateur s’exécute localement.
Cas d’usage
Valider une configuration
Refusez les adresses d’hôte mal formées avant leur arrivée dans les règles de pare-feu, les paramètres de service ou les modèles de déploiement.
Normaliser un inventaire d’adresses
Convertissez les écritures IPv6 équivalentes en une représentation canonique avant de comparer ou de dédupliquer les enregistrements.
Expliquer les erreurs de formulaire
Affichez un motif syntaxique utile lorsqu’une personne saisit une valeur qui n’est pas une adresse IPv4 ou IPv6 complète.
Questions fréquentes
Le détecteur contacte-t-il l’adresse ?
Non. Il valide et formate le texte localement, sans DNS, sonde réseau, géolocalisation ni recherche de réputation.
Les préfixes CIDR sont-ils acceptés ?
Non. Envoyez uniquement l’adresse. Un suffixe tel que /24 ou /64 représente un préfixe réseau et sort du contrat de ce détecteur.
Pourquoi les octets IPv4 avec un zéro initial sont-ils refusés ?
Les zéros initiaux ont historiquement créé une ambiguïté entre décimal et octal. La notation décimale stricte évite les interprétations divergentes.
Comment une adresse IPv6 est-elle canonicalisée ?
Les lettres hexadécimales passent en minuscules, les zéros initiaux des groupes sont retirés et la plus longue suite de zéros admissible est comprimée par un double deux-points.
Puis-je envoyer une URL IPv6 entre crochets avec un port ?
Non. Retirez d’abord les crochets et le port, car ils relèvent de la syntaxe d’une URL ou d’un point de terminaison, pas de l’adresse IP.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. L’outil déterministe du navigateur peut également s’exécuter localement sur la page.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev/ip-version-detect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}'const res = await fetch("https://api.kit.forhosting.com/dev/ip-version-detect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/ip-version-detect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/ip-version-detect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/ip-version-detect", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.ip_version_detect",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |