No description
- Go 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| cmd/multiproxy | ||
| docs | ||
| pkg | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| GLOSSARY.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
multiproxy
multiproxy is an HTTP proxy that decides, host by host, whether to tunnel an HTTPS connection or to intercept it.
Plain-HTTP, CONNECT and SOCKS5 clients all follow the same host rules, and requests the proxy can see, plain or
intercepted, can have their headers rewritten. It exports traces, metrics and logs through OpenTelemetry. Its Go
packages compose into a proxy of your own.
Quick start
-
Install multiproxy. It needs Go 1.26 or later:
go install sarak.sh/mikluko/multiproxy/cmd/multiproxy@latest -
Start it. With no flags it listens on
127.0.0.1:8080and tunnels every HTTPS connection:multiproxy -
Send a request through it:
curl -x http://127.0.0.1:8080 https://example.com
Each request writes one JSON access record to the proxy's stdout.
Documentation
How-to guides:
- How to intercept HTTPS with a trusted CA
- How to serve SOCKS5 clients
- How to rewrite request headers
- How to send telemetry to a collector
- How to cut a release, for maintainers
Reference:
- Command-line reference: flags, host patterns, logs, environment and exit status
- Package documentation for the Go packages
- Glossary of the terms the documentation and code use
- Changelog
Explanation:
License
multiproxy is released under the MIT License.