С помощью mitmproxy я хотел бы повторно отправить запрос с некоторыми дополнительными данными заголовка при некоторых условиях.
Похоже, я могу скопировать поток, настроить заголовки и вызвать replay.client для повторной отправки запроса, но похоже, что повторный запрос не выполняется до тех пор, пока не завершится вызов response (),Дисплей mitmproxy показывает, что команда в конечном итоге отправляется повторно, но ответ, отправленный обратно пользователю, является исходным ответом.
Есть ли лучший способ, где я мог бы повторно отправить запрос из ответа (), чтобы исходный ответ могобновляться на основе повторно отправленного ответа?
Мне также были бы интересны предложения non-mitmproxy для обработки такого рода повторной отправки.
Ниже, как теперь выглядит мой аддон:
class MyAddon:
def response(self, flow):
if some_condition:
flow_copy = flow.copy()
flow_copy.request_header['some-header'] = some_header_value
ctx.master.commands.call("replay.client", [flow_copy])
# flow_copy.response ends up being None here
# since it looks like the replay doesn't happen until
# after this method returns.
# Is there some other way to resubmit flow_copy
# so I could access it's response here ?
flow.response = flow_copy.response
addons = [
MyAddon()
]
Я подозреваю, mtmproxy http получает запрос в скрипте может запрашивать что-то подобное.