Try mitmproxy as a pre-proxy or alternative to your main intercepting proxy software. you’ll thank yourself later
- Install uv
- Run
$ uv installin project's root - set
.envvariables uv run mitmproxy -s config.py -s flow_highlighter.py -s repeater.py -s nonoise.py -s sampler.py
Recommended Key Bindings:
$ cp .mitmproxy/keys.yaml ~/.mitmproxyCrtl + rto send flow to "Repeater"Shift + r/Rto show the "Repeater"Shift + h/Hto highlight a flow
Custom Commands:
:nojshide javascript flows:noimagehide image flows:nostylehide style related flows:repeatsend a copy of the current focused flow to repeater:repeatershow repeater:highlighthighlight current focused flow:freezefreeze a flow:freezershow freezed flows:rotaterotate upstream tor ip
Set scope on addon with @scope() decorator
@scope()
def request(flow: http.HTTPFlow):
...- Flow Highlighter highlight the focused flow row
- Repeater like burpsuite repeater (mark flows as R and show/hide them)
- Sampler to extract json fields, query parameters, headers from request/response flows and save to a file for later fuzzing.
- No Noise to drop analytic and ad related request so they dont reach the upstream proxy (BurpSuite/Caido/Zap).
- Flow Freezer to capture and freeze a flow’s response to serve the frozen response for any future requests to the same url.
- Rotator to use tor as upstream and rotate its ip based on dynamic conditions (e.g., every 100 requests)