'How do I connect mitmproxy to another proxy outside of my control?

The process would be that the browser send a request to MITMproxy and then generate a request that gets sent to target proxy server which isn't controlled by us. The proxy server would send a response to MITMproxy which would then relay that response to the browser.

How would I go about doing this?



Solution 1:[1]

I was able to achieve what you ask with the following. You need to enable the upstream mode and upstream auth (in case you have some username/password for your proxy):

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

Then you can check it's working with a simple curl:

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

This will forward your request to mitmproxy which will forward it to your other proxy.

Hope it helps!

Solution 2:[2]

If you'd like to do this not from the script, you can change the upstream server with get_upstream_server from server.config see [mitmproxy config] (https://github.com/mitmproxy/mitmproxy/blob/42d4a2fae96b8b4ba35d3a88e20f278d79a0ccc6/libmproxy/proxy.py). For example:

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

Solution 3:[3]

I think it's the -U option:

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

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jpbalarini
Solution 2 user2573072
Solution 3 ospider