Verifique se as chamadas HTTP são gzipadas

2

Supondo que eu tenha um servidor de aplicativos (Linux) rodando na porta 80, como posso ter certeza (com o tcpdump, eu acho) que todas as requisições recebidas são gzipadas e todas as respostas são gzipadas também? Além disso, como o próprio servidor faz chamadas para outro servidor (Windows), como posso verificar se há pacotes de entrada e saída (se estiverem compactados, quero dizer) para e desse outro servidor? Obrigado

    
por pistacchio 18.07.2013 / 09:15

3 respostas

4

tcpdump sozinho não é uma ótima maneira de fazer isso, tecnicamente você pode determinar a resposta inspecionando os pacotes, mas não é a melhor camada de rede para examinar. O primeiro problema é que você precisará lidar com cabeçalhos HTTP variáveis, o segundo problema é que, com conexões HTTP / 1.1 e persistentes, você precisa inspecionar cada pacote de resposta ou remontar cada solicitação / resposta.

As solicitações HTTP são muito raramente comprimido . Pode ser útil inspecionar as solicitações de presença ou ausência de "gzip" ou "deflate" no cabeçalho Accept-Encoding: .

As respostas HTTP devem ter um cabeçalho Content-Encoding: contendo gzip ou deflate quando a compactação for usada.

Coisas a serem observadas:

  • devido a um grande número de bugs do navegador, muitos servidores da web terão uma lista padrão do User-Agent que não ativará a compactação para
  • é muito provável que um conjunto padrão de padrões de arquivo / URL ou tipos de conteúdo MIME também, compactação de PDFs e imagens, muitas vezes não é feito
  • arquivos pequenos não podem ser compactados

No Apache, uma forma de registrar o uso da compactação é usar DeflateFilterNote de mod_deflate e, em seguida, alterar suas diretivas de log, eu costumo usar pelo menos o seguinte em um personalizado LogFormat :

%>s %B %I %O %D %{instream}n/%{outstream}n/%{ratio}n%% %{Content-Type}o

que registra e desativa o tamanho total, os detalhes de compactação e o tipo MIME.

Eu usei httpry para assistir a solicitações HTTP, mas não funcionará bem aqui porque infelizmente não o recurso para inspecionar e registrar os cabeçalhos response (ele também não remonta pacotes ou fluxos HTTP).

Dois programas que devem fornecer os detalhes necessários são justsniffer e xplico (note que eu nunca usei, pois eles são um pouco difíceis de compilar devido às suas dependências, se você pode obter pacotes binários para o seu sistema operacional, então você deve estar ok).

    
por 09.10.2013 / 14:31
2

Você pode verificar o cabeçalho da conexão HTTP. Se o cabeçalho contendo o campo Content-Encoding: gzip , o conteúdo é gzipado (veja também wikipedia e Protocolo HTTP W3C ).

    
por 18.07.2013 / 10:17
1

Tente usar o ngrep ---

O ideal é que você conheça o endereço IP com o qual o servidor da Web está falando. Caso contrário, você precisará capturar a maioria das coisas para encontrar a solicitação e a resposta.

veja link

    
por 20.08.2014 / 16:47