Go to file
Aldo Cortesi a7cea1749b Make beeping more general.
- The "B" key now sets a filter pattern. Whenever the filter matches, the
  terminal beeps.
- The beep specification is now stored in the State object, where I want to
  keep all mutable state.
- I've removed the startup flags for beeping for now. We probably want to let
  users specify a number of options on startup, including interception patterns
  and limits. When we do this, we should also separate out the dumping and
  curses programs, because many of these options will only make sense in one of
  the two.
- This isn't an exact replacement for the beep functionality I ripped out,
  because specifying beeping on intercept is slightly cumbersome (you need to
  re-specify the intercept pattern using B). Sorry - we'll add a better way
  soon.
2010-03-01 13:56:28 +13:00
doc-src Initial checkin. 2010-02-16 17:09:07 +13:00
examples Initial checkin. 2010-02-16 17:09:07 +13:00
libmproxy Make beeping more general. 2010-03-01 13:56:28 +13:00
test Initial checkin. 2010-02-16 17:09:07 +13:00
.gitignore Initial checkin. 2010-02-16 17:09:07 +13:00
LICENSE Initial checkin. 2010-02-16 17:09:07 +13:00
MANIFEST.in Initial checkin. 2010-02-16 17:09:07 +13:00
mitmproxy Make beeping more general. 2010-03-01 13:56:28 +13:00
README Maintain compatibility with 0.9.8.x of urwid. 2010-03-01 13:37:50 +13:00
setup.py setup.py updates. 2010-02-16 18:01:26 +13:00
todo Added beeping. --bireq and --bires enables beeping on intercepted requests/responses. 2010-02-26 14:01:38 +01:00

__mitmproxy__ is an interactive SSL-capable intercepting HTTP proxy. It lets
you to observe, modify and replay requests and responses on the fly. The
underlying library that mitmproxy is built on can also be used to do these
things programmatically. 

By default, mitmproxy starts up with a mutt-like interactive curses interface -
the help page (which you can view by pressing "?") should tell you everything
you need to know. Note that requests and responses are stored in-memory until
you delete them, so leaving mitmproxy running indefinitely or requesting very
large amounts of data through it is a bad idea.

SSL
---

The first time mitmproxy is started, it will generate a bogus SSL certificate
(the default location is ~/.mitmproxy/cert.pem). This certificate will be used
for the browser-side of intercepted traffic. Because it won't match any domain
you visit, and won't verify against any certificate authority, you will have to
add an exception for each site you visit. SSL requests are intercepted by
simply assuming that all CONNECT requests are https. The connection from the
browser is wrapped in SSL, and we read the request by pretending to be the
connecting server. We then open an SSL request to the destination server, and
replay the request.


Download
--------

Releases can be found here: http://corte.si/software

Source is hosted here: http://github.com/cortesi/mitmproxy


Requirements
------------

* A recent [Python](http://www.python.org) interpreter.
* SSL certificates are generated using [openssl](http://www.openssl.org/)
* The curses interface relies on version 0.9.8 or newer of the
  [urwid](http://excess.org/urwid/) library.
* The test suite uses the [pry](http://github.com/cortesi/pry) unit testing
  library.

You should also make sure that your console environment is set up with the
following: 
    
* EDITOR environment variable to determine the external editor.
* PAGER environment variable to determine the external pager.
* Appropriate entries in your mailcap files to determine external
  viewers for request and response contents.