
HTTP/HTTPS-Proxy in einem einzigen Python-Skript
HTTP/HTTPS-Proxy in einem einzigen Python-Skript
Dieses Skript funktioniert mit Python 2.7. Du musst OpenSSL installieren, um HTTPS-Verbindungen abzufangen.
Einfach als Skript ausführen:
$ python proxy2.py
Der obige Befehl startet den Proxy auf localhost:8080. Überprüfe, ob es funktioniert, indem du den folgenden Befehl in einem anderen Terminal desselben Hosts eingibst.
$ http_proxy=localhost:8080 curl http://www.example.com/
proxy2 ist für Debugging/Tests gedacht und akzeptiert daher nur Verbindungen von localhost.
Um einen anderen Port zu verwenden, gib die Portnummer als erstes Argument an.
$ python proxy2.py 3128
Um HTTPS-Verbindungen abzufangen, erzeuge private Schlüssel und ein privates CA-Zertifikat:
$ ./setup_https_intercept.sh
Über den Proxy kannst du auf http://proxy2.test/ zugreifen und das CA-Zertifikat in den Browsern installieren.
Du kannst den Proxy einfach anpassen und die Requests/Responses verändern oder Daten in Dateien speichern.
Die Klasse ProxyRequestHandler bietet 3 Methoden zur Anpassung:
request_handler: wird aufgerufen, bevor auf den Upstream-Server zugegriffen wirdresponse_handler: wird aufgerufen, bevor die Antwort an den Client gesendet wirdsave_handler: wird nach dem Senden der Antwort an den Client mit der exklusiven Sperre aufgerufen, sodass du sicher in das Terminal oder das Dateisystem schreiben kannstStandardmäßig ist nur save_handler implementiert, der HTTP(S)-Header und einige nützliche Daten auf der Standardausgabe ausgibt.