diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-01-27 15:14:46 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-01-27 15:16:03 +1300 |
commit | edab82f7d8833f1903a4032fab5b530c6096fc07 (patch) | |
tree | f64bc0e1e011060978e8e65729c2ffc96a50dce6 /libmproxy | |
parent | 345ac0f2a0b641971bdc79463cad9259e4c48197 (diff) | |
download | mitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.tar.gz mitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.tar.bz2 mitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.zip |
Add command to write request or response body to file.
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/console.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libmproxy/console.py b/libmproxy/console.py index 7e3639d9..6c5a051e 100644 --- a/libmproxy/console.py +++ b/libmproxy/console.py @@ -282,6 +282,21 @@ class ConnectionView(WWrap): self.flow.request.method = i[0].upper() self.master.refresh_connection(self.flow) + def save_body(self, path): + if not path: + return + if self.viewing == self.REQ: + c = self.flow.request + else: + c = self.flow.response + path = os.path.expanduser(path) + try: + f = file(path, "wb") + f.write(str(c.content)) + f.close() + except IOError, v: + self.master.statusbar.message(str(v)) + def edit(self, part): if self.viewing == self.REQ: conn = self.flow.request @@ -391,6 +406,11 @@ class ConnectionView(WWrap): self.master.ui._curs_set(1) self.master.ui.clear() os.unlink(name) + elif key == "w": + if self.viewing == self.REQ: + self.master.prompt("Save request body: ", self.save_body) + else: + self.master.prompt("Save response body: ", self.save_body) return key @@ -815,6 +835,7 @@ class ConsoleMaster(controller.Master): ("e", "edit response/request"), ("s", "save this flow"), ("v", "view contents in external viewer"), + ("w", "save request or response body"), ("tab", "toggle response/request view"), ] text.extend(format_keyvals(keys, key="key", val="text", indent=4)) |