https://github.com/garlic0x1/mx-proxy
Web debugging proxy
https://github.com/garlic0x1/mx-proxy
Last synced: 3 months ago
JSON representation
Web debugging proxy
- Host: GitHub
- URL: https://github.com/garlic0x1/mx-proxy
- Owner: garlic0x1
- Created: 2024-04-01T06:05:14.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-19T11:52:02.000Z (almost 2 years ago)
- Last Synced: 2024-05-19T14:52:51.742Z (almost 2 years ago)
- Language: Common Lisp
- Size: 1.03 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-cl-software - mx-proxy - a Web debugging proxy - with an Electron, GTK4 or Tcl/Tk GUI. (Applications / Internet)
README
An interactive web proxy for debugging and testing HTTP servers.
Automatically generates certificates to intercept and decrypt SSL messages.
# Features
- SSL interception
- Modify and replay messages
- Interactive HTTP Fuzzing
- Graphical Lisp REPL
- Persist proxy sessions in SQLite
- Easy extension with hooks and commands
# Dependencies
- SBCL + [Ultralisp](https://ultralisp.org)
- [FiloSottile/mkcert](https://github.com/FiloSottile/mkcert)
- SQLite
- Electron, GTK4, or Tcl/Tk
# GTK frontend
This is the best looking frontend and it has the most features.
```bash
make gtk
```

# Electron frontend
Usable, but a work in progress.
```bash
make clog
```

# Tk frontend
NOTE: Currently unmaintained, I like GTK more. It should still work for basic stuff.
```bash
make tk
```

# Hooks
The proxy server uses the following hooks which you can attach functions to:
| Hook | Args |
| ------------------ | ------------------ |
| :on-request | request |
| :on-response | request response |
| :on-message-pair | message-pair |
| :init | (none) |
| :on-command | command |
| :on-load-project | (none) |
# Commands
The `mx-proxy` namespace exports a macro called `define-command` which you can
use to add your own interactive functionality. Example:
```lisp
(define-command divide-by-zero (num sure) ("iNumber" "bAre you sure?")
(when sure (with-ui-errors (/ num 0))))
```
# Configuration
The configuration directory is one of the following, in descending priority:
- `~/.config/mx-proxy/`
- `~/.mx-proxy/`
- `$MX_PROXY_HOME`
Persistent settings are stored in `config.lisp` as a plist dictionary.
After the program has loaded, it will also load `init.lisp`, you can load
any external packages you want from here.
# Installation notes
Make sure `mkcert` is in your path and you have run `mkcert -install` and restarted your browser.