2011-12-19 7 views
5

Estoy tratando de aislar un error que existe en el cliente HTTP httplib2 de Python o en una API. (La primera suposición es la API.) Al utilizar httplib2 para enviar datos POST a una API RESTful, obtengo un estado de respuesta 401 (sin autorización) y guardando datos en la API.¿Cómo puedo examinar las comunicaciones de red de Python HTTP Client?

Me gustaría examinar la solicitud HTTP y la respuesta al cliente, las mismas cadenas que se ponen y reciben de la red. El código httplib2 parece demasiado complicado para capturar fácilmente los valores que contiene, y es posible que se pierda el error.

Parece más rápido observar las comunicaciones de red con el cliente. ¿Existe alguna herramienta que pueda usar para monitorear las comunicaciones del cliente con el socket de la red local?

+0

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

+0

¿Cambia ['httplib2.debuglevel'] (http://bitworking.org/projects/httplib2/doc/html/libhttplib2.html#httplib2? .debuglevel) no produce nada útil? –

+0

No he mirado eso. – chernevik

Respuesta

4

Uso http://www.charlesproxy.com para todas mis depuraciones de red.

+1

tardó un poco en descubrir el uso, pero esto hizo lo que estaba buscando. Noobs como yo: capturar el tráfico con curl/python requiere habilitar SSL Proxying dentro de Charles para su host objetivo (posiblemente diferentes formas para diferentes clientes), y enrutar sus curl/python solicitudes a través del proxy localhost proporcionado por Charles. Que ahora parece predeterminado en el puerto 8888, en lugar del 8080 mencionado en la documentación. – chernevik

+0

¿Cómo se enrutan las solicitudes de Python a través del proxy Charles sin cambiar el código fuente de las bibliotecas que está utilizando? – Anentropic

+0

my bad ... tiene que agregar específicamente los dominios que desea proxy en la configuración de Charles SSL, para capturar las solicitudes https, luego funciona de manera transparente para python – Anentropic

1

http://www.wireshark.org/ le permite controlar los enchufes locales también. Pude controlar el loopback local incluso en Windows usando el truco para agregar ruta.

http://wiki.wireshark.org/CaptureSetup/Loopback Consulta otras alternativas

O puede simplemente escribir servidor de conector directo que escuche en el lado del cliente en un puerto y enviar los datos al servidor en otro puerto y viceversa e imprime todos los datos. No debería tomar más de una docena de líneas de código

+0

gran herramienta, pero no pudo encontrar una ruta para ver un diálogo cliente/servidor a través de SSL – chernevik

Cuestiones relacionadas