A customizable HTTP/HTTPS proxy server library for Go, enabling request/response manipulation and MITM capabilities.
GoProxy is an HTTP proxy library written in Go that allows developers to build custom proxy servers. It solves the need for programmatically intercepting and manipulating web traffic, supporting features like MITM (Man-in-the-Middle) proxying, conditional request handling, and response modification. It's designed as a standard `net/http` handler for easy integration into existing Go applications.
Go developers building network tools, security applications, or DevOps utilities that require traffic inspection, filtering, or modification. It's also suitable for those creating custom proxy servers for testing, monitoring, or content transformation.
Developers choose GoProxy for its balance of performance and customizability within the Go ecosystem. Its clean API, support for multiple proxy modes, and production-ready features like certificate caching make it a reliable alternative to rolling your own proxy from scratch.
An HTTP proxy library for Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows detailed interception and modification of HTTP requests and responses through handlers, enabling actions like adding headers or blocking sites based on conditions, as shown in examples for reddit.com blocking.
Designed as a standard net/http handler, making it easy to integrate with existing Go middleware and libraries, such as logging or compression, without extra setup.
Includes features like MITM certificate caching for performance optimization and supports multiple proxy modes, including HTTPS interception, suitable for real-world deployments.
Enables actions triggered by host equality or regex patterns, useful for targeted traffic control, such as time-based restrictions on specific domains.
Requires manual certificate trust configuration on clients, which can be error-prone and cumbersome, as highlighted in the README with links to browser-specific guides.
The flexibility of handlers and conditional logic can introduce latency compared to simpler proxies, especially under high traffic loads, despite optimizations like certificate caching.
Lacks built-in advanced logging, monitoring, or GUI features; users must implement the Logger interface or develop additional components for comprehensive management.