我正在使用mitmproxy,我仍然相当新(已经使用了几天)。现在我试图拦截get请求,并替换字符串的所有实例,例如" data:123"使用"数据:456",然后恢复信息流,目的是通知应用程序的某个响应。我已经到了成功拦截我想要的URL的地步,但是我不明白如何创建一个脚本来替换" data:123"的所有实例,或者甚至可以做到这一点在拦截的同时。任何帮助表示赞赏! get请求看起来像这样。替换所有实例的原因是因为数据似乎重复(不必要地?)几次,并且手动替换每个实例是不可行的。
"text": {
"data": "123",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
"text": {
"data": "123",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
请注意,我拦截的实际数据较大且格式不正确,因此需要脚本。我查看了https://github.com/mitmproxy/mitmproxy上的示例,但似乎没有任何帮助我想要做的事情。
非常感谢为我的问题找到解决方案的任何帮助和指导!
答案 0 :(得分:0)
您可以在doc中给出的实现示例中的handle_requests方法中获取和修改GET请求路径。
def handle_request(self, flow):
request = flow.request
# ---------------------------------
# Play with the GET path with regex
# Add 'import re'
newPath = re.sub(r"data:123", "data:456", request.path)
# ---------------------------------
flow.request.path = newPath
flow.reply()