Mitmproxy:篡改get请求:替换字符串"数据的所有实例:123"请求脚本

时间:2015-10-05 14:21:22

标签: python regex proxy mitmproxy inline-scripting

我正在使用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上的示例,但似乎没有任何帮助我想要做的事情。

非常感谢为我的问题找到解决方案的任何帮助和指导!

1 个答案:

答案 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()