sabato 9 luglio 2011

Curso de Fiddler (HTTP debugger proxy ) en español.

Fiddler Http debugging Proxy

Fiddler fue escrito para el .NET Framework, y permite manipular del trafico HTTP, la instalación es simple, corremos el instalador, vemos la firma digital, aceptamos los términos de licencia, seleccionamos la carpeta de instalación, y estamos listos.

Dentro del internet Explorer vamos a encontrar el icono Fiddler, en la barra de herramientas, si no está visible podemos seleccionar de agregarla en la barra de herramientas, seleccionamos personalizar, y entonces agregar o quitar comandos. Cuando hacemos clic en el icono Fiddler iniciamos  Fiddler, y hay un control de versión contra el servidor si hay una nueva versión disponible.

Observamos la interfaz usuario principal, en la parte izquierda tenemos la lista de sesiones HTTP, La lista de sesiones muestra todas las sesiones HTTP que están corriendo a través de Fiddler, en general Fiddler puede capturar cualquier programa que habilita un proxy HTTP, pero por default se cuelga de winInet el cual es la pila Http utilizada por Internet Explorer y muchas aplicaciones Microsoft como Office. La lista de sesiones cuando hacemos doble clic en una sesión mostrara el Inspector de sesión.

WinInet es un conjunto de funciones de alto nivel (API), para al acceso a contenidos en internet. Esas funciones están disponibles dentro de la biblioteca wininet.dll. La principal ventaja del uso de WinInet, es que oculta los detalles de implementación de los distintos protocolos de internet, pudiendo así ser utilizados más sencillamente. También permite que no sea necesario saber el tipo o método de conexión a internet que se usa.

 El inspector de Sesión muestra el trafico HTTP y en lo alto podemos ver la Solicitud (Request)  y al fondo abajo podemos ver la Respuesta (Response). Hay varias vistas en las solapas que nos muestran diferentes formatos de los datos, en nuestro caso lo que vemos primero es el encabezado de la solicitud (Request Headers), si queremos ver los encabezados en crudo en texto plano hacemos clic en Raw, que nos muestra los bytes crudos que fueron enviados por el cable. También podemos seleccionar los bytes si estamos interesados también. Bajo la Respuestas, Response, hay varias vistas de interés, vemos Headers(Encabezados), TextView del cuerpo de la respuesta HTTP, si es una imagen podemos hacer clic en ImageView para ver si es una imagen y nos será bastante útil, hay una vista Hex (Hexadecimal) , hay una vista Auth (autenticación) que nos va a mostrar datos de autenticación, hay Caching (Almacenamiento en Caché) que toma información acerca de la caché en la respuesta, hay Privacy que analiza la declaración P3P (p3p Statement) si hay alguna presente, Raw que muestra el texto plano de la respuestas, y XML que muestra un XML formateado en árbol si la respuesta esta formateada como XML.

Hay un inspector especial llamado Transformer que nos permite revisar código fragmentado o compresión HTTP, o agregarla si así preferimos, para ver cómo impacta la respuesta (Response). Si estamos viendo en texto plano por ejemplo y la respuesta fue comprimida seguramente vamos a querer utilizar el inspector de transformación (Transformer) para descomprimir la respuestas (Response).

Hay algunas otras solapas en la parte alta de Fiddler. Hagamos clic en la solapa de Performance Statitics (estadísticas de rendimiento), donde podemos ver la cantidad de solicitudes e información acerca de las mismas.

Parados dentro de la página de http://www.fiddler2.com/fiddler2/, limpiemos la lista de sesiones, con las teclas Ctrl-X y hacemos un refrescada de la página y vemos el tráfico que hay en Fiddler, en realidad hagamos un refresco completo con Control + F5, y vemos el tráfico que hizo Fiddler en la sesión de la página inicial (Home page). Si seleccionamos todas veremos que hubo un número de solicitudes, cierta cantidad de bytes enviados, recibidos, separados por tipo de contenido. Podemos seleccionar de visualizar el grafico del tráfico, así entonces podemos decir que la solapa de estadística de rendimiento es útil si queremos obtener un perfil del rendimiento de la aplicación.

La otra solapa es Inspector de Sesión (Session Inspector) que muestra información acerca de la sesión HTTP seleccionada.

La solapa AutoResponder es una característica avanzada que nos permite tener a Fiddler respondiendo en nombre del Servidor, esta es una característica muy interesante si intentamos de determinar seguridad u otro tipo de manejo de la respuesta donde queremos determinar si el cliente está manejando correctamente la respuesta del servidor. En este caso vamos a seguir adelante porque esta es una característica muy avanzada.

La siguiente es la solapa Request Builder (constructor de la solicitud) que es una característica que nos permite crear una solicitud http cruda en lugar de utilizar el navegador, la característica interesante acerca de esta solapa es que podemos arrastrar una solicitud existente desde la lista de sesión y ejecutarla de nuevo fácilmente.

