使用mitmproxy即时修改HTTPS响应数据包

时间:2018-08-14 13:31:41

标签: python linux packet-capture mitmproxy tampering

我正在尝试实现一个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触发”)正在报告到日志中,而其他两个日志信息(从内部完成) if语句)从未报告过,这意味着我认为{{1>}语句 永远不会成功

我的代码有问题吗?
如何获得if语句才能成功?

PS :目标URL绝对正确,此外,我正在将其与来自被mitmproxy嗅探的客户端应用程序中的注册帐户一起使用。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用pretty_url属性?
像这样:

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

pretty_url属性处理完整的域名,而url仅处理相应的 ip地址
此外,记录pretty_url的内容还应允许查看确切的URL,并且可以更清楚地了解代码的实际作用。