如何在 mitmproxy 中指定 map_remote 规则以从远程 HTTPS URL 重定向到 HTTP URL?

How can I specify a map_remote rule in mitmproxy to redirect from a remote HTTPS URL to an HTTP URL?

我想设置一个 map_remote 从 https 地址重写到我的本地机器 运行 一个仅在 http 上的服务。

选项 (https://docs.mitmproxy.org/stable/concepts-options/) 的文档似乎表明我应该这样做

mitmproxy --map-remote "|https://foo.bar.com|http://localhost:8081|"

但这似乎并没有重写任何请求。

完成此操作的正确语法是什么?

您示例中的问题是尾随 |。地图远程规范可以是:

  • |flow-filter|url-regex|replacement
  • |url-regex|replacement

通过将最终的 | 附加到您的两部分规范,您无意中使用了第一种形式,并且 https://foo.bar.com 被用作过滤器而不是 url 正则表达式。长话短说:

mitmproxy --map-remote "|https://foo.bar.com|http://localhost:8081|"  # wrong
mitmproxy --map-remote "|https://foo.bar.com|http://localhost:8081"   # correct

您还可以在 https://docs.mitmproxy.org/stable/overview-features/#map-remote 找到有用的扩展功能文档。 :)