La ultima que vemos es Rules, Menú Rules, Customize (Personalizar) que es un plug-in (adjunto) que enchufa en Fiddler y nos muestra reglas, Fiddler es extensible en muchos modos, podemos utilizar la interfaz IAutoFiddler que nos permite escribir código .NET para extender Fiddler y la tubería de solicitud (Request Pipeline). Y en este caso Rules es una solapa de AutoFiddler que nos muestra el archivo de reglas. Regalas es el modo principal para extender Fiddler. Rules para JavaScript, es un archivo JavaScript que contiene comandos que extienden la interfaz de usuario de Fiddler o modifica la solicitud o la respuesta. Por ejemplo podemos ver  static function OnBeforeRequest(oSession: Session)  esta parte corre antes que un http request es enviado, puede cambiar la solicitud, cambiar los encabezados, puede aún retornar una respuesta automáticamente para la solicitud. El manejador OnBeforeRequest hace un cambio correspondiente a la respuesta. La funciones de reglas como podemos ver en el menú, en cutomize, si lo tenemos instalado, el editor de script Fiddler nos da un resaltador de sintaxis de las reglas que a veces es conveniente, como podemos también ver el menú Rules es extensible. Por ejemplo el submenú User-Agents está armado con nuestro archivo JavaScript.  La última cosa que me gustaría mencionar  es la caja de ejecución rápida, al fondo abajo a la izquierda, que nos permite ejecutar un comando rápidamente. En lugar de utilizar el menú Rules u otro menú podemos explícitamente especificar un comando aquí. En este caso vamos a utilizar una característica de punto de interrupción de Fiddler, bpu significa “Breack point Url” y vamos a hacer un brekpoint en un archivo .css . De modo que en cualquier momento que hay una solicitud de tipo archivo .css desde el navegador Fiddler se detendrá en él, ejemplo cuando hacemos un refresh vemos que hay un post request /Fiddler2/Fiddler.css donde podemos seleccionar interrumpir en la respuesta, ejecutar la solicitud hasta que sea completada o podemos seleccionar. En nuestro caso vamos a seleccionar interrumpir en la respuesta y veremos que sucede. Cuando interrumpimos en respuesta el servidor envía de retorno una respuesta y Fiddler la divide permitiéndonos cambiar y modificar si queremos. En  este caso podríamos cambiar la fuente del cuerpo (body) a Font:small , y en realidad veamos que sucede si eliminamos todo el texto del estilo y seleccionamos Run to Completion, como veremos la visualización de la página Web esta alterada significativamente porque el archivo .css no fue entregado en blanco. Este es un modo rápido en el que podemos cambiar una solicitud o respuesta usando la caja de ejecución rápida (Quick Exec) y los breakpoints de Fiddler.

Vale la pena mencionar que el menú de ayuda Fiddler nos permite de controlar por versiones nuevas, enviar feedback, y visualizar la ayuda de Fiddler. Los tópicos de ayuda se están continuamente expandiendo, discusiones y videos de cómo utilizar Fiddler para cumplir nuestros objetivos.


6 commenti:

  1. Hola, hace nada unn amigo me a comentado la capacidad de Fiddler para poder sacar las respuestas de test online, llevo tiempo buscando la manera pero no soy capaz, he tratado de buscar por internet sobre el tema y nada, empiezo a dudar que esto se pueda hacer y pienso que me ha tomado el pelo, puede que tu me puedas decir si esto es posible y como.

    Estoy utilizando un test tonto de pruebas:
    http://www.todotest.com/tests/test.asp?Tip=1&t=116

    Muchas gracias y espero tu respuesta. Un Saludo

    RispondiElimina
  2. No se sí entendí tu pregunta, quieres saber las respuestas antes de completar el test?
    Fiddler como también Firebug (plug in de firefox) te permiten observar el tráfico http desde la solicitud de la pagina y visualizar la repuesta desde el servidor. Si el servidor retorna la página con tags HTML ocultos con las respuestas podrías inspeccionar el HTML y el código script que se ejecuta en la página. Dudo mucho que el servidor retorne las respuestas al cliente web ( Explorer ) para que puedas visualizarlas. La página es ASP y la lógica de validación entiendo se ejecutaría en el servidor cuando envías las respuestas haciendo clic en corregir.

    RispondiElimina
  3. hola utilizo el fiddler en un juego pero parece que lo han parcheado el truco y los premios que los multiplicaba ya no lo hace ¿ es posible cambiar el body para que no salga -1? en vez de acabar todas las flechas en verde acaban en rojo dando error ¿ seria posible cambiar eso ? i una vez cortado de raiz ta no se puede hacer nada ...

    RispondiElimina
  4. hay un juego en KABAM se llama Edgeworld....eh podico hackearlo con FIDDLER.......odrian ayudarme a como usarlo mejor

    RispondiElimina
  5. yo tambien e visto que usan el fiddler en edgeworl me podrian ayudar a mi tambien

    RispondiElimina
  6. Me gustaría aprender a usarlo porqe e visto qe el dragón if Atlántida lo hackean con el fiddler

    RispondiElimina