【发布时间】:2021-06-17 11:48:35
【问题描述】:
我正在尝试拦截和修改 graphql 响应的正文。这是我的插件代码:
from mitmproxy import ctx
from mitmproxy import http
import json
def response(flow: http.HTTPFlow) -> None:
if flow.request.pretty_url == "https://my.graphql/endpoint":
request_data = json.loads(flow.request.get_text())
if request_data["operationName"] == "MyOperationName":
data = json.loads(flow.response.get_text())
data["data"]["product"]["name"] = "New Name"
flow.response.text = json.dumps(data)
我可以在 mitmproxy 控制台中看到修改后的响应。但是我正在使用的 iOS 模拟器仍然得到原始响应。有谁知道如何将修改后的响应传递给设备?
【问题讨论】:
-
你在这里所做的看起来不错,应该将修改后的响应传递给客户端。例如,你能用 cURL 重现这个吗?
-
iOS 模拟器是否使用了 mitmproxy(您是否看到来自 iOS 的请求?)并且您是否在模拟器中安装了 mitmproxy 根 CA 证书?
-
是的。我可以看到设备的全部流量。一件奇怪的事情是,如果我将响应设置为空响应,我会在设备上得到它。
标签: python ios-simulator mitmproxy