Ich kann Netcat (oder Socat) problemlos verwenden, um den Datenverkehr zwischen meinem Browser und einem bestimmten Host: Port zu erfassen.
Gibt es unter Linux ein Befehlszeilen-Gegenstück zu einem Squid-ähnlichen HTTP-Proxy, mit dem ich den Datenverkehr zwischen meinem HTTP-Client (entweder Browser oder Befehlszeilenprogramm) und einem beliebigen Host: Port erfassen kann?
command-line
proxy
http
squid
Harry
quelle
quelle
Antworten:
Sowohl Perl als auch Python (und wahrscheinlich auch Ruby) verfügen über einfache Kits, mit denen Sie schnell einfache HTTP-Proxys erstellen können.
Verwenden Sie in Perl HTTP :: Proxy . Hier ist das dreizeilige Beispiel aus der Dokumentation. Fügen Sie Filter hinzu, um Anforderungen oder Antworten zu filtern, zu protokollieren oder neu zu schreiben. Beispiele finden Sie in der Dokumentation.
Verwenden Sie in Python SimpleHTTPServer . Hier ist ein Beispielcode, der leicht von effbot angepasst wurde . Passen Sie die
do_GET
Methode (oder andere) an, um Anforderungen oder Antworten zu filtern, zu protokollieren oder neu zu schreiben.quelle
Dies ist möglicherweise nicht die beste Lösung, aber wenn Sie einen Proxy verwenden, hat dieser eine bestimmte,
host:port
sodass die Netcat-Lösung weiterhin funktioniert, obwohl Sie die Proxy-Metadaten auseinander nehmen müssen, um einen Sinn daraus zu ziehen.Der einfachste Weg, dies zu tun, könnte darin bestehen, einen beliebigen zufälligen Anonymisierungs-Proxy zu verwenden und einfach den gesamten Datenverkehr durchzuleiten
netcat
. (Stellen Sie also Ihren Browser-Proxy auf einlocalhost:port
und leiten Sie die Daten an den realen Proxy weiter.)Wenn Sie einen lokalen Proxy haben möchten, ist ein SOCKS5-Proxy mit
ssh -D <port> localhost
wahrscheinlich die einfachste Option. Natürlich müssen Sie Ihrem Browser mitteilen, dass er einen "Socken" -Proxy anstelle eines "http" -Proxys verwenden soll.Also so etwas (vorausgesetzt, Ihr lokaler Computer akzeptiert eingehende SSH-Verbindungen):
Das funktioniert natürlich nur für einen Browserverbindungsversuch und wird dann beendet, und ich habe nicht versucht, die Rückgabedaten an den Browser weiterzuleiten, sodass Sie Ihre vollständige
netcat
Lösung benötigen .quelle
root
werden können usw.ssh -fN -D ...
ein SOCKS5-Proxy amlocalhost
Port gestartet wird8000
, aber was machtnc -l ...
das? Und auf welchen Port soll mein Browser zeigen:8000
oder8080
?nc
Befehle akzeptieren den gesamten Datenverkehr von Port 8080 und leiten ihn an 8000 weiter. Ich habe keine vollständigenetcat
Lösung bereitgestellt, da in Ihrem Beitrag vorgeschlagen wurde, dass Sie bereits wissen, wie dieser Teil ausgeführt wird.