From 05111f093d66d5a277a69e8a610e4bf10ca249c6 Mon Sep 17 00:00:00 2001 From: "Mark E. Haase" Date: Wed, 28 Dec 2011 17:32:29 -0500 Subject: Add support for filtering by HTTP method (get, post, etc.) using ~m operator. --- libmproxy/filt.py | 15 ++++++++++++++- test/test_filt.py | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libmproxy/filt.py b/libmproxy/filt.py index bf7d20c1..b5af44de 100644 --- a/libmproxy/filt.py +++ b/libmproxy/filt.py @@ -34,6 +34,7 @@ ~bq rex Expression in the body of response ~t rex Shortcut for content-type header. + ~m rex Method ~u rex URL ~c CODE Response code. rex Equivalent to ~u rex @@ -178,7 +179,18 @@ class FBodResponse(_Rex): elif o.content and re.search(self.expr, o.content): return True return False - + + +class FMethod(_Rex): + code = "m" + help = "Method" + def __call__(self, o): + if o._is_response(): + return False + elif o.method: + return re.search(self.expr, o.method, re.IGNORECASE) + return False + class FUrl(_Rex): code = "u" @@ -260,6 +272,7 @@ filt_rex = [ FBodRequest, FBodResponse, FBod, + FMethod, FUrl, FRequestContentType, FResponseContentType, diff --git a/test/test_filt.py b/test/test_filt.py index 5067d841..6c11938e 100644 --- a/test/test_filt.py +++ b/test/test_filt.py @@ -16,6 +16,7 @@ class uParsing(libpry.AutoTree): assert not filt.parse("~b") assert filt.parse("~q") assert filt.parse("~c 10") + assert filt.parse("~m foobar") assert filt.parse("~u foobar") assert filt.parse("~q ~c 10") p = filt.parse("~q ~c 10") @@ -171,6 +172,13 @@ class uMatching(libpry.AutoTree): assert not self.q("~bs response", q) assert self.q("~bs response", s) + def test_method(self): + q = self.req() + s = self.resp() + assert self.q("~m get", q) + assert not self.q("~m post", q) + assert not self.q("~m get", s) + def test_url(self): q = self.req() s = self.resp() -- cgit v1.2.3