我正在尝试实现一个mitmproxy插件脚本,以便篡改特定的https数据包-这是通过mitmproxy的证书注入动态解密的方式。
我正在跟踪这个Stack Overflow answer到一个相当类似的问题,以及来自mitmproxy医生的this tutorial问题,但是到目前为止没有任何成功。
我要瞄准的数据包来自https://api.example.com/api/v1/user/info
下面是我编写的用于篡改此数据包数据的整个python脚本,基于前面提到的源代码:

from mitmproxy import ctx

class RespModif:
    def _init_(self):
        self.num = 0

    def response(self, flow):
        ctx.log.info("RespModif triggered")

        if flow.request.url == "https://api.example.com/api/v1/user/info":
            ctx.log.info("RespModif triggered -- In the if statement")
            self.num = self.num + 1
            ctx.log.info("RespModif -- Proceeded to %d response modifications "
                         "of the targetted URLs" % self.num)

addons = [
    RespModif()
]

查看事件日志,我可以看到第一个日志信息(“RespModif triggered”)正在被报告到日志中,但其他两个日志信息(从if语句内部完成)从未被报告,这意味着我认为if语句永远不会成功。
我的代码有问题吗?
如何使if语句成功?
PS:目标URL绝对正确,另外我使用的是来自客户端应用程序的注册帐户,该应用程序正在使用mitmproxy进行嗅探。

最佳答案

您是否尝试使用pretty_url属性?
类似于:

if flow.request.pretty_url == "https://api.example.com/api/v1/user/info":
    ....

pretty_url属性处理完整域名,而url只处理相应的ip地址。
同时,记录pretty_url的内容应该允许查看确切的URL经过了什么,并且可以更清楚地看到代码实际上在做什么。

关于python - 使用mitmproxy即时修改HTTPS响应数据包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51842741/

10-12 05:43