如何编写一个避免任何网络请求的 mitmproxy 插件?

How to write a mitmproxy addon that avoids any network request?

我在过去几天尝试了 mitmproxy 作为测试工具并且效果很好。然而,虽然我能够编写拦截请求的附加组件(甚至更改它们的 URL,如下面的示例),但我无法避免请求实际上是在网络中发送的。

不管怎样,总是使用网络执行请求。

那么,我如何修改我的附加组件,使其在发出请求后,returns 得到一个固定的响应,避免任何网络请求?

class Interceptor:
    def request(self, flow: http.HTTPFlow):
        if http.method() == "GET":
            flow.request.url = "http://google.com"

    def response(self, flow: http.HTTPFlow):
        return http.HTTPResponse.make(status_code=200,b"Rambo 5")

请求挂钩将在 mitmproxy 收到请求时执行,响应挂钩将在我们从服务器获取响应后执行。长话短说,response 钩子里的一切都来不及了。

相反,您需要在 request 挂钩中分配 flow.response