You can do this with the -F flag to mitmproxy, which forwards proxy requests to an upstream server. Take a look at the docs here:
How do I connect mitmproxy to another proxy outside of my control?
Domanda
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?
Soluzione 2
Altri suggerimenti
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!
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"))
I think it's the -U
option:
command-line -U http://hostname[:port]
source: http://docs.mitmproxy.org/en/stable/features/upstreamproxy.html