如何编写一个避免任何网络请求的 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
。
我在过去几天尝试了 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
。