2012-08-15 29 views
6

Hola tratando de capturar los datos POST reales en una solicitud HTTP POST usando el proxy browsermob + marco de prueba de selenio. Así que, básicamente, estoy ejecutando una prueba automática utilizando selenio y quiero capturar los pares clave/valor y los datos POST reales de una solicitud HTTP POST durante la prueba. Utilizando la siguiente lógica, solo puedo capturar los pares clave/valor del encabezado POST pero no los datos POST reales (también conocidos como valores de identificación de campo de formulario). ¿Hay alguna manera de capturar realmente el POSTDATA (como las aplicaciones de rastreo, como tamper/live headers en Firefox)?Cómo capturar solicitudes HTTP POST con browsermob-proxy y selenio

ProxyServer proxyServer = null; 
proxyServer = new ProxyServer(9101); 
proxyServer.start(); 

proxyServer.setCaptureContent(true); 
proxyServer.setCaptureHeaders(true); 

Proxy proxy = proxyServer.seleniumProxy(); 
proxy.setHttpProxy("localhost:9101"); 

//selenium test config code, omitted for brevity 

proxyServer.addRequestInterceptor(new HttpRequestInterceptor() { 
public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { 
    Header[] headers = request.getAllHeaders(); 
    System.out.println("\nRequest Headers\n\n"); 
     for(Header h : headers) { 
      System.out.println("Key: " + h.getName() + " | Value: " + h.getValue()); 
     } 

    } 
}); 

Una forma alternativa He leído acerca, pero no pudo llegar al trabajo era para configurar los siguientes indicadores en el servidor browsermob proxy para cierto:

proxyServer.setCaptureContent(true); 
proxyServer.setCaptureHeaders(true); 

Luego de salida del archivo HAR real:

Har har = proxyServer.getHar(); 
Date date = new Date(); 
har.writeTo(new File("c:\\tmp\\har_" + date.getTime())); 

Para ver los pares clave/valor, los datos POST y el contenido real de la respuesta ... pero cuando analizo el archivo HAR ... Solo veo los pares clave/valor del encabezado POST de nuevo ... sin datos POST ... no respon se contenido. Sin embargo, solo estoy interesado en los datos POST reales.

+4

No importa, esto finalmente se solucionó después de comprobar el proyecto de proxy de proxy de navegador en mi espacio de trabajo. El proxyServer.setCaptureContent (true) y proxyServer.setCaptureHeaders (true) deberían funcionar para capturar los parámetros de POST dentro del obj de HAR únicamente. El proxyServer.addRequestInterceptor NO capturará los parámetros POST. – Selwyn

+0

Este comentario realmente debería ser una respuesta. ¡Pero gracias por el comentario! –

Respuesta

0

También tuve el mismo problema. Como solución, capturé todos los datos, convertí el archivo HAR en JSON y luego filtré solo las solicitudes POST del archivo JSON.

Cuestiones relacionadas