mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-01 15:55:28 +00:00
Revamp dup_and_replay example
- Exposes view.add as a command - Copes with cases where a view addon isn't present - Avoids infinite loop caused by replaying replays Fixes #3096
This commit is contained in:
parent
d12186a935
commit
f5dc0aace1
@ -2,7 +2,13 @@ from mitmproxy import ctx
|
||||
|
||||
|
||||
def request(flow):
|
||||
f = flow.copy()
|
||||
ctx.master.view.add(f)
|
||||
f.request.path = "/changed"
|
||||
ctx.master.replay_request(f, block=True)
|
||||
# Avoid an infinite loop by not replaying already replayed requests
|
||||
if flow.request.is_replay:
|
||||
return
|
||||
flow = flow.copy()
|
||||
# Only interactive tools have a view. If we have one, add a duplicate entry
|
||||
# for our flow.
|
||||
if "view" in ctx.master.addons:
|
||||
ctx.master.commands.call("view.add", [flow])
|
||||
flow.request.path = "/changed"
|
||||
ctx.master.commands.call("replay.client", [flow])
|
||||
|
@ -293,6 +293,7 @@ class View(collections.Sequence):
|
||||
self._refilter()
|
||||
self.sig_store_refresh.send(self)
|
||||
|
||||
@command.command("view.marked.toggle")
|
||||
def add(self, flows: typing.Sequence[mitmproxy.flow.Flow]) -> None:
|
||||
"""
|
||||
Adds a flow to the state. If the flow already exists, it is
|
||||
|
Loading…
Reference in New Issue
Block a user