Skip to content

garlic0x1/mx-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

GTK frontend

This is the best looking frontend and it has the most features.

make gtk

GTK 

Electron frontend

Usable, but a work in progress.

make clog

CLOG 

Tk frontend

NOTE: Currently unmaintained, I like GTK more. It should still work for basic stuff.

make tk

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:

(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.