使用mitmproxy动态修改HTTPS响应包

2024-06-25 07:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现一个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()
]

查看事件日志,我可以看到第一个日志信息(“respmidif trigged”)正在报告到日志中,但是其他两个日志信息(从if语句内部完成)从未报告过,这意味着我认为if语句永远不会成功。在

我的代码有问题吗?
如何使if语句成功?在

PS:目标URL绝对是正确的,而且我使用的是来自客户机应用程序的注册帐户,该帐户正被mitmproxy嗅探。在


Tags: 数据httpsselfinfo脚本logapi目标
1条回答
网友
1楼 · 发布于 2024-06-25 07:19:53

您是否尝试使用pretty_url属性?
比如:

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

pretty_url属性处理完整的域名,而url只处理相应的ip地址
另外,记录pretty_url的内容应该允许查看确切的URL正在通过什么,并提供关于代码实际执行情况的更多可见性。在

相关问题 更多 >