« IPinfo » : différence entre les versions
(Page créée avec « Si vous désirez n'utiliser que 50 000 requetes par mois, c'est idéal! On s'inscrit en donnant une simple adresse mail et on récupère un token.<syntaxhighlight lang="bash"> export IPINFO_TOKEN="546425b91c438b" # c'est un exemple </syntaxhighlight>La requête la plus simple :<syntaxhighlight lang="bash"> curl "ipinfo.io/95.142.161.196?token=$IPINFO_TOKEN" </syntaxhighlight>Donne la localisation de l'IP du serveur hébergeant ce wiki.<syntaxhighlight lang="jso... ») |
mAucun résumé des modifications |
||
Ligne 18 : | Ligne 18 : | ||
} | } | ||
</syntaxhighlight>Hé oui je suis hébergé chez Gandi depuis plus de 10 ans et j'en suis très satisfait! | </syntaxhighlight>Hé oui je suis hébergé chez Gandi depuis plus de 10 ans et j'en suis très satisfait! | ||
== Authentification == | |||
Nous avons vu ci-dessus une méthode pour utiliser le token. En fait il y en a trois <syntaxhighlight lang="bash"> | |||
# Avec Basic Auth user sans password | |||
$ curl -u $IPINFO_TOKEN: ipinfo.io/95.142.161.196 | |||
# Avec Bearer token | |||
$ curl -H "Authorization: Bearer $IPINFO_TOKEN" ipinfo.io/95.142.161.196 | |||
# Dans la query | |||
$ curl ipinfo.io/95.142.161.196?token=$IPINFO_TOKEN | |||
</syntaxhighlight>Les 3 nous donnent le même "json" en réponse. | |||
== Protocoles == | |||
Dans le cas ci dessus on ne précise pas le protocole. Par défaut c'est le http qui est utilisé par curl mais o peut également utiliser https.<syntaxhighlight lang="bash"> | |||
#HTTP | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196 | |||
#HTTPS | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196 | |||
</syntaxhighlight> | |||
== Les options == | |||
=== IPV4 ou IPV6 === | |||
IPInfo sait indifféremment traiter des IP V4 ou V6.<syntaxhighlight lang="bash"> | |||
#IP V4 | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196 | |||
#IP V6 | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/2001:4b98:dc0:47:216:3eff:feaa:4fe7 | |||
</syntaxhighlight>C'est toujours le même serveur donc, la même réponse. | |||
=== Adresse par defaut === | |||
Si on ne précise pas une IP c'est l'adresse IP du client telle qu'elle est vue par le serveur qui est utilisée.<syntaxhighlight lang="bash"> | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196 | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/ | |||
</syntaxhighlight>Donnent le même résultat si le client est 95.142.161.196 | |||
=== Filtrage de la réponse === | |||
On peut ne demander que certaines informations. | |||
Si la requête globale :<syntaxhighlight lang="bash"> | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196 | |||
# Equivalant a la demande explicite | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/json | |||
</syntaxhighlight>Réponds:<syntaxhighlight lang="json-object"> | |||
{ | |||
"ip": "95.142.161.196", | |||
"hostname": "xvm-161-196.dc0.ghst.net", | |||
"city": "Paris", | |||
"region": "Île-de-France", | |||
"country": "FR", | |||
"loc": "48.8534,2.3488", | |||
"org": "AS203476 GANDI SAS", | |||
"postal": "75000", | |||
"timezone": "Europe/Paris" | |||
} | |||
</syntaxhighlight>On peut ne demander que l'un des champs ci-dessus:<syntaxhighlight lang="bash"> | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/country | |||
</syntaxhighlight>Nous réponds simplement:<syntaxhighlight lang="text"> | |||
FR | |||
</syntaxhighlight>et<syntaxhighlight lang="bash"> | |||
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/timezone | |||
</syntaxhighlight>un simple :<syntaxhighlight lang="text"> | |||
Europe/Paris | |||
</syntaxhighlight> | |||
== Le "content-type" == | |||
IPInfo nous donne un content type qui correspond à notre demande.<syntaxhighlight lang="bash"> | |||
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/ | |||
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/json | |||
</syntaxhighlight>Les deux commandes nous renvoient un objet JSON et donc un content-type:<syntaxhighlight lang="http"> | |||
HTTP/1.1 200 OK | |||
content-type: application/json; charset=utf-8 | |||
</syntaxhighlight>En revanche si on demande un champ spécifique.<syntaxhighlight lang="bash"> | |||
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/country | |||
</syntaxhighlight>Réponds par :<syntaxhighlight lang="http"> | |||
HTTP/1.1 200 OK | |||
content-type: text/html; charset=utf-8 | |||
</syntaxhighlight>Ce qui est étrange on s'attendrais à avoir un <code>text/plain</code> mais non. | |||
De la même façon on peut lui demander un format spécifique avec, par exemple, une option curl <code>-H "Accept: application/json"</code> sur une requête <code>/country</code> rien n'y fait le serveur IPInfo impose son format. |
Version du 19 décembre 2024 à 23:02
Si vous désirez n'utiliser que 50 000 requetes par mois, c'est idéal!
On s'inscrit en donnant une simple adresse mail et on récupère un token.
export IPINFO_TOKEN="546425b91c438b" # c'est un exemple
La requête la plus simple :
curl "ipinfo.io/95.142.161.196?token=$IPINFO_TOKEN"
Donne la localisation de l'IP du serveur hébergeant ce wiki.
{
"ip": "95.142.161.196",
"hostname": "xvm-161-196.dc0.ghst.net",
"city": "Paris",
"region": "Île-de-France",
"country": "FR",
"loc": "48.8534,2.3488",
"org": "AS203476 GANDI SAS",
"postal": "75000",
"timezone": "Europe/Paris"
}
Hé oui je suis hébergé chez Gandi depuis plus de 10 ans et j'en suis très satisfait!
Authentification
Nous avons vu ci-dessus une méthode pour utiliser le token. En fait il y en a trois
# Avec Basic Auth user sans password
$ curl -u $IPINFO_TOKEN: ipinfo.io/95.142.161.196
# Avec Bearer token
$ curl -H "Authorization: Bearer $IPINFO_TOKEN" ipinfo.io/95.142.161.196
# Dans la query
$ curl ipinfo.io/95.142.161.196?token=$IPINFO_TOKEN
Les 3 nous donnent le même "json" en réponse.
Protocoles
Dans le cas ci dessus on ne précise pas le protocole. Par défaut c'est le http qui est utilisé par curl mais o peut également utiliser https.
#HTTP
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196
#HTTPS
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196
Les options
IPV4 ou IPV6
IPInfo sait indifféremment traiter des IP V4 ou V6.
#IP V4
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196
#IP V6
curl -u $IPINFO_TOKEN: http://ipinfo.io/2001:4b98:dc0:47:216:3eff:feaa:4fe7
C'est toujours le même serveur donc, la même réponse.
Adresse par defaut
Si on ne précise pas une IP c'est l'adresse IP du client telle qu'elle est vue par le serveur qui est utilisée.
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196
curl -u $IPINFO_TOKEN: http://ipinfo.io/
Donnent le même résultat si le client est 95.142.161.196
Filtrage de la réponse
On peut ne demander que certaines informations.
Si la requête globale :
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196
# Equivalant a la demande explicite
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/json
Réponds:
{
"ip": "95.142.161.196",
"hostname": "xvm-161-196.dc0.ghst.net",
"city": "Paris",
"region": "Île-de-France",
"country": "FR",
"loc": "48.8534,2.3488",
"org": "AS203476 GANDI SAS",
"postal": "75000",
"timezone": "Europe/Paris"
}
On peut ne demander que l'un des champs ci-dessus:
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/country
Nous réponds simplement:
FR
et
curl -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/timezone
un simple :
Europe/Paris
Le "content-type"
IPInfo nous donne un content type qui correspond à notre demande.
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/json
Les deux commandes nous renvoient un objet JSON et donc un content-type:
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
En revanche si on demande un champ spécifique.
curl -i -u $IPINFO_TOKEN: http://ipinfo.io/95.142.161.196/country
Réponds par :
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
Ce qui est étrange on s'attendrais à avoir un text/plain
mais non.
De la même façon on peut lui demander un format spécifique avec, par exemple, une option curl -H "Accept: application/json"
sur une requête /country
rien n'y fait le serveur IPInfo impose son format.