GoProxy
A Go library for building a customizable HTTP and HTTPS proxy server, supporting request and response manipulation, MITM certificate caching, and hijacked connections.
GoProxy is a library for creating a customized HTTP and HTTPS proxy server in Go, with several configurable settings. It aims to offer an optimized proxy server usable under reasonable traffic while staying customizable and programmable, and because it is just a net/http handler, other middleware such as logging or compression can be layered over it.
It supports four proxy modes: regular HTTP proxying, HTTPS through CONNECT, HTTPS man-in-the-middle proxying where the server generates TLS certificates to inspect traffic, and a hijacked mode where a handler gets direct access to the raw connection. Other features include acting only on specific hosts by exact match or regex, caching MITM certificates to save CPU, redirecting relative-path requests to a custom handler, a pluggable logger interface, and the option to disable HTTP header canonicalization.