aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/README2
-rw-r--r--examples/filt.py14
-rw-r--r--examples/flowwriter.py20
-rw-r--r--examples/ignore_websocket.py3
4 files changed, 38 insertions, 1 deletions
diff --git a/examples/README b/examples/README
index f24c4de7..adfcd0f2 100644
--- a/examples/README
+++ b/examples/README
@@ -3,6 +3,8 @@ add_header.py Simple script that just adds a header to every request
change_upstream_proxy.py Dynamically change the upstream proxy
dns_spoofing.py Use mitmproxy in a DNS spoofing scenario.
dup_and_replay.py Duplicates each request, changes it, and then replays the modified request.
+filt.py Use mitmproxy's filter expressions in your script.
+flowwriter.py Only write selected flows into a mitmproxy dumpfile.
iframe_injector.py Inject configurable iframe into pages.
modify_form.py Modify all form submissions to add a parameter.
modify_querystring.py Modify all query strings to add a parameters.
diff --git a/examples/filt.py b/examples/filt.py
new file mode 100644
index 00000000..cce2a48a
--- /dev/null
+++ b/examples/filt.py
@@ -0,0 +1,14 @@
+# This scripts demonstrates how to use mitmproxy's filter pattern in inline scripts.
+# Usage: mitmdump -s "filt.py FILTER"
+
+from libmproxy import filt
+
+def start(context, argv):
+ if len(argv) != 2:
+ raise ValueError("Usage: -s 'filt.py FILTER'")
+ context.filter = filt.parse(argv[1])
+
+def response(context, flow):
+ if flow.match(context.filter):
+ print("Flow matches filter:")
+ print(flow)
diff --git a/examples/flowwriter.py b/examples/flowwriter.py
new file mode 100644
index 00000000..f411ec45
--- /dev/null
+++ b/examples/flowwriter.py
@@ -0,0 +1,20 @@
+import random
+import sys
+
+from libmproxy.flow import FlowWriter
+
+
+def start(context, argv):
+ if len(argv) != 2:
+ raise ValueError('Usage: -s "flowriter.py filename"')
+
+ if argv[1] == "-":
+ f = sys.stdout
+ else:
+ f = open(argv[1], "wb")
+ context.flow_writer = FlowWriter(f)
+
+
+def response(context, flow):
+ if random.choice([True, False]):
+ context.flow_writer.add(flow) \ No newline at end of file
diff --git a/examples/ignore_websocket.py b/examples/ignore_websocket.py
index 48093951..f7a94bdf 100644
--- a/examples/ignore_websocket.py
+++ b/examples/ignore_websocket.py
@@ -26,7 +26,8 @@ def done(context):
@concurrent
def response(context, flow):
- if flow.response.headers.get_first("Connection", None) == "Upgrade":
+ value = flow.response.headers.get_first("Connection", None)
+ if value and value.upper() == "UPGRADE":
# We need to send the response manually now...
flow.client_conn.send(flow.response.assemble())
# ...and then delegate to tcp passthrough.