Connaître les protocoles : HTTP

Publié le par Peck

Maintenant sur http://linux-attitude.fr/post/Connaitre-les-protocoles-%3A-HTTP

Niveau
:
Résumé: telnet www.net http

Il existe toujours de bonnes raisons pour connaître les protocoles ou tout au moins savoir faire les commandes de base. Dans le cas du HTTP, c'est assez simple. Le protocole HTTP 1.0 peut être résumé en une ligne :
$ telnet www.com http
> GET /toto.html

Et c'est tout, la page http://www.com/toto.html est renvoyée telle quelle.

Pour quelques options supplémentaires, il faut préciser la version de http désirée (HTTP/1.0 ou HTTP/1.1).

Le HTTP 1.0 est tout de même dépassé de nos jours. Les sites web étant très souvent mutualisés sur les mêmes serveurs, il vous faut connaître le HTTP 1.1. La base reste assez simple (attention au dernier retour à la ligne) :
$ telnet www.com http
> GET /toto.html HTTP/1.1
> Host: www.com
>

Et voilà, vous avez quasiment le même résultat précédé de quelques en-têtes. Ou un résultat différent s'il y avait plusieurs sites différents hébergés sur www.com. N'oubliez pas ce petit truc, c'est bien pratique pour tester un site dont l'entrée DNS n'est pas encore déclarée correctement. Il suffit de faire le telnet directement sur l'ip.

Notez qu'avec wget vous pouvez faire l'équivalent :
$ wget --header="Host: www.com" "http://127.0.0.1/toto.html"

On peut maintenant faire un petit peu plus compliqué et ajouter un peu d'authentification
$ telnet www.com http
> GET /toto.html HTTP/1.1
> Host: www.com
> Authorization: Basic dXNlcjpwYXNzd29yZA==
>

Ici le texte d'authentification correspond à l'encodage en base64 de la chaine user:password, chose qu'on obtient de la façon suivante :
$ perl -MMIME::Base64 -e 'print encode_base64("user:password")'

On obtient la même chose avec wget :
$ wget --user=user --password=password "http://www.com/toto.html"

ou
$ wget --http-user=user --http-password=password "http://www.com/toto.html"

ou encore
$ wget "http://user:password@www.com/toto.html"

Une dernière chose qu'on ne peut faire avec wget, tester l'existence d'une url (ou sa bonne réponse par le serveur).
$ telnet www.com http
> HEAD /toto.html HTTP/1.1
> Host: www.com
>

Publié dans dadmin

Pour être informé des derniers articles, inscrivez vous :

Commenter cet article

Dicky Greenleaf 26/06/2007 17:43

Il est intéressant de savoir faire la même chose mais en scriptant le tout avec "nc" echo -e "GET / HTTP/1.1\nHOST: www.yahoo.fr\n\n" | nc www.yahoo.fr 80