mitmproxy/examples/flowbasic

45 lines
1.0 KiB
Plaintext
Raw Normal View History

2011-08-13 01:51:38 +00:00
#!/usr/bin/env python
"""
This example shows how to build a proxy based on mitmproxy's Flow
primitives.
Heads Up: In the majority of cases, you want to use inline scripts.
Note that request and response messages are not automatically replied to,
so we need to implement handlers to do this.
2011-08-13 01:51:38 +00:00
"""
2015-09-03 22:46:42 +00:00
from libmproxy import flow
from libmproxy.proxy import ProxyServer, ProxyConfig
2011-08-13 01:51:38 +00:00
2014-09-08 14:02:31 +00:00
2011-08-13 01:51:38 +00:00
class MyMaster(flow.FlowMaster):
def run(self):
try:
flow.FlowMaster.run(self)
except KeyboardInterrupt:
self.shutdown()
def handle_request(self, f):
f = flow.FlowMaster.handle_request(self, f)
2011-08-13 01:51:38 +00:00
if f:
f.reply()
2011-08-13 01:51:38 +00:00
return f
def handle_response(self, f):
f = flow.FlowMaster.handle_response(self, f)
2011-08-13 01:51:38 +00:00
if f:
f.reply()
print(f)
2011-08-13 01:51:38 +00:00
return f
2015-09-03 22:46:42 +00:00
config = ProxyConfig(
port=8080,
2015-05-30 00:03:28 +00:00
# use ~/.mitmproxy/mitmproxy-ca.pem as default CA file.
cadir="~/.mitmproxy/"
2011-08-13 01:51:38 +00:00
)
state = flow.State()
server = ProxyServer(config)
2011-08-13 01:51:38 +00:00
m = MyMaster(server, state)
m.run()