¿Editar y reproducir XHR Chrome / Firefox, etc.?

144

He estado buscando una forma de alterar una solicitud XHR realizada en mi navegador y luego volver a reproducirla. Digamos que tengo una solicitud POST completa realizada en mi navegador, y lo único que quiero cambiar es un valor pequeño y luego reproducirlo nuevamente. Esto sería mucho más fácil y rápido de hacer directamente en el navegador.

Busqué en Google un poco y no he encontrado la manera de hacerlo en Chrome o Firefox. ¿Hay alguna forma de hacerlo en cualquiera de esos navegadores, o tal vez en otro?

madsobel
fuente
Si aterriza aquí después de darse cuenta de que "Replay XHR" no funciona en Chrome, tenga en cuenta que en casos con OPTIONSsolicitudes de verificación previa ( ), debe hacer clic en "reproducir" en la solicitud de verificación previa, no en la solicitud final real.
Janaka Bandara

Respuestas:

180

Cromo :

  • En el panel Red de devtools, haga clic con el botón derecho y seleccione Copiar como cURL
  • Pegue / edite la solicitud y luego envíela desde un terminal, suponiendo que tiene el curlcomando

Ver captura:

ingrese la descripción de la imagen aquí

Alternativamente, y en caso de que necesite enviar la solicitud en el contexto de una página web , seleccione "Copiar como recuperación" y edite y envíe el contenido desde el panel de la consola de JavaScript.


Firefox

Firefox permite editar y reenviar XHR directamente desde el panel Red. La captura a continuación es de Firefox 36:

ingrese la descripción de la imagen aquí

Michael P. Bazos
fuente
Esto podría ser realmente lo que estoy buscando. Sabía que podía copiar la llamada cURL, pero no podía ejecutarla directamente desde mi terminal, ya que me autenticaría. Pero con el terminal incorporado directamente a Chorme, supongo que la llamada se realiza "dentro" del navegador. Si es así, esto debería sellar el trato.
madsobel
14
Agregué
Pequeño truco: si desea ver la salida de cURL en el navegador, ejecútelo en la CLI de esta manera y curl ... > preview.htmlluego abra el archivo en el navegador.
afilina
@afilina para automatizar aún más este proceso, puede agregar && open preview.htmlen macOS y el archivo se abre directamente después de la solicitud
CodeBrauer
2
¡En este caso, Firefox está haciendo un trabajo mucho mejor con diferencia!
jpenna
41

Chrome ahora tiene Copiar como recuperación en la versión 67:

Copiar como búsqueda

Haga clic con el botón derecho en una solicitud de red y luego seleccione Copiar> Copiar como recuperación para copiar el fetch()código equivalente para esa solicitud en su portapapeles.

https://developers.google.com/web/updates/2018/04/devtools#fetch

Salida de muestra:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

La diferencia es que Copiar como cURL también incluirá todos los encabezados de solicitud (como Cookie y Aceptar) y es adecuado para reproducir la solicitud fuera de Chrome. El fetch()código es adecuado para reproducir dentro del mismo navegador.

Josh Lee
fuente
66
Gracias por esto. Para cualquier otra persona que se pregunte, simplemente puede pegar el fetchcomando directamente en la consola de Chrome y reproducir la solicitud.
Eric Kigathi
77
Puede usar lo siguiente después de la búsqueda para resolver la promesa devuelta por la búsqueda y ver el cuerpo de la respuesta (suponiendo que sea JSON).then(r => r.json()).then(json => console.log(json))
compatible con POSIX el
1
@Josh Lee, creo que los consejos que cumplen con POSIX fueron buenos y se pueden agregar a esta respuesta.
Nabi KAZ el
@ Buenos consejos compatibles con POSIX, ¿hay un comando más pequeño que se pueda tener en mi mente?
Nabi KAZ el
Para aquellos que se preguntan dónde pegar el código de recuperación: péguelo y
modifíquelo
20

Mis dos sugerencias:

  1. El complemento Postman de Chrome + el complemento Interceptor Postman . Más información: Postman Capturing Requests Docs

  2. Si estás en Windows, entonces Fiddler de Telerik es una opción. Tiene una opción de compositor para reproducir solicitudes http, y es gratis.

zszep
fuente
8
Desde que comencé a usar Postman + la extensión cromada Interceptor, no he tenido ninguna necesidad de Fiddler.
threadster
3
La aplicación FYI Postman para Chrome ahora está en desuso y configurar esto en una versión independiente es un poco más difícil
yefrem
muchas gracias justo lo que estaba buscando!
Mohammad
4

Para Firefox, el problema se resolvió solo. Tiene implementada la función "Editar y reenviar".

Para la extensión de Tamper de Chrome parece hacer el truco.

Jari Turkia
fuente
Que ya no se actualiza y tiene malas críticas. La mejor alternativa es usar Firefox para este tipo de trabajo.
T3rm1
Si. La situación de reenvío parece cambiar bastante rápido. Ahora Chrome tiene reenviar solicitudes XHR, pero no permite la edición.
Jari Turkia
tenga cuidado con Firefox ver.76 que parece tener problemas con el token CSRF en las cookies al editar y reenviar. Intentado con la versión 37 funcionó bien, pero con la versión 76 tiene un problema de validación de token CSRF.
puppyceceyoyo
1

Han pasado 5 años y los desarrolladores de Chrome no ignoraron este requisito esencial.
Si bien no ofrecen ningún método para editar los datos como en Firefox, ofrecen una reproducción completa de XHR.
Esto permite depurar llamadas ajax. "Replay XHR" repetirá toda la transmisión.
ingrese la descripción de la imagen aquí

Juan
fuente
0

Hay algunas formas de hacer esto, como se mencionó anteriormente, pero en mi experiencia, la mejor manera de manipular una solicitud XHR y reenviarla es usar las herramientas de desarrollo de Chrome para copiar la solicitud como solicitud cURL (haga clic derecho en la solicitud en la pestaña de red ) y simplemente importar a la aplicación Postman (botón de importación gigante en la esquina superior izquierda).

quinlo
fuente
0

¡No es necesario instalar extensiones de terceros!

Existe el fragmento de JavaScript , que puede agregar como marcador de navegador y luego activar en cualquier sitio para rastrear y modificar las solicitudes. Parece que:

ingrese la descripción de la imagen aquí

Para obtener más instrucciones, revise la página de github.

T.Todua
fuente