Forward proxy server for HTTP and HTTPS protocols.
- Forward-proxying HTTP data streams.
- Forward-proxying HTTPS data streams.
- Ability to unpack Gzipped data streams.
- Ability to detect and remove Unicode BOM (Byte Order Mark).
- Ability to limit the speed for both HTTP and HTTPS data streams.
- Configurable listen host name and port number.
- Two work modes: public & private.
- White list of IP addresses is supported.
- Usage of interfaces implementing
io.Readerinterface. - Pure Golang solution, free and open-source.
Use the build.bat script included with the source code.
go install github.com/vault-thirteen/Forward-Proxy/cmd/proxy@latest
| Parameter | Type | Description | Possible Values | Unit | Default Value |
|---|---|---|---|---|---|
| -bom | Boolean | Remove BOM from content | true | ||
| -gzip | Boolean | Decode GZip content | false | ||
| -host | String | Listen host name | "0.0.0.0" | ||
| -list | String | Path to a list of IP addresses | "" | ||
| -loglevel | String | Log level | debug, info, warn, error, fatal, panic, none, disabled | "error" | |
| -mode | String | Work mode | public, private | "public" | |
| -port | Integer | Listen port number | 8080 | ||
| -sl | Boolean | Use speed limiter | true | ||
| -slbl | Integer | Speed limiter's burst limit | bytes / sec. | 50'000 | |
| -slbnr | Float | Speed limiter's maximal burst-to-normal ratio | 2.0 | ||
| -slnl | Float | Speed limiter's normal limit | bytes / sec. | 50'000 | |
| -tcdt | Integer | Target connection dial timeout | sec. | 60 |
-
To get help, use
-hstartup parameter. -
List of IP addresses has different usage depending on the work mode:
- In public mode, list is not used at all;
- In private mode, list is used as a white list of IP addresses.
-
Limiting speed to values lower than 32 KiB/sec. (32'768 Bytes/sec.) is not supported due to restrictions of the
io.Copyfunction built into Go language. This limit may change in future versions of Golang.