Como acessar a página da web via terminal?

5

Estou testando um servidor Apache. Normalmente eu abro x.x.x.x/directory/index.php no Firefox, depois leio o httpd/error_logs e soluciona problemas.

Minha pergunta é: e se eu não tiver um navegador da Web (por exemplo, Chrome / Firefox) no meu sistema de teste? Como posso fazer um teste equivalente através do terminal? Eu tentei ping x.x.x.x/directory/index.php , mas não funciona assim.

    
por Kel 24.08.2015 / 02:31

6 respostas

6

O comando que você deseja é curl ou wget (dependendo das suas preferências pessoais). Esses comandos fazem uma solicitação HTTP para o servidor. Eles não são ótimos para simular o carregamento de uma página inteira (eles não, por padrão, carregam os ativos referenciados pela página HTML, e eles não podem executar o javascript ou interagir com a página), mas não soa como se você estivesse atrás de algo avançado. Portanto, curl ou wget quase certamente funcionarão bem para você.

    
por 24.08.2015 / 02:34
6

My question is, what if I don’t have Chrome/Firefox on? How can I do the equivalent test via the terminal? I tried ping x.x.x.x/directory/index.php but it doesn’t work that way.

O uso de ping nunca funcionaria. Todo ping é enviar / receber pacotes ICMP de um endereço de rede. Assim, no seu exemplo, a única coisa que você poderia realmente fazer "ping" é ping x.x.x.x com o restante da URL ( /directory/index.php ) apenas sufocando ping ao tentar resolver a URL inteira como se fosse um nome de host. O erro seria algo como:

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

Mas, para o tipo específico de teste / depuração do servidor da Web que você está procurando, geralmente uso curl mas especificamente eu uso curl -I -L , que irá retornar apenas cabeçalhos de resposta básicos e seguir qualquer redirecionamento de local que o servidor possa ter no lugar; o -I sinalizador diz curl apenas para mostrar o cabeçalho e -L sinalizador diz curl para seguir qualquer redirecionamento de servidor que encontrar.

Por exemplo, se eu executar este comando curl -I -L em google.com :

curl -I -L google.com

Eu recebo os seguintes cabeçalhos de resposta:

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

Note que há dois cabeçalhos retornados:

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

Isso é útil não apenas para testes do servidor Apache, mas também é útil para depurar mod_rewrite reescrever regras e tal.

Esse método curl -I -L é muito mais útil e eficiente do que usar um navegador visual como o Chrome ou o Firefox, pois esses programas são projetados para otimizar a velocidade de navegação armazenando conteúdo em cache. O que significa que você pode fazer um ajuste no seu servidor Apache por um segundo, mas o navegador visual não mostrará necessariamente a alteração imediatamente, a menos que você limpe o cache ou force a página a recarregar algumas vezes. O curl -I -L mostra exatamente o que o servidor está fazendo em resposta à sua solicitação, exatamente o que você deseja / precisa ao depurar as configurações do servidor.

    
por 24.08.2015 / 04:23
3

@womble está certo. No entanto, se você não tiver curl ou wget , poderá usar o telnet:

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

Em seguida, pressione Enter mais uma vez (para o final dos cabeçalhos) e você receberá o HTML bruto. Você pode ter que pressionar Ctrl + D (Unix) ou Ctrl + Z (Windows) para sair se o servidor usa keepalive.

    
por 24.08.2015 / 02:49
1

Você pode enviar uma solicitação GET com o 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

Note que você também pode usar "HTTP / 2", mas tenha cuidado porque alguns servidores (por exemplo, github.com) não são compatíveis.

    
por 25.01.2018 / 01:15
0

Você pode querer usar um navegador baseado em texto . Esta opção permitirá que você percorra a página da Web e teste mais de seus componentes. Coisas como formulários, por exemplo, já que é um navegador completo.

Use lynx ou seu irmão mais novo links ou elinks .

    
por 24.08.2015 / 04:02
0

Se você quiser realmente visualizar a página, recomendo usar Lynx , que foi uma das recomendações de Michael Hampton. Ele renderiza o HTML e a página pode ser interagida através do teclado. Só não espere animações extravagantes ou imagens. :)

Ele está disponível por meio de praticamente todos os gerenciadores de pacotes, incluindo os do Mac OS X.

    
por 24.08.2015 / 04:03