Python Mitmproxy篡改在一个脚本中获取和发布请求/响应

Python Mitmproxy篡改在一个脚本中获取和发布请求/响应,python,regex,proxy,mitmproxy,inline-scripting,Python,Regex,Proxy,Mitmproxy,Inline Scripting,对特定url()的POST请求类似于: { "messageType": "OK", "city": { "Name": "Paris", "Views": { "1231": { "id": 4234, "enableView": false }, }, "Views": [5447, 8457], "messages": [{ "id": "messag

对特定url()的POST请求类似于:

{

"messageType": "OK",
"city": {
    "Name": "Paris",
    "Views": {
        "1231": {
            "id": 4234,
             "enableView": false
        },
    },
    "Views": [5447, 8457],
    "messages": [{
        "id": "message_6443",
        "eTag": 756754338
    }]
},
"client": {
    "Id": 53,
    "email": "test@test.us",
    "firstName": "test",
    "lastName": "test",
    "id": 52352352,
    "uuid": "5631f-grdeh4",
    "isAdmin": false,
我需要截取它并将“isAdmin”改为true

以及对某个url({Random_Numbers}/id})的GET请求 有“回应” [decoded gzip]JSON

{
"id": 0, 
"Code": "Admin", 
"display": "RRRR"
}
我需要将“id”值更改为5

所以基本上我需要写一个脚本来完成这两个

到目前为止,我试图借助Github中的示例代码,但并没有得到预期的结果。 (我是个彻头彻尾的笨蛋:\)希望这里的人能帮我开始。 提前谢谢

编辑: 根据Github中的示例代码,修改_response_body.py:

from libmproxy.protocol.http import decoded

def start(context, argv):
  if len(argv) != 3:
   raise ValueError('Usage: -s "modify-response-body.py old new"')
    context.old, context.new = argv[1], argv[2]


def response(context, flow):
    with decoded(flow.response):  # automatically decode gzipped responses.
      flow.response.content = flow.response.content.replace(context.old, context.new)`
我如何为我的senario实现这一点


也许使用libmproxy获取http请求和响应会是一个更好的主意。

您发布的脚本和Python的JSON模块应该会让您受益匪浅:

def response(context, flow):
    if flow.request.url == "...": # optionally filter based on some criteria...
        with decoded(flow.response):  # automatically decode gzipped responses.
            data = json.loads(flow.response.content)
            data["foo"] = "bar"
            flow.response.content = json.dumps(data)

您应该显示失败的尝试、代码和结果,作为问题的基础。为什么不使用json模块而不是使用regex来解析它?@VasiliSyrakis yes!用json模块而不是正则表达式进行解析听起来好多了。那么,你的老师有经验吗?我用过这个解决方案,但它不适合我。。。我可以在事件日志中看到触发的响应函数,但是if语句似乎永远不会成功。。。有什么想法吗?