Analisando o HTTP(Fiddler)
Autor: Mateus Queiroz Correia | Publicado: 2008-07-25T19:33:00-03:00

Muitas vezes não será necessário depurar o HTTP, talvez alguns desenvolvedores experientes nem conheçam como efetivamente é uma mensagem HTTP de requisição ou resposta. Mas acho importante este conhecimento ou saber que existe meios para analisá-las.Recentemente a Google fez uma análise de requisições feitas ao se logar no Gmail. Nesta análise eles usaram diversos programa como o Httpwatch, WireShark, Fiddler e outros internos. Com esta análise eles otimizaram bastante o desempenho desta funcionalidade! A idéia aqui é mostrar apenas o Fiddler, que é um HTTP Debugging Proxy, ou em português Proxy para depurar HTTP.O Fiddler é grátis e pode ser baixado na seção baixar arquivos de seu site. Será necessário a instalação do .NET framework 2.0.  Como ele é um proxy, pode ser usado por diversos programas clientes, como os navegadores Internet Explorer e o Firefox.Existe um vídeo introdutório excelente sobre o Fiddler, que pode ser baixado neste endereço:http://www.fiddlertool.com/fiddler/help/video/FiddlerQuickStart.wmvEste vídeo explica desde sua instalação até a utilização de diversos de seus recursos. De qualquer forma continuarei abaixo mostrando algumas de suas funcionalidades.Depois de instalado o Fiddler poderá ser iniciado através no Internet Explorer, veja na imagem 1Imagem 1 - Abrindo o FiddlerAo acionar o Fiddler da maneira acima é feito duas coisas, o programa é aberto e é configurado no Internet Explorer o proxy. E é assim que o fiddler funciona, como ele virou o proxy de nossa aplicação ele recebe todas as requisições e respostas feitas pelo Internet Explorer. Assim ele faz o log de TUDO que é trafegado. Veja a configuração do proxy na imagem 2:Imagem 2 - Configuração do proxy no Internet ExplorerAgora vamos usar o Fiddler, ao requisitar um endereço, por exemplo este:http://clienteweb.blogspot.com/2008/07/arquitetura-webhttp-parte-3.htmlO Fiddler irá mostrar em seu painel esquerdo(Web Sessions) as diversas requisições/respostas feitas para recuperar os recursos daquela url. Pode não ser apenas uma única requisição/resposta porque um HTML pode ter internamente várias imagens ou hiperlinks para outros HTMLs e cada hiperlink é necessário fazer outras requisições.Na imagem 3, estamos analisando a primeira requisição:Imagem 3 - Analisando uma requisição no FiddlerVeja que no painel da direita superior é possível ver os cabeçalhos da requisição, onde há informações como:Método e recurso requisitado:GET /2008/07/arquitetura-webhttp-parte-3.html HTTP/1.1Cultura e localização(Português Brasil):Accept-Language: pt-brNavegador e versão:User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)No painel da direita inferior é possível ver os cabeçalhos da resposta, onde há informações como:Protocolo e códigos de status, neste caso 200 é ok:HTTP/1.1 200 OKInformaçõe do servidor:Server: GFE/1.3Repare que nesta visão o Fiddler faz um tratamento das mensagens para formata-las, mas podemos também ver as mensagem sem nenhum tratamento, da forma como realmente foram trocadas, basta clicar na guia raw, conforme Imagem 4:Imagem 4 - Analisando toda a requisiçãoDesta forma vemos que o cabeçalho de resposta e o HTML é separado apenas por caracteres como a quebra de linha.O Fiddler então é um excelente programa para conhecer as diversas requisições feitas para requisitar um determinado recurso. Vale a pena fazer diversas requisições para ver como funciona requisições HTTPs, redirecionamentos, requisições de arquivos que estão em cache e por aí vai!Caso queira, veja também a especificação do HTTP 1.1 e analise cabeçalho códigos de resposta. Isto é uma excelente oportunidade de praticar este tanto de teoria.Referências:http://www.fiddlertool.com/fiddler/http://gmailblog.blogspot.com/2008/05/need-for-speed-path-to-faster-loading.htmlhttp://www.w3.org/Protocols/rfc2616/rfc2616.html