指令

命令是允许用户主动与插件交互的机制。也许最突出的例子是mitmproxy控制台用户界面-该工具中的每个交互都包含与键绑定的命令。命令还形成了一种灵活且非常强大的方式,可从命令提示符下与mitmproxy进行交互。在mitmproxy控制台中,您可以使用:键输入命令提示符。该提示具有用于命令名和许多内置参数类型的智能制表符补全功能-请尝试一下。

命令的规范参考是该--commands标志,该标志由每个mpmproxy工具公开。传递此标志将把所有已注册命令,它们的参数和它们的返回值的带注释的列表转储到屏幕上。在mimtproxy控制台中,您还可以在命令浏览器中查看所有命令的面板(默认情况下可通过C键绑定访问)。

处理流程

mitmproxy的许多命令都将流作为参数。例如,客户端重播命令的签名如下所示:

replay.client [flow]

这意味着它期望一个或多个流的序列。这就是流规范的来源-mitmproxy将在调用命令时智能地将灵活的流选择语言扩展到流列表。

启动mitmproxy控制台,并拦截一些流量,以便我们进行处理。现在键入以下命令:

:replay.client @focus

确保尝试使用制表符完成作为命令名称和流程规范。该@focus说明符扩展到目前集中流动,所以你应该可以看到这个流程重播。但是,重播可以占用任何数量的流。尝试以下命令:

:replay.client @all

现在,您应该看到所有流程都一个接一个地重放。我们在这里拥有mitmproxy过滤器语言的全部功能,因此,例如,我们也可以只重放特定域的流:

:replay.client "~d google.com"

自定义键绑定

Mitmproxy的键绑定可以在~/.mitmproxy/keys.yaml文件中根据您的需要进行自定义 。该文件由一系列地图组成,具有以下键:

  • key(必填):绑定键。
  • cmd(必填):按下键时执行的命令。
  • context:应该在其中绑定键的上下文列表。默认情况下,这是全局的(即,密钥被绑定在任何地方)。有效的背景是chooser,commands,dataviewer,eventlog,flowlist,flowview,global,grideditor,help,keybindings,options。
  • help:绑定的帮助字符串,将在按键绑定浏览器中显示。

    例子

  • Simple global binding

    key: ctrl a cmd: replay.client @marked

  • Bind key only in the flowlist

    Note that 1 is quoted, or YAML interprets it as a digit

    key: "1" ctx: ["flowlist"] cmd: console.nav.down help: Go to next flow