Eigenen HTTP Proxy in GO schreiben
Die Programmiersparche GO is geradezu prädestiniert dazu einen eigenen Proxy zu schreiben.
Ein lokaler HTTP Proxy ermöglicht eine vielzahl von Anwendungsgebieten z.B.
- Adblocker
- Javascript blocker
- Manipulieren von HTTP anfragen
- Cookie Banner Blocker
- Cachen von HTTP anfragen
Gerne wird er auch zum Analysieren von Programmen verwendet die sich nicht so leicht in den Netzwerkverkehr schauen lassen. Berühmte vertreter sind Fiddler oder die Burp Suite.
Der folgende Code dient als Grundlage um selbst solch einen Proxy zu schreiben. Zum ausprobieren einfach folgenden Code in eine Datei kopieren, z.B. in die simple_proxy.go
und über die Kommandozeile (cmd oder bash) starten:
go run simple_proxy.go
Jetzt horcht der Proxy auf Port 8080 auf Anfragen. Eventuell kommt noch eine Meldung der Windows Firewall die nachfrägt ob das gewollt ist, hier kann einfach mit “Zugriff zulassen” bestätigt werden.
Die einfachste möglichkeit ist den Webbrowser über den Proxy laufen zu lassen, dazu in Firefox in den Einstellungen nach Proxy suchen und über den Button “Einstellungen…” öffnen

jetzt den Proxy Adresse eintragen (localhost und 8080) und mit OK bestätigen:

Sobald eine Seite angesurft wird, zeigt der Proxy alle HTTP Anfragen an

Die Performance sollte dank der parallelität von GO in pari stehen mit einer direkten Verbindung. Ein größeres Manko ist das ausbleiben von HTTPS, derzeit nimmt der Proxy nur HTTP anfragen und und lässt HTTPS ins leere Laufen. Die “CONNECT” Methode zum erstellen einer SSL Verbindung über einen Proxy wird einfach ignoriert. Die ist Thema für einen eigenen Artikel.