2013-06-14 10 views
20

Ich bin auf der Suche nach einer Möglichkeit, einfach lokal einen Proxy einzurichten, der eine Verbindung zu einer Remote-Site herstellt. Ich möchte nichts im System installieren. Wenn ich es mit einem einzigen Befehlszeilenaufruf aufrufen könnte, anstatt selbst mit einer einzigen Konfigurationsdatei zu arbeiten, wäre das großartig.Der einfachste mögliche Reverse-Proxy

Der Zweck besteht darin, den Verkehr zwischen meiner lokalen Anwendung, die ich entwickle, und dem Remote-Server, der jemand anderen bereitstellt und der HTTPS verwendet, zu erkennen.

Vorzugsweise wäre es ein Ruby, Python oder Node-Paket sein, so dass ich nur entlang der Linien von etwas tun könnte:

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/ 

oder

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

oder

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

Es würde meiner App ermöglichen, eine Verbindung zu localhost:8080 herzustellen, die die Anforderung weiterleiten (und dieneu schreiben würde)Header und was auch immer sonst notwendig) zur entfernten Seite. Ich wäre in der Lage, lo in WireShark zu sehen und herauszufinden, was los ist.

Ich habe einen kurzen Blick um in pypi, rubygems und npm hatte, aber was ich bisher gefunden wurde entweder nicht funktioniert (proxylet, die sonst sehr vielversprechend aussah), für ein viel komplizierteres Szenario gedacht und erfordert Setup (dj-revproxy) oder erwarten, mit einer korrekten Host (node-reverse-proxy) aufgerufen werden, anstatt neu zu schreiben.

UPDATE: Ich gehe mit einem Apache mit einer ProxyPass/ProxyPassReverse Konfiguration für jetzt, aber es fühlt sich massiv übertrieben und erfordert das Spielen mit Konfigurationsdateien.

AKTUALISIERUNG: Eine andere Lösung, die nicht anwendbar ist, ist ein tatsächlicher HTTP-Proxy und nicht eine Emulation der Gegenstelle. Da es sich bei der Remote-Site um eine HTTPS-Site handelt, würde dies dazu führen, dass meine App innerhalb des Proxys eine Verbindung herstellt, und es wurde nichts gewonnen.

+0

Haben Sie bei Fiedler oder charles geschaut? – pguardiario

+0

Ja. Charles konnte, so weit ich sehen konnte, kein Reverse-Proxy zu HTTPS machen. Fiddler schien wie eine Windows-einzige Sache, die in den Browser sprang, um Dinge transparent durch den Proxy zu senden. Aber ich habe jetzt mitmproxy gefunden, werde das als Antwort schreiben. – clacke

+0

Es ist kein Reverse-Proxy, nach dem Sie suchen, es ist ein Mann im mittleren Proxy, und ja, Charles kann als solcher agieren. – pguardiario

Antwort

24

Gefunden http://mitmproxy.org/!

Mein Anwendungsfall wird durch abgedeckt:

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

Aber es gibt noch mehr. Es bietet auch eine ncurses-Benutzeroberfläche zum Anzeigen aller ausgeführten Anforderungen und ermöglicht es Ihnen, sie zu überprüfen. Dies macht WireShark überflüssig.

mit Ihrer Distribution Paket-Installer installieren oder mit easy_install wie in der Frage gezeigt:

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

Gefunden mitmproxy via http://alternativeto.net/software/charles/?platform=linux. Liebe diese Seite. – clacke

+2

Ich empfehle 'pip install mitmproxy' vs. easy_install. –

+0

Ist eigentlich nicht viel wichtig, vor allem in einem virtualenv, aber sicher, das funktioniert genauso gut. – clacke

Verwandte Themen