the mitmweb mitmproxy mitmdump mitm middle gui python ruby node.js reverse-proxy

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/