web-dev-qa-db-fra.com

Comment accéder à la page Web via le terminal?

Je teste un serveur Apache. Normalement j'ouvre x.x.x.x/directory/index.php dans Firefox, puis lisez le httpd/error_logs et dépanner.

Ma question est la suivante: que faire si je n'ai pas de navigateur Web (par exemple, Chrome/Firefox) sur mon système de test? Comment faire un test équivalent via le terminal? J'ai essayé ping x.x.x.x/directory/index.php mais cela ne fonctionne pas de cette façon.

5
Kel

Ma question est: que faire si je n'ai pas Chrome/Firefox activé? Comment faire le test équivalent via le terminal? J'ai essayé ping x.x.x.x/directory/index.php Mais cela ne fonctionne pas de cette façon.

Utiliser ping ne fonctionnerait jamais. Tout ce que ping fait est d'envoyer/recevoir des paquets ICMP à partir d'une adresse réseau. Ainsi, dans votre exemple, la seule chose que vous pourriez réellement "cingler" est ping x.x.x.x Avec le reste de l'URL (/directory/index.php) Étouffant simplement ping alors qu'il tente de résoudre le URL entière comme s'il s'agissait d'un nom d'hôte. L'erreur serait quelque chose comme:

ping: cannot resolve x.x.x.x/directory/index.php: Unknown Host

Mais pour le type spécifique de test/débogage de serveur Web que vous recherchez, j'utilise habituellement curl mais j'utilise spécifiquement curl -I -L Qui ne renverra que les en-têtes de réponse de base et suivez toutes les redirections d'emplacement que le serveur pourrait avoir en place; l'indicateur -I indique à curl d'afficher simplement l'en-tête et l'indicateur -L indique à curl de suivre toutes les redirections de serveur rencontrées.

Par exemple, si j'exécute cette commande curl -I -L Sur google.com:

curl -I -L google.com

J'obtiens les en-têtes de réponse suivants:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Mon, 24 Aug 2015 02:16:32 GMT
Expires: Wed, 23 Sep 2015 02:16:32 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

HTTP/1.1 200 OK
Date: Mon, 24 Aug 2015 02:16:32 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1440382592:LM=1440382592:V=1:S=5ToXkoBHyK2BAjyf; expires=Thu, 31-Dec-2015 16:02:17 GMT; path=/; domain=.google.com
Set-Cookie: NID=70=VKM1D8HeCMlye1YjMDYSqPlyIpPHKkitAor--wiqYznamENfNig69ZBW5oBgIR7wOFzVaUB6i4WKj-tqa2WcqbOCeVTc0hB4xQWQzBxpNazPp_20dBiU4in0wIop8mhz; expires=Tue, 23-Feb-2016 02:16:32 GMT; path=/; domain=.google.com; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding

Notez qu'il y a deux en-têtes retournés:

  • HTTP/1.1 301 Moved Permanently
  • HTTP/1.1 200 OK

Ceci est utile non seulement pour les tests du serveur Apache mais aussi pour le débogage mod_rewrite réécrire les règles et autres.

Cette méthode curl -I -L Est beaucoup plus utile et efficace que d'utiliser un navigateur visuel comme Chrome ou Firefox car ces programmes sont conçus pour optimiser la vitesse de navigation en mettant en cache du contenu. Ce qui signifie que vous pouvez créer un ajustement à votre serveur Apache une seconde, mais le navigateur visuel n'affichera pas nécessairement la modification tout de suite, sauf si vous videz le cache ou forcez la page à se recharger plusieurs fois. Le curl -I -L vous montre exactement ce que le serveur à ce moment fait en réponse à votre demande qui est exactement ce que vous voulez/besoin lors du débogage des configurations de serveur.

7
JakeGould

La commande souhaitée est curl ou wget (selon vos préférences personnelles). Ces commandes adressent une requête HTTP au serveur. Ils ne sont pas parfaits pour simuler la charge d'une page entière (ils ne chargent pas, par défaut, les actifs référencés par la page HTML, et ils ne peuvent pas exécuter javascript ou interagir avec la page), mais cela ne fonctionne pas 'sonnent pas comme vous êtes après quelque chose d'aussi avancé. Ainsi, curl ou wget fonctionnera très certainement très bien pour vous.

6
womble

@womble a raison. Cependant, si vous n'avez pas curl ou wget, vous pouvez utiliser telnet:

telnet x.x.x.x 80
GET /directory/index.php HTTP/1.1
Host: x.x.x.x

Puis appuyez sur Enter une fois de plus (pour la fin des en-têtes) et vous obtiendrez le code HTML brut. Vous devrez peut-être frapper Ctrl+D (Unix) ou Ctrl+Z (Windows) pour quitter si le serveur utilise keepalive.

3
cxw

Vous pouvez émettre une demande GET avec OpenSSL:

openssl s_client -quiet -connect cdn.sstatic.net:443 <<eof
GET /stackexchange/js/universal-login.js HTTP/1.1
Connection: close
Host: cdn.sstatic.net

eof

Notez que vous pouvez également utiliser "HTTP/2", mais soyez prudent car certains serveurs (par exemple github.com) ne le prennent pas en charge.

2
Steven Penny

Vous pouvez utiliser un navigateur basé sur du texte. Cette option vous permettra de parcourir la page Web et de tester plus de ses composants. Des choses comme les formulaires par exemple, car il s'agit d'un navigateur à part entière.

Utilisez lynx, ou son frère cadet links, ou elinks.

2
Tośka

Si vous voulez réellement voir la page, je recommanderais d'utiliser Lynx, qui était l'une des recommandations de Michael Hampton. Il rend le HTML et la page peut être interagie avec via le clavier. Ne vous attendez pas à des animations ou des images fantaisistes. :)

Il est disponible via pratiquement tous les gestionnaires de packages, ceux inclus sur Mac OS X inclus.

0
phoenix