Rilevatore di versione IP
Questo rilevatore della versione di un indirizzo IP verifica se una stringa è un indirizzo IPv4 completo, un indirizzo IPv6 completo oppure nessuno dei due.
Esegui gratis nel browser
Un valore valido restituisce la versione rilevata e una rappresentazione canonica stabile, più facile da confrontare, archiviare e controllare. Un testo non valido restituisce un motivo preciso, come un ottetto IPv4 fuori intervallo, uno zero iniziale vietato, troppi gruppi IPv6 o una compressione errata con doppi due punti. Il parser è deterministico, non interroga la rete e applica regole rigorose anziché tentare di intuire il significato di un valore incompleto o corredato da altri elementi.
Identifichi con precisione la sintassi IPv4 e IPv6
IPv4 e IPv6 rappresentano gli indirizzi in forme testuali molto diverse, quindi verificare soltanto la presenza di un punto o dei due punti non basta a convalidare nessuna delle due. Questo rilevatore analizza l’intera stringa secondo le regole strutturali di entrambe le versioni. IPv4 deve contenere esattamente quattro ottetti decimali separati da punti. Ogni ottetto deve essere compreso tra 0 e 255, contenere solo cifre e non iniziare con zero. IPv6 utilizza otto gruppi esadecimali separati da due punti e può abbreviare una sequenza di gruppi zero con doppi due punti. Un indirizzo IPv6 può inoltre terminare con un indirizzo IPv4 decimale incorporato, purché il conteggio complessivo dei gruppi rimanga corretto. Il risultato indica IPv4 o IPv6 soltanto dopo che l’intero valore ha superato la convalida. Un valore che assomiglia semplicemente a un indirizzo viene classificato come nessuno dei due e include un motivo che identifica la regola violata. In questo modo Lei può impiegare il risultato nella convalida di moduli, nei controlli di configurazione, nella pulizia delle importazioni e nei test automatici senza accettare dati errati a causa di una supposizione troppo permissiva.
Usi l’output canonico per confronti e archiviazione
Un indirizzo IP valido può avere più rappresentazioni testuali, soprattutto nel caso di IPv6. Le lettere esadecimali maiuscole e minuscole esprimono gli stessi valori, gli zeri iniziali in un gruppo non cambiano l’indirizzo e una sequenza di gruppi zero può essere compressa. Il risultato IPv6 canonico usa lettere minuscole, elimina gli zeri iniziali superflui e comprime la sequenza più lunga di almeno due gruppi zero. Se più sequenze hanno la stessa lunghezza, viene compressa la prima. I componenti IPv4 decimali incorporati vengono convertiti nei gruppi esadecimali equivalenti, così la risposta mantiene sempre un’unica forma IPv6 coerente. IPv4 viene restituito come quattro normali ottetti decimali. Queste regole permettono di confrontare stringhe canoniche senza scambiare due grafie dello stesso indirizzo per due endpoint distinti. Sono inoltre utili per preparare log, deduplicare configurazioni, creare snapshot di test o presentare un indirizzo alla revisione umana. La canonicalizzazione non esegue DNS, geolocalizzazione, analisi di sottorete o test di raggiungibilità; modifica soltanto la rappresentazione, senza alterare il valore numerico dell’indirizzo.
Interpreti i motivi di rifiuto e i limiti rigorosi
Quando il testo dell’indirizzo non è valido, la risposta lo classifica come nessuna versione e spiega il motivo del rifiuto. Gli errori IPv4 comuni includono un ottetto mancante, un componente superiore a 255, caratteri non decimali o uno zero iniziale che software meno recenti potrebbero interpretare diversamente. Per IPv6 sono frequenti un gruppo più lungo di quattro cifre esadecimali, un numero errato di gruppi espansi, più di una coppia di doppi due punti o una compressione che non sostituisce alcun gruppo. Le parentesi quadre usate negli URL, le lunghezze di prefisso CIDR, i numeri di porta e gli identificatori di zona sono intenzionalmente esclusi dal contratto di input. Rimuova questi elementi e invii soltanto l’indirizzo. Questo limite rigoroso rende la convalida prevedibile tra browser, server e linguaggi i cui parser possono accettare forme storiche differenti. Un indirizzo assente o non espresso come stringa è un errore di contratto; una stringa con sintassi errata è invece un normale risultato accompagnato dal motivo. L’algoritmo non usa rete né stato esterno, quindi richieste ripetute concordano sempre. Ogni richiesta API costa $0.002, mentre la versione nel browser può essere eseguita localmente.
Casi d'uso
Convalidare dati di configurazione
Rifiuti indirizzi host non validi prima che raggiungano regole del firewall, impostazioni dei servizi o modelli di distribuzione.
Normalizzare un inventario di indirizzi
Converta grafie IPv6 equivalenti in una rappresentazione canonica prima di confrontare o deduplicare i record.
Spiegare gli errori nei moduli
Mostri un motivo sintattico utile quando viene inserito un valore che non è un indirizzo IPv4 o IPv6 completo.
Domande frequenti
Il rilevatore contatta l’indirizzo?
No. Convalida e formatta il testo localmente, senza DNS, sonde di rete, geolocalizzazione o verifiche della reputazione.
Sono accettati i prefissi CIDR?
No. Invii soltanto l’indirizzo. Un suffisso come /24 o /64 è una notazione di prefisso di rete ed è escluso dal contratto del rilevatore.
Perché gli ottetti IPv4 con zeri iniziali vengono rifiutati?
Gli zeri iniziali hanno storicamente causato ambiguità tra decimale e ottale. La notazione decimale rigorosa evita interpretazioni incoerenti.
Come viene canonicalizzato un indirizzo IPv6?
Le lettere esadecimali diventano minuscole, gli zeri iniziali dei gruppi vengono rimossi e la sequenza di zeri valida più lunga viene compressa con doppi due punti.
Posso inviare un URL IPv6 tra parentesi quadre e con porta?
No. Rimuova prima parentesi e porta, perché appartengono alla sintassi dell’URL o dell’endpoint, non all’indirizzo IP.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo strumento deterministico nel browser può anche essere eseguito localmente nella pagina.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.ip_version_detect",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |