Selwyn
Selwyn

Reputation: 3198

How to capture http POST requests with browsermob-proxy and selenium

Hello trying to capture the actual POST data in an HTTP POST request using browsermob proxy + selenium test framework. So basically i'm running an automated test using selenium and I want to capture the key/value pairs and the actual POST data of a HTTP POST request during the test. Using the following logic I can only capture the key/value pairs of the POST header but not the actual POST data (aka the form field id values). Is there a way to actually capture the POSTDATA (like sniffing applications do such as tamper/live headers in firefox)?

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());
       }

   }
});

An alternate way I read about but could not get to work was to configure the following flags in the browsermob proxy server to true:

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

Then output the actual HAR file:

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

To see the key/value pairs, POST Data, and actual content of the response... but when I parse the HAR file... I only see the key/value pairs of the POST header again... no POST data... no response content. I am only interested in the actual POST data though.

Upvotes: 6

Views: 10003

Answers (1)

Pramod
Pramod

Reputation: 1

I also had same problem. As a solution, I captured all the data, converted the HAR file into JSON, and then filtered out only POST requests from the JSON file.

Upvotes: 0

Related Questions