12/08/2010

Ifconfig.me, connaitre son IP publique en un rien de temps

Page d'accueil du siteBeaucoup d’entre nous sont le plus souvent connectés en NAT derrière un routeur ou connectés derrière un proxy, voire un VPN. Difficile donc de connaitre son IP publique ou son ISP en quelques instants. Certes, pas mal de sites de type «What is my IP?» permettent d’accéder à ce genre d’infos, mais ma préférence va vers ifconfig.me.

Si vous ouvrez cette URL depuis un navigateur internet, vous y verrez les informations habituelles que ce genre de site offre: IP, ISP, informations sur le navigateur, et géolocalisation de l’IP. Ce n’est pas cela qui rend ce site pratique et indispensable.

Ifconfig.me a la particularité d’être utilisable en ligne de commande, avec le célèbre client cURL. Prenons un exemple simple:

$ curl ifconfig.me

Renverra l’adresse IP publique directement. Ni plus, ni moins. Pas besoin d’ouvrir un navigateur internet, ni de devoir parcourir une page à la recherche de l’élément recherché.

Il existe d’autres commandes, telles que:

$ curl ifconfig.me/host
$ curl ifconfig.me/ua
$ curl ifconfig.me/all

Ces trois commandes renverront respectivement l’éventuel hostname lié à votre IP publique, votre user agent et l’ensemble des infos données par le site. La liste complète des commandes est disponible sur le site.

  1. | #1

    Excellent ! merci. :)

  2. | #2

    Sympa ! :)

  3. Lenezir
    | #3

    Utile ! Merci bien. 😀

  4. e1even
    | #4

    Merci pour l’article, bien classe!

  5. Jo
    | #5

    Excellent, merci bien, je devais passer par des méthodes DNS complexes pour déterminer si mon trafic de serveur était bien routé sur l’interface VPN, et maintenant ça va me simplifier la vie !

  6. Grunt
    | #6

    “curl ifconfig.me/ua”

    Ho, Mon User-Agent est celui de curl, quelle surprise!

  7. pini
    | #7

    Pas mal…
    Une question : comment font-ils pour géolocaliser ? Je ne vois pas d’info de géolocalisation dans les résultats de requêtes “all”.

  8. AnoNico
    | #8

    Bonjour,
    Super astuce. En revanche je me demande comment fonctionne cette “mini-appli”, sachant que cURL par défaut va récupérer de l’HTML (l’index probablement si je fais un curl http://ifconfig.me). Est-ce intégré dans le code source de cURL (par ex pour ce site je renvoie la valeur d’une balise), est-ce un protocole particulier (du type je te demande une variable tu me renvoies sa valeur), est-ce que ça passe par du HTTP ou du TCP brut (à la Telnet)? J’avoue avoir cherché un peu ce qu’il y avait sous le capot mais en vain… Il y a beaucoup de pages sur curl+php pour réussir à en tirer qq chose.
    En tout cas c’est très intéressant, puisque cela permet d’éviter d’avoir à parser des pages HTML ce qui est particulièrement fastidieux et vulnérable à un changement de structure de la part de l’hébergeur.
    Merci, @+

  9. | #9

    @AnoNico Ils font un simple check de l’user-agent, c’est facilement vérifiable :

    $ curl --user-agent "NAWAK" ifconfig.me
    $ wget --user-agent "curl" -O - ifconfig.me
  10. AnoNico
    | #10

    Donc tout ça passe bien par du HTTP, sauf qu’au lieu de renvoyer une page HTML quand le user-agent est cURL, ils envoient juste du plaintext avec la réponse. Brillant! Je suppose que côté serveur c’est implémenté avec un CGI ou un PHP.

    Ca va pas mal dans le sens de Weboob (http://weboob.org), je trouve cela très élégant comme procédé, on peut ainsi réaliser des opérations simples sans se tartiner des pages complètes. Bon sauf que pour Weboob justement lui il se colletine du parsing à gogo, puisque les pages qu’il consulte sont du pur HTML, et quand la structure change, bein faut mettre à jour.

    Du coup je suis en train de penser que l’on peut même passer des arguments avec du POST (genre curl nearesthotel.com/?city=paris). Je vais creuser un peu tout ça, parce que c’est vrai que revenir à la philosophie KISS ça ne fait pas de mal de temps en temps, surtout à l’ère des smartphones, tablettes etc… Marre de bouffer du flash et autres pubs pour que dalle ^^

    En tout cas merci pour la réponse! Je suis en train de lire le reste du blog actuellement, très bien foutu. Merci!

  11. | #11

    Bon tuto merci!

  12. JIX
    | #12

    Vraiment pas mal ce p’tit truc la……..commande tres appreciable

  13. Ink
    | #13

    Bonjour,
    Merci pour ce tuto. Seulement, quand j’utilise un proxy, le site me donne l’ip du proxy alors que la ligne de commande m’en donne une autre.
    Vous auriez une idée de pourquoi svp?
    Merci

  14. | #14

    @Ink Ca dépend comment tu as configuré ton proxy. Si tu l’as configuré via ton browser il est évident qu’il n’affectera pas les requêtes faites dans un terminal par exemple.

  1. Pas encore de trackbacks