An interactive web proxy for debugging and testing HTTP servers. Automatically generates certificates to intercept and decrypt SSL messages.
- SSL interception
- Modify and replay messages
- Interactive HTTP Fuzzing
- Graphical Lisp REPL
- Persist proxy sessions in SQLite
- Easy extension with hooks and commands
- SBCL + Ultralisp
- FiloSottile/mkcert
- SQLite
- Electron, GTK4, or Tcl/Tk
This is the best looking frontend and it has the most features.
make gtk
Usable, but a work in progress.
make clog
NOTE: Currently unmaintained, I like GTK more. It should still work for basic stuff.
make tk
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) |
The mx-proxy
namespace exports a macro called define-command
which you can
use to add your own interactive functionality. Example:
(define-command divide-by-zero (num sure) ("iNumber" "bAre you sure?")
(when sure (with-ui-errors (/ num 0))))
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.
Make sure mkcert
is in your path and you have run mkcert -install
and restarted your browser.