You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PyInstaller打包mitmproxy与Python脚本并保护脚本文件

解决方案

要实现将mitmproxy脚本逻辑与可执行程序一并打包、避免暴露原始脚本,核心是不再通过命令行参数指定外部脚本文件,而是直接在代码中集成脚本逻辑并通过mitmproxy的API启动代理。

步骤1:修改脚本逻辑,直接调用mitmproxy API

原代码通过mitmdump命令行启动并指定外部proxy.py,这会导致mitmproxy依赖外部文件。我们可以调整代码,直接注册请求处理函数并启动代理:

from mitmproxy import http
from mitmproxy.tools.dump import DumpMaster, Options

async def request(flow: http.HTTPFlow) -> None:
    if flow.request.method == 'GET':
        flow.response = http.Response.make(
            200,  
            b"Hello World",  
            {"Content-Type": "text/html","access-control-allow-origin": "*"},
        )

def main():
    # 配置代理选项
    options = Options(
        listen_host='0.0.0.0',
        listen_port=9999,
        client_replay_concurrency=-1,
        websocket=False
    )
    # 创建DumpMaster实例
    master = DumpMaster(options)
    # 注册请求处理函数
    master.addons.add(request)
    
    try:
        master.run()
    except KeyboardInterrupt:
        master.shutdown()

if __name__ == '__main__':
    main()

步骤2:用PyInstaller打包修改后的脚本

使用以下命令打包,确保所有依赖和逻辑都被嵌入到单个可执行文件中:

pyinstaller --onefile your_modified_script.py

关键说明

  • 不再使用-s proxy.py参数:原来的方式会让mitmproxy从文件系统加载脚本,修改后直接通过master.addons.add()注册处理函数,逻辑完全内嵌在可执行文件中。
  • PyInstaller打包注意事项:如果打包后遇到依赖缺失问题,可添加--hidden-import参数指定mitmproxy的内部模块,比如:
    pyinstaller --onefile --hidden-import mitmproxy.addons.core --hidden-import mitmproxy.addons.proxyserver your_modified_script.py
    
    具体缺失的模块可根据运行时报错补充。

这样打包后的可执行文件无需依赖外部proxy.py,脚本逻辑不会暴露给用户。

内容的提问来源于stack exchange,提问作者Srijan Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:00:01