Red de conocimiento informático - Material del sitio web - ¿Cómo capturar los resultados de la solicitud en un script de Fiddler e iniciar una nueva solicitud para el contenido devuelto?

¿Cómo capturar los resultados de la solicitud en un script de Fiddler e iniciar una nueva solicitud para el contenido devuelto?

Reenvíe la solicitud según las condiciones a través de FiddlerScript

Fiddler es una poderosa herramienta de depuración web Las funciones específicas no se describen aquí. Consulte el siguiente enlace y el manual en el sitio web oficial de Fiddler. Este artículo presenta principalmente la función de solicitud de retransmisión de Fiddler e implementa solicitudes de retransmisión condicional a través de scripts personalizados. Al depurar la Web, a menudo nos encontramos con situaciones en las que las solicitudes del navegador son normales pero las solicitudes del programa son anormales. En este momento, a menudo necesitamos usar Fiddler para comparar las similitudes y diferencias entre las dos solicitudes, y luego reenviar una solicitud para cambiar los parámetros o encabezados HTTP para ver la diferencia en los resultados devueltos, a fin de determinar qué parámetro o HTTP El encabezado causó el problema. Hay muchas opciones de retransmisión diferentes, como se muestra a continuación, con tres opciones de uso común:

Reenviar solicitud: reenvía directamente la solicitud seleccionada.

Volver a publicar y editar: reenvía la solicitud seleccionada y rompe el punto antes de la solicitud para que la solicitud pueda modificarse.

Reemitir desde Composer: enviar una solicitud seleccionada a la ventana de Composer tiene el mismo efecto que arrastrar la solicitud a Composer y permite un control más preciso de la solicitud en la ventana de Composer.

Haga clic para ingresar una descripción de la imagen.

Normalmente, simplemente reenviar la solicitud especificada o editarla no es suficiente. En el proyecto, ocasionalmente nos encontramos con la situación en la que primero se emite la solicitud A y luego se emite la solicitud B en función de un cierto valor en el resultado de la solicitud A. Por ejemplo, hay dos interfaces: la interfaz get_random_server.php devuelve aleatoriamente un servidor a través de la ID recibida, la interfaz get_data.php obtiene datos basados ​​en la ID del servidor en este momento. Aquí hay un ejemplo:

localhost/get_random_server. data = Hola-> Devolver resultado JSON: {éxito: verdadero, sid: 2}

localhost/get_data.php? sid=2

En este momento, la escalabilidad de Fiddler puede mostrar su gran poder. Hay dos formas de ampliar Fiddler: FiddlerScript y el mecanismo de complemento son suficientes aquí. Seleccione reglas personalizadas... Abra el archivo de script personalizado de Fiddler, CustomRules.js, en el elemento de menú Reglas de Fiddler. Este archivo generalmente se guarda en el directorio \Documents\Fiddler2\Scripts. Recomiendo usar el editor de scripts FIDER para editar scripts. El editor de scripts de Fidder tiene funciones de resaltado y verificación de sintaxis, y proporciona una lista de las funciones integradas de Fiddler en el panel derecho. Al expandir y explorar la lista de funciones a la derecha, básicamente puede obtener una descripción general de varias funciones que se pueden usar:

aplicación fiddler. enviar solicitud

aplicación oproxy. . sendrequestandwait

objeto fiddler .utilitiesuserequest

Practiquemos usando el siguiente código. Copie el siguiente código en CustomRules.js y guárdelo. Fidder ScriptEditor comprobará automáticamente si hay errores de sintaxis y recargará el script sin reiniciar el script de Fiddler para que surta efecto. CustomRules.js utiliza la sintaxis JScript.Net, para Javascript o . Una introducción rápida a los programadores de C#. En este punto, seleccione aleatoriamente una solicitud en Fiddler, haga clic derecho y encontrará una opción Probar solicitud de envío en la parte superior. Seleccionar esta opción proporciona la misma funcionalidad que volver a emitir la solicitud y reenviar la solicitud especificada.

12345678910111213 función de acción de contexto estático público ("Solicitud de envío de prueba") Enviar solicitud (o sesiones: sesión[]){? if (oSessions. length == 0) devuelve una aplicación aburrida. Log.LogString("Enviando...");? var seleccionado: Sesión = o sesiones [0];? var oSD = nuevo sistema. colecciones. diccionario de cadenas especializado(); var RES = aplicación violinista. sendrequestandwait(seleccionado. o solicitud. encabezados, seleccionado. RequestBody, oSD, aplicación aburrida). Log.LogString("La solicitud ha sido enviada."); Aplicación aburrida. log . log string(RES . GetResponseBodyAsString());} La función de envío de solicitud/sendrequestandwait es inconveniente. Sus dos parámetros oHeaders y arrRequestBodyBytes son HTTPRequestHeaders y Byte [] respectivamente. Para llamar a este método, el encabezado y el cuerpo HTTP deben convertirse a estos dos tipos, lo cual no es tan simple como una cadena. En este momento, la función utilIssueRequest solo satisface nuestras necesidades de personalización y puede controlar con precisión los detalles de una solicitud, similar a Raw en Composer. El siguiente código es un ejemplo del uso de la función utilIssueRequest. Las solicitudes HTTP específicas se unen en forma de cadena.

123456789101121314151617181920212223242526272828) función sonda Sesión(o Sesión:Sesión[]){? if (oSessions. length == 0) devuelve una aplicación aburrida. Log.LogString("Detección...");? var seleccionado: Sesión = o sesiones [0]; var raw =? // método var método: Cadena = seleccionado. Método de solicitud; var URL:Cadena = seleccionada. URL completa; var protocolo = "HTTP/1.1"; Log.LogString(método + " " + url + " " +protocolo); raw += método + " " + url + " " +protocolo +" \ r \ n ";? //encabezados para(var I:int = 0;i<selected. o solicitud. encabezados. count();i++){ var encabezado = seleccionado o solicitud. encabezados[I]; Log.LogString(encabezado); raw+= encabezado+" \ r \ n ";}?//bodyfiddlerapapplication. log cadena de registro("-"); var cuerpo = seleccionado. GetRequestBodyAsString(); aplicación aburrida. log .log cadena(cuerpo);raw+= " \ r \ n "+cuerpo;? objeto violinista. utilissuserequest (aplicación aburrida).

Log.LogString("La solicitud ha sido enviada."); El formato de la solicitud HTTP es el siguiente:

1234567891011 POST HTTP://localhost/get_random_server. PHP HTTP/1.1 host:conexión localhost: keep-alive aceptar: texto/html, aplicación/xhtml+xml, aplicación/XML; q=0.9, imagen/webp, */* q = 0.8 Agente de usuario: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, como un gecko) Chrome/38.0.2125.122 Safari/537.36 aceptar-codificación:gzip,deflate,sdchAccept-language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4 Tipo de contenido: aplicación/x-www-form-urlencoded longitud del contenido: 23? El trabajo posterior a data=%E4%BD%A0%E5%A5%BD será algo natural. Obtenga el resultado de la solicitud A a través de SendRequestAndWait, analice el resultado de la solicitud A para obtener el parámetro sid y luego empalme la solicitud HTTP para llamar a la función utilIssueRequest, que se omite aquí.