2013-06-14 4 views
20

Szukam sposobu na proste skonfigurowanie serwera proxy, który łączy się ze zdalną witryną. Nie chcę niczego instalować w systemie. Gdybym mógł wywołać to za pomocą pojedynczego wywołania z linii poleceń, zamiast marnować nawet jeden plik konfiguracyjny, byłoby to genialne.Najprostszy możliwy odwrotny proxy

Ma to na celu śledzenie ruchu między moją lokalną aplikacją, którą właśnie rozwijam, a serwerem zdalnym, który udostępnia inna osoba i która używa protokołu HTTPS.

Korzystnie byłoby Ruby, Python lub pakiet węzeł, tak że mogę po prostu zrobić coś wzdłuż linii:

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/ 

lub

virtualenv simplest-proxy; cd simplest-proxy 
bin/easy_install simplest-proxy 
bin/simplest-proxy -p 8080 https://remote.site.example.com/ 

lub

mkdir simplest-proxy; cd simplest-proxy 
npm install simplest-proxy 
node_modules/.bin/simplest-proxy -p 8080 https://remote.site.example.com/ 

Pozwoliłoby to mojej aplikacji połączyć się z localhost:8080, która przesyła żądanie (i przepisać kodNagłóweki wszystko, co niezbędne) do zdalnego serwisu. Byłbym w stanie obejrzeć lo w WireShark i dowiedzieć się, co się dzieje.

Rozejrzałem się szybko po pypi, rubygemach i npm, ale to, co do tej pory znalazłem, albo nie działało (proxylet, które inaczej wyglądało na bardzo obiecujące), przeznaczone na dużo bardziej skomplikowany scenariusz i wymagające konfiguracji (dj-revproxy) lub oczekujący na wywołanie z poprawnym Host (node-reverse-proxy) zamiast przepisywania.

AKTUALIZACJA: Wybieram teraz Apache z konfiguracją ProxyPass/ProxyPassReverse, ale wydaje mi się, że wymaga on ogromnej przesady i wymaga odtwarzania plików konfiguracyjnych.

AKTUALIZACJA: Innym rozwiązaniem, które nie ma zastosowania, jest rzeczywisty serwer proxy HTTP zamiast emulacji strony zdalnej. Ponieważ witryna zdalna jest witryną HTTPS, to po prostu sprawiłoby, że moja aplikacja wykona połączenie w proxy i nic nie zyska.

+0

Pan spojrzał na skrzypka czy Karola? – pguardiario

+0

Tak. Charles nie mógł odwrócić proxy do HTTPS, o ile mogłem to zobaczyć. Fiddler wydawał się być rzeczą tylko Windowsową, która uruchamiała się w przeglądarce, aby przezroczyście przesyłać rzeczy przez proxy. Ale znalazłem teraz mitmproxy, napiszę to jako odpowiedź. – clacke

+0

To nie jest odwrotny serwer proxy, którego szukasz, to człowiek w środku proxy, a tak charles może działać jako taki. – pguardiario

Odpowiedz

24

Znaleziono http://mitmproxy.org/!

Moje przypadek użycia jest objęte:

mitmproxy -p 8080 -P https://remote.site.example.com/ 

Ale to nie wszystko. Oferuje również interfejs użytkownika ncurses do pokazywania wszystkich wykonanych żądań i umożliwia ich sprawdzenie. To sprawia, że ​​WireShark jest niepotrzebny.

Instaluj z pakietu distro instalatora lub easy_install jak pokazano na pytanie:

virtualenv mitmproxy; cd mitmproxy 
bin/easy_install mitmproxy 
bin/mitmproxy -p 8080 -P https://remote.site.example.com/ 
+0

Znaleziono mitmproxy przez http://alternativeto.net/software/charles/?platform=linux. Uwielbiam tę stronę. – clacke

+2

Proponuję 'pip install mitmproxy' vs. easy_install. –

+0

Nie ma większego znaczenia, szczególnie w virtualenv, ale na pewno działa równie dobrze. – clacke