使用 mitmproxy 动态修改 HTTPS 响应数据包
Modifying HTTPS response packet on the fly with mitmproxy
我正在尝试实现一个 mitmproxy 插件脚本,以篡改特定的 https 数据包数据——顺便说一下,这是通过 mitmproxy 的证书注入即时解密的。
我正在关注 mitmproxy 文档中的这个 to a rather similar question, as well as 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 正在经历什么,并提供更多关于代码实际做什么的可见性。
我正在尝试实现一个 mitmproxy 插件脚本,以篡改特定的 https 数据包数据——顺便说一下,这是通过 mitmproxy 的证书注入即时解密的。
我正在关注 mitmproxy 文档中的这个
我的目标数据包来自 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 正在经历什么,并提供更多关于代码实际做什么的可见性。