2012-08-15 12 views
6

Ciao cercando di acquisire i dati POST effettivi in ​​una richiesta POST HTTP utilizzando il proxy di browser + selenium framework di test. Quindi in pratica sto eseguendo un test automatico con selenio e voglio catturare le coppie chiave/valore e i dati POST effettivi di una richiesta POST HTTP durante il test. Usando la seguente logica posso solo catturare le coppie chiave/valore dell'intestazione POST ma non i dati POST effettivi (ovvero i valori dell'ID del campo modulo). C'è un modo per catturare effettivamente la POSTDATA (come ad esempio le applicazioni di sniffing come intestazioni di manomissione/live in firefox)?Come acquisire le richieste POST http con browsermob-proxy e 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()); 
     } 

    } 
}); 

Un modo alternativo ho letto, ma non poteva andare al lavoro è stato quello di configurare le seguenti flag nel server browsermob proxy per vero:

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

Poi l'output del file HAR attuale:

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

Per visualizzare le coppie chiave/valore, i dati POST e il contenuto effettivo della risposta ... ma quando analizzo il file HAR ... Vedo nuovamente le coppie chiave/valore dell'intestazione POST ... nessun dato POST ... senza risposta se contenuto. Mi interessano solo i dati POST attuali.

+4

Non importa se questo è stato risolto dopo aver verificato il progetto del browser browsermob nel mio spazio di lavoro. Il valoreproxyServer.setCaptureContent (true) e proxyServer.setCaptureHeaders (true) dovrebbe funzionare per acquisire parametri POST solo nell'oggetto HAR. Il proxyServer.addRequestInterceptor NON acquisirà i parametri POST. – Selwyn

+0

Questo commento dovrebbe essere davvero una risposta. Ma grazie per il commento! –

risposta

0

Ho anche avuto lo stesso problema. Come soluzione, ho acquisito tutti i dati, convertito il file HAR in JSON e filtrato solo le richieste POST dal file JSON.

Problemi correlati