1

I'm trying to save and decode body response from "https://example.com/orders" to the file using mitmdump. I found a script which saves only response to file, but it seems doesn't work on latest mitmproxy.

from mitmproxy.models import decoded
def response(context, flow):
 with decoded(flow.response):  # automatically decode gzipped responses.
    with open("body.txt","ab") as f:
        f.write(flow.response.content)

When I'm running script error message displaying :

Script error: Traceback (most recent call last):
File "save_body.py", line 1, in <module>
from mitmproxy.models import decoded
ImportError: No module named 'mitmproxy.models'

My Operating System and version:

Mitmproxy version: 2.0.2 (release version) 
Python version: 3.5.2
Platform: Linux-4.10.0-28-generic-x86_64-with-Ubuntu-16.04-xenial
SSL version: OpenSSL 1.0.2g  1 Mar 2016
Linux distro: Ubuntu 16.04 xenial

How can I save decoded body from only one URL, excluding other URLs, to a file? And how to do so: if this request from URL I need repeats, I need mitmdump to overwrite "body.txt"?

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
TheEldrone
  • 87
  • 1
  • 11

1 Answers1

3

I found a solution, this simple python script writes response body to the file, and if request repeats - overwrites it every time.

import mitmproxy
def response(flow):
    if flow.request.pretty_url.endswith("example.com/orders"):
        with open("orders.html","wb") as f:
                f.write(flow.response.content)

Save this script to save_body.py and use it with mitmdump -s save_body.py

TheEldrone
  • 87
  • 1
  • 11