使用mitmproxy修改JSON响应体失败问题求助
问题排查与解决
问题原因
你当前的代码直接在JSON根对象data下添加/修改字段,但目标字段实际嵌套在Data -> response的层级结构里,所以根本没触及到要修改的目标字段,反而在根节点新增了同名字段,导致出现你看到的异常结果。
原始响应的结构层级是:
{ "Data": { "response": { "encrypt": "", // 目标字段在这一层 "message": "0006", "status": "1", "unlock": null } }, "ErrorCode": 0, "Message": null }
修复后的代码
修改代码,定位到正确的嵌套层级进行字段修改:
from mitmproxy import ctx from mitmproxy import http import json def response(flow: http.HTTPFlow) -> None: if flow.request.pretty_url.endswith("/api/url/go"): data = json.loads(flow.response.get_text()) # 定位到Data下的response对象,再修改目标字段 response_data = data["Data"]["response"] response_data["encrypt"] = "5656" response_data["message"] = "" response_data["status"] = "0" response_data["unlock"] = "" flow.response.text = json.dumps(data)
说明
通过data["Data"]["response"]获取到真正包含目标字段的对象,再对该对象内的字段进行修改,就能正确覆盖原始响应里的对应字段,不会在根节点新增冗余内容。
内容的提问来源于stack exchange,提问作者Салим Махотлов
相关产品推荐
相关产品推荐

