2011-12-19 11 views
5

Sto provando ad isolare un bug che esiste nel client HTTP httplib2 di Python o in un'API. (La prima ipotesi è l'API.) Mentre utilizzo i dati da httplib2 a POST a un'API RESTful, ricevo uno stato di risposta 401 (senza autorizzazione) e salvando i dati nell'API.Come posso esaminare le comunicazioni di rete del client HTTP Python?

Vorrei esaminare la richiesta HTTP e la risposta al client, le stesse stringhe inserite e ricevute dalla rete. Il codice httplib2 sembra troppo coinvolto per catturare facilmente i valori dall'interno e potrebbe mancare il bug.

Sembra più veloce osservare le comunicazioni di rete con il cliente. C'è qualche strumento che posso usare per monitorare le comunicazioni del cliente con la presa di rete locale?

+0

[Wireshark] (http://www.wireshark.org/) – JBernardo

+0

Sostituisce ['httplib2.debuglevel'] (http://bitworking.org/projects/httplib2/doc/html/libhttplib2.html#httplib2 .debuglevel) non produce nulla di utile? –

+0

Non ho guardato a quello. – chernevik

risposta

4

Io uso http://www.charlesproxy.com per tutto il mio debug della rete.

+1

Ci è voluto un po 'di tempo per capire l'utilizzo, ma questo è ciò che stavo cercando. Noobs come me: catturare il traffico con curl/python richiede l'abilitazione di SSL Proxying all'interno di Charles per l'host di destinazione (possibilmente diversi modi per client diversi) e il routing delle richieste di curl/python tramite il proxy localhost fornito da Charles. Che ora sembra essere predefinito per la porta 8888, piuttosto che per l'8080 menzionato nella documentazione. – chernevik

+0

Come si instradano le richieste Python tramite il proxy Charles senza modificare il codice sorgente delle librerie che si stanno utilizzando? – Anentropic

+0

il mio male ... devi aggiungere in modo specifico i domini che vuoi proxy nella configurazione di Charles SSL, per catturare le richieste https, poi funziona in modo trasparente per python – Anentropic

1

http://www.wireshark.org/ consente di monitorare anche le prese locali. Sono stato in grado di monitorare il loopback locale anche su Windows utilizzando il trucco con aggiunta di route.

http://wiki.wireshark.org/CaptureSetup/Loopback controllo Altro Alternative

Oppure si può semplicemente scrivere server socket raw che ascolta sul lato client su una porta e inviare i dati al server su un'altra porta e viceversa e stampa tutti i dati. Non dovrebbe richiedere più di una dozzina di righe di codice

+0

ottimo strumento, ma non è stato possibile trovare un percorso per vedere un dialogo client/server su SSL – chernevik