diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-03-09 13:15:31 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-03-09 13:15:31 +1300 |
commit | 03f13453856e3af15dc3af81adcf3a80d1358da0 (patch) | |
tree | f4700518429e2264ee083034f2b91aa7425ce5e8 /libmproxy | |
parent | 592812467da5bfe8196f16dcfa6d348551c4febd (diff) | |
download | mitmproxy-03f13453856e3af15dc3af81adcf3a80d1358da0.tar.gz mitmproxy-03f13453856e3af15dc3af81adcf3a80d1358da0.tar.bz2 mitmproxy-03f13453856e3af15dc3af81adcf3a80d1358da0.zip |
Add an --anticache option to mitmdump.
This removes all headers that might cause a server to return 304-not-modified.
For now, all the new features are going into mitmdump - everything will be
ported over to mitmproxy once I have the feature set locked down.
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/dump.py | 11 | ||||
-rw-r--r-- | libmproxy/flow.py | 3 | ||||
-rw-r--r-- | libmproxy/proxy.py | 13 |
3 files changed, 23 insertions, 4 deletions
diff --git a/libmproxy/dump.py b/libmproxy/dump.py index 73ecc54d..5cbb7389 100644 --- a/libmproxy/dump.py +++ b/libmproxy/dump.py @@ -6,16 +6,17 @@ class DumpError(Exception): pass class Options(object): __slots__ = [ + "anticache", + "client_replay", + "keepserving", "kill", "request_script", "response_script", + "rheaders", "server_replay", - "client_replay", + "stickycookie", "verbosity", "wfile", - "rheaders", - "stickycookie", - "keepserving", ] def __init__(self, **kwargs): for k, v in kwargs.items(): @@ -83,6 +84,8 @@ class DumpMaster(flow.FlowMaster): not options.keepserving ) + self.anticache = options.anticache + def _readflow(self, path): path = os.path.expanduser(path) try: diff --git a/libmproxy/flow.py b/libmproxy/flow.py index dff58fa0..0080f1d4 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -432,6 +432,7 @@ class FlowMaster(controller.Master): self.scripts = {} self.kill_nonreplay = False self.stickycookie_state = False + self.anticache = False def _runscript(self, f, script): #begin nocover @@ -521,6 +522,8 @@ class FlowMaster(controller.Master): self.stickycookie_state.handle_request(f) if "request" in self.scripts: self._runscript(f, self.scripts["request"]) + if self.anticache: + r.anticache() if self.server_playback: pb = self.do_server_playback(f) if not pb: diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index a4dc3e69..48884c09 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -139,6 +139,19 @@ class Request(controller.Msg): # Have this request's cookies been modified by sticky cookies? self.stickycookie = False + def anticache(self): + """ + Modifies this request to remove headers that might produce a cached + response. That is, we remove ETags and If-Modified-Since headers. + """ + delheaders = [ + "if-modified-since", + "if-none-match", + ] + for i in delheaders: + if i in self.headers: + del self.headers[i] + def set_replay(self): self.client_conn = None |