Proxy MITM, obteniendo toda la cadena de solicitud y respuesta

Estoy usando mitmproxy para interceptar el tráfico. Lo que quiero es poder obtener toda la solicitud y la respuesta en una cadena. Sé que tiene una def response(context, flow) definida def response(context, flow) y que el objeto HTTPFlow tiene los objetos de solicitud y respuesta. Lo que quiero es simplemente algo como esto en una cadena

 GET http://www.google-analytics.com/collect?v=1& HTTP/1.1 Header 1: value Header 2: value request body 

y esto

 HTTP/1.1 301 Moved Permanently Header 1: value Header 2: value response body 

Ahora he estado intentando esto uniendo las diferentes partes y partes de las solicitudes y respuestas, pero eso es propenso a errores. ¿Hay una mejor manera de hacer esto?

Además, ¿mitm maneja los cuerpos de respuesta codificados con Gzip?

    Puede obtener todo el objeto de solicitud / respuesta como una cadena utilizando flow.request.assemble() . Si desea la solicitud / respuesta sin transferencia de encoding (gzip), puede utilizar el decorador decodificado:

     from libmproxy.protocol.http import decoded with decoded(flow.request): data = flow.request.assemble() 

    Aparte de eso, puede encontrar https://github.com/mitmproxy/mitmproxy/tree/master/examples muy útil.