如何将mitmproxy连接到我无法控制的其他代理?

7 投票
4 回答
16518 浏览
提问于 2025-04-17 21:05

这个过程是这样的:浏览器会向MITMproxy发送一个请求,然后MITMproxy会生成一个请求,发送到我们不控制的目标代理服务器。目标代理服务器会把响应发送回MITMproxy,最后MITMproxy再把这个响应转发给浏览器。

我该怎么做呢?

4 个回答

0

我觉得是这个 -U 选项:

command-line    -U http://hostname[:port]

来源:http://docs.mitmproxy.org/en/stable/features/upstreamproxy.html

1

如果你想要不通过脚本来做这个,你可以通过 server.config 中的 get_upstream_server 来更改上游服务器,具体可以参考 [mitmproxy 配置] (https://github.com/mitmproxy/mitmproxy/blob/42d4a2fae96b8b4ba35d3a88e20f278d79a0ccc6/libmproxy/proxy.py)。举个例子:

self.server.config.get_upstream_server = proxy.ConstUpstreamServerResolver(cmdline.parser_server_spec("http://upstreamserver:port"))
17

我用以下方法实现了你所要求的功能。你需要开启上游模式和上游认证(如果你的代理需要用户名和密码的话):

mitmproxy --mode upstream:https://HOSTNAME:PORT --upstream-auth USER:PASSWORD

然后你可以用一个简单的 curl 来检查它是否正常工作:

curl -x http://localhost:8080 -k https://api.ipify.org/

这样会把你的请求转发到 mitmproxy,然后再由它转发到你的其他代理。

希望这对你有帮助!

5

你可以使用 mitmproxy 的 -F 选项,这个选项可以把代理请求转发到上游服务器。你可以在这里查看相关文档:

http://mitmproxy.org/doc/features/forwardproxy.html

撰写回答