start_mitm.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2023/9/20
  4. import mitmproxy.http
  5. from mitmproxy import options
  6. from mitmproxy.addons import dump
  7. from mitmproxy.tools.dump import DumpMaster
  8. # from mitmproxy.addons import DumpAddon
  9. from common.common import Common # 导入封装好的 log 记录方法
  10. class MyAddon:
  11. @staticmethod
  12. def request(flow: mitmproxy.http.HTTPFlow):
  13. # 获取请求数据
  14. request_data = flow.request.get_text()
  15. # 调用 log 记录方法,将请求数据传递给它
  16. Common.logger('mitm', 'dev').info(request_data)
  17. @staticmethod
  18. def response(flow: mitmproxy.http.HTTPFlow):
  19. # 获取响应数据
  20. response_data = flow.response.get_text()
  21. # 调用 log 记录方法,将响应数据传递给它
  22. Common.logger('mitm', 'dev').info(response_data)
  23. def start_mitmproxy():
  24. # 创建 mitmproxy 的选项
  25. mitmproxy_options = options.Options(listen_host='0.0.0.0', listen_port=8888)
  26. # 创建代理配置
  27. # proxy_config = ProxyConfig(options=mitmproxy_options)
  28. # 创建 DumpAddon 以将请求和响应保存到日志文件
  29. dump_addon = dump.Dump()
  30. # 创建 MyAddon 实例
  31. my_addon = MyAddon()
  32. # 将 MyAddon 添加到 mitmproxy 的插件中
  33. dump_addon.addons.append(my_addon)
  34. # 创建 DumpMaster,使用代理配置和 DumpAddon
  35. dump_master = DumpMaster(options=mitmproxy_options, with_termlog=False, with_dumper=dump_addon)
  36. # 启动 mitmproxy
  37. dump_master.run()
  38. start_mitmproxy()