python - mitmweb - El proxy inverso más simple posible
pip install mitmproxy (1)
Estoy buscando una manera de simplemente configurar un proxy localmente que se conecte a un sitio remoto. No quiero instalar nada en el sistema propiamente dicho. Si pudiera llamarlo con una sola llamada de la línea de comandos en lugar de jugar con un solo archivo de configuración, sería genial.
El propósito es detectar el tráfico entre mi aplicación local, que estoy desarrollando, y el servidor remoto, que otra persona está proporcionando y que utiliza HTTPS.
Preferiblemente, sería un paquete de Ruby, Python o Node, de modo que pudiera hacer algo como:
mkdir simplest-proxy; cd simplest-proxy; bundle init
echo "gem ''simplest-proxy''" >> Gemfile; bundle --path vendor/bundle
bundle exec bin/simplest-proxy -p 8080 https://remote.site.example.com/
o
virtualenv simplest-proxy; cd simplest-proxy
bin/easy_install simplest-proxy
bin/simplest-proxy -p 8080 https://remote.site.example.com/
o
mkdir simplest-proxy; cd simplest-proxy
npm install simplest-proxy
node_modules/.bin/simplest-proxy -p 8080 https://remote.site.example.com/
Permitiría que mi aplicación se conecte a localhost:8080
, lo que reenviaría la solicitud (y reescribiría el encabezado del Host
y cualquier otra cosa necesaria) al sitio remoto. Podría verlo en WireShark y averiguar qué está pasando.
He echado un vistazo rápido a pypi, rubygems y npm, pero lo que encontré hasta ahora no funcionaba ( proxylet
, que por lo demás parecía muy prometedor), destinado a un escenario mucho más complicado y que requiere configuración ( dj-revproxy
) o esperando ser llamado con un Host
correcto ( node-reverse-proxy
) en lugar de reescritura.
ACTUALIZACIÓN: Me voy con un Apache con un ProxyPass
/ ProxyPassReverse
config por ahora, pero se siente excesivamente masivo y requiere jugar con los archivos de configuración.
ACTUALIZACIÓN: Otra solución que no es aplicable es un proxy HTTP real en lugar de uno que emule el sitio remoto. Debido a que el sitio remoto es un sitio HTTPS, eso solo haría que mi aplicación realice una CONEXIÓN dentro del proxy y no se haya obtenido nada.
Encontrado http://mitmproxy.org/ !
Mi caso de uso está cubierto por:
mitmproxy -p 8080 -P https://remote.site.example.com/
Pero hay más. También ofrece una interfaz de usuario ncurses para mostrar todas las solicitudes realizadas y le permite inspeccionarlas. Esto hace que WireShark sea innecesario.
Instale con su instalador de paquetes distro o con easy_install como se muestra en la pregunta:
virtualenv mitmproxy; cd mitmproxy
bin/easy_install mitmproxy
bin/mitmproxy -p 8080 -P https://remote.site.example.com/
Editar:
Para la versión 3 de mitmproxy, los argumentos serían:
mitmproxy -p 8080 --mode reverse:https://remote.site.example.com/