Python中如何在Mitmdump的response方法里实现请求的重新提交?

就是阻止请求返回到客户端,拦截掉并且重试请求直到符合某个条件再返回给客户端

感谢大佬们


Python中如何在Mitmdump的response方法里实现请求的重新提交?
3 回复

在Mitmdump的response方法里重新提交请求,直接改flow.request然后返回就行。比如这样:

from mitmproxy import http

def response(flow: http.HTTPFlow):
    # 检查是否是目标请求
    if "target-api.com" in flow.request.pretty_host:
        # 修改请求的某个参数,比如加个时间戳
        flow.request.query["_t"] = str(int(time.time()))
        
        # 关键在这里:直接返回修改后的请求对象
        # mitmproxy会自动重新发起这个请求
        return flow.request

原理很简单:在response阶段返回一个新的request对象,mitmproxy会中断当前响应流程,用这个新请求重新走一遍请求-响应流程。你改headers、body、URL啥的都行。

注意别搞成死循环,最好加个条件判断或者标记。

总结:直接返回修改后的flow.request。


while unkown:
read

read 是什么? request.read?

回到顶部