Повторная отправка запроса из ответа в mitmproxy - PullRequest
0 голосов
/ 08 июня 2019

С помощью 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 получает запрос в скрипте может запрашивать что-то подобное.

...