Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sigoden/proxyfor
A lightweight proxy for capturing HTTP(S) and WS(S) traffic.
https://github.com/sigoden/proxyfor
cli forward-proxy http http2 https man-in-the-middle proxy proxy-server reverse-proxy rust websocket
Last synced: about 1 month ago
JSON representation
A lightweight proxy for capturing HTTP(S) and WS(S) traffic.
- Host: GitHub
- URL: https://github.com/sigoden/proxyfor
- Owner: sigoden
- License: apache-2.0
- Created: 2024-03-05T01:56:58.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-05-05T00:06:49.000Z (5 months ago)
- Last Synced: 2024-07-24T01:59:13.688Z (about 2 months ago)
- Topics: cli, forward-proxy, http, http2, https, man-in-the-middle, proxy, proxy-server, reverse-proxy, rust, websocket
- Language: Rust
- Homepage:
- Size: 142 KB
- Stars: 268
- Watchers: 4
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Proxyfor
[![CI](https://github.com/sigoden/proxyfor/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/proxyfor/actions/workflows/ci.yaml)
[![Crates](https://img.shields.io/crates/v/proxyfor.svg)](https://crates.io/crates/proxyfor)
[![Docker Pulls](https://img.shields.io/docker/pulls/sigoden/proxyfor)](https://hub.docker.com/r/sigoden/proxyfor)A lightweight proxy for capturing HTTP(S) and WS(S) traffic.
## Features
- Support forward proxy
- Support reverse proxy
- Support filtering
- Support HTTP/HTTPS/WS/WSS protocols
- Integrate web interface
- Integrate certificates installation webapp
- Export in Markdown, cURL, or HAR formats## Installation
### With cargo
```
cargo install proxyfor
```### With docker
```
docker run -v ~/.proxyfor:/.proxyfor -p 8080:8080 --rm sigoden/proxyfor --web
```### Binaries on macOS, Linux, Windows
Download from [Github Releases](https://github.com/sigoden/proxyfor/releases), unzip and add proxyfor to your $PATH.
## Usage
### Forward Proxy
The client sets the proxy to `http://127.0.0.1:8080`.
```sh
$ proxyfor
$ curl -x http://127.0.0.1:8080 httpbin.org/ip
```![forwarding-proxy](https://github.com/sigoden/proxyfor/assets/4012553/c40cc1be-b9e9-4846-9702-ad3610719b08)
### Reverse Proxy
The client directly requests `http://127.0.0.1:8080`.
**This mode is suitable for scenarios where client cannot set a proxy.**
```sh
$ proxyfor https://httpbin.org
$ curl http://127.0.0.1:8080/ip
```## Web Interface
Proxyfor provides a web-based user interface that allows you to interactively inspect the HTTP traffic. All traffic is kept in memory, which means that it’s intended for small-ish samples.
```sh
$ proxyfor --web
```![proxyfor-webui](https://github.com/sigoden/proxyfor/assets/4012553/fef38f0c-ff7d-4b90-a9f0-a8c10c44c38c)
## Command Line
```
Usage: proxyfor [OPTIONS] [URL]Arguments:
[URL] Reverse proxy urlOptions:
-l, --listen Listening ip and port address [default: 0.0.0.0:8080]
-f, --filters Only inspect http(s) traffic whose `{method} {uri}` matches the regex
-m, --mime-filters Only inspect http(s) traffic whose content-type matches the value
-w, --web Enable web interface
-h, --help Print help
-V, --version Print version
```Change the ip and port.
```sh
proxyfor -l 18080
proxyfor -l 127.0.0.1
proxyfor -l 127.0.0.1:18080
```Enable web interface with `-w/--web`
```sh
proxyfor --web
```Use `-f/--filters` to filter traffic by matching `{method} {uri}`.
```sh
proxyfor -f httpbin.org/ip -f httpbin.org/anything
proxyfor -f '/^(get|post) https:\/\/httpbin.org/'
```Use `-m/--mime-filters` to filter traffic by content-type.
```sh
proxyfor -m application/json -m application/ld+json
proxyfor -m text/
```Pipe it to a markdown file, then view the captured traffic using your favorite editor/IDE with syntax highlighting, folding, search capabilities.
```sh
proxyfor > proxyfor.md
```## Certificates
Proxyfor can decrypt encrypted traffic on the fly, as long as the client trusts proxyfor’s built-in certificate authority. Usually this means that the proxyfor CA certificate has to be installed on the client device.
By far the easiest way to [install the proxyfor CA certificate](./assets/install-certificate.md) is to use the built-in certificate installation app.
To do this, start proxyfor and configure your target device with the correct proxy settings.
Now start a browser on the device, and visit the magic domain [proxyfor.local](http://proxyfor.local).![proxyfor.local](https://github.com/sigoden/proxyfor/assets/4012553/a5276872-8ab1-4794-9e97-ac7038ca5e4a)
## License
Copyright (c) 2024-∞ proxyfor-developers.
Proxyfor is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
See the LICENSE-APACHE and LICENSE-MIT files for license details.