使用 mitmproxy 更改 HTTPResponse 中的图像

Change images in HTTPResponse with mitmproxy

对于一个学校项目,我们在 Kali Linux 上设置了 mitmproxy。最后,我们能够安装 mitmproxy,现在我们可以拦截客户端设备的 HTTPS 包,这些客户端设备作为我们 Raspberry Pi 的 WLAN 客户端浏览网站。我们的目标之一是更改 HTTPS 包中的图像,我们真的很想在我们的项目中实现这一目标。重点来了,我无法使用 Python 3 个内联脚本。这就是我目前的状态。

#!/usr/bin/python3
# modify_response.py
import sys
import os
from io import StringIO
from mitmproxy.net.http import encoding
from mitmproxy.net.http import headers
from mitmproxy.net import http
from PIL.Image import core as _imaging

def response(flow):
    flow.response.headers["newheader"] = "response-flow"

    if flow.response.headers.get("content-type", "").startswith("image"):
        decoded_response = decode(flow.response)
        with decoded(flow.respnse):
        print('OK')
        os.system('"./script2.py" "Decoded response: {}"'.format(decoded_response))
        try:
            img = cStringIO.StringIO(open('6868132.png', 'rb').read())
            flow.response.content = img.getvalue()
        except:
            os.system('"./script2.py" "Error occured"')

不幸的是,即使对于名为 "content-type" 的 header 的值以 "image".

开头的请求,if 条件似乎也不为真

我在这里引用这个网站 https://sunu.in/manipulating-http-traffic-with-mitmproxy/ 因为我想实现他们在那里所做的同样的事情。但他们可能使用了相当旧的 mitmproxy 版本,而我们使用的是 2.0.2(如果我没记错的话)。

我是 Python 的新手,为了理解我的代码的作用,我花了几个小时学习在线教程。你能帮我更改 HTTPResponse 中的图像吗?

我在 mitmproxy 论坛上发布了同样的问题,并在那里收到了答案。提供的答案包含我正在寻找的 python 脚本行:

def response(flow):
    if flow.response.headers.get("content-type", "").startswith("image"):
        img = open("file.png", "rb").read()
        flow.response.content = img
        flow.response.headers["content-type"] = "image/png"