2015-06-18 08:31:27 +00:00
[![Build Status ](https://img.shields.io/travis/mitmproxy/mitmproxy/master.svg )](https://travis-ci.org/mitmproxy/mitmproxy)
[![Code Health ](https://landscape.io/github/mitmproxy/mitmproxy/master/landscape.svg?style=flat )](https://landscape.io/github/mitmproxy/mitmproxy/master)
2015-06-16 01:05:21 +00:00
[![Coverage Status ](https://img.shields.io/coveralls/mitmproxy/mitmproxy/master.svg )](https://coveralls.io/r/mitmproxy/mitmproxy)
[![Downloads ](https://img.shields.io/pypi/dm/mitmproxy.svg?color=orange )](https://pypi.python.org/pypi/mitmproxy)
[![Latest Version ](https://img.shields.io/pypi/v/mitmproxy.svg )](https://pypi.python.org/pypi/mitmproxy)
[![Supported Python versions ](https://img.shields.io/pypi/pyversions/mitmproxy.svg )](https://pypi.python.org/pypi/mitmproxy)
2015-02-06 22:13:40 +00:00
2013-08-25 02:31:35 +00:00
2013-01-01 03:35:52 +00:00
__mitmproxy__ is an interactive, SSL-capable man-in-the-middle proxy for HTTP
with a console interface.
2011-02-20 23:11:41 +00:00
2013-01-01 03:35:52 +00:00
__mitmdump__ is the command-line version of mitmproxy. Think tcpdump for HTTP.
__libmproxy__ is the library that mitmproxy and mitmdump are built on.
2011-03-17 20:04:49 +00:00
2013-03-23 02:42:25 +00:00
Documentation, tutorials and distribution packages can be found on the
2015-07-15 02:20:04 +00:00
mitmproxy.org website:
2012-02-25 00:16:30 +00:00
[mitmproxy.org ](http://mitmproxy.org ).
2010-02-16 05:25:03 +00:00
2015-07-15 02:20:04 +00:00
Installation Instructions are available at [mitmproxy.org/doc/install.html ](http://mitmproxy.org/doc/install.html ).
You can join our developer chat on Slack:
2015-07-17 18:49:58 +00:00
[![Slack ](https://mitmproxy-slack.herokuapp.com/badge.svg )](https://mitmproxy-slack.herokuapp.com/)
2015-07-15 02:20:04 +00:00
2014-10-23 02:43:06 +00:00
2012-02-19 09:43:05 +00:00
Features
--------
2010-02-16 05:25:03 +00:00
2011-03-15 22:09:10 +00:00
- Intercept HTTP requests and responses and modify them on the fly.
- Save complete HTTP conversations for later replay and analysis.
2011-03-17 20:04:49 +00:00
- Replay the client-side of an HTTP conversations.
2011-03-18 22:26:51 +00:00
- Replay HTTP responses of a previously recorded server.
2012-02-20 23:32:56 +00:00
- Reverse proxy mode to forward traffic to a specified server.
2013-01-01 03:35:52 +00:00
- Transparent proxy mode on OSX and Linux.
2012-12-09 21:57:11 +00:00
- Make scripted changes to HTTP traffic using Python.
2011-03-18 22:26:51 +00:00
- SSL certificates for interception are generated on the fly.
2013-01-01 03:35:52 +00:00
- And much, much more.
2011-01-24 21:59:50 +00:00
2014-10-23 02:43:06 +00:00
__mitmproxy__ is tested and developed on OSX, Linux and OpenBSD. On Windows,
only mitmdump is supported, which does not have a graphical user interface.
2011-08-06 21:52:13 +00:00
2014-09-09 00:18:08 +00:00
2014-10-22 20:44:47 +00:00
2014-10-23 02:43:06 +00:00
Hacking
-------
2014-09-09 00:18:08 +00:00
2015-03-12 11:12:15 +00:00
To get started hacking on mitmproxy, make sure you have
[Python ](http://www.python.org ) 2.7.x. with
[virtualenv ](https://virtualenv.pypa.io/en/latest/ ) installed (you can find
installation instructions for virtualenv
[here ](https://virtualenv.pypa.io/en/latest/installation.html )). Then do the
following:
2014-09-09 00:18:08 +00:00
2015-03-12 11:12:15 +00:00
```
$ git clone https://github.com/mitmproxy/mitmproxy.git
$ git clone https://github.com/mitmproxy/netlib.git
$ git clone https://github.com/mitmproxy/pathod.git
$ cd mitmproxy
2015-07-22 00:43:45 +00:00
$ source ./dev
2015-03-12 11:12:15 +00:00
```
2010-02-16 04:09:07 +00:00
2015-03-12 11:12:15 +00:00
The *dev* script will create a virtualenv environment in a directory called
"venv.mitmproxy", and install all of mitmproxy's development requirements, plus
all optional modules. The primary mitmproxy components - mitmproxy, netlib and
pathod - are all installed "editable", so any changes to the source in the git
checkouts will be reflected live in the virtualenv.
2013-03-23 02:42:25 +00:00
2015-03-12 11:12:15 +00:00
To confirm that you're up and running, activate the virtualenv, and run the
mitmproxy test suite:
2014-10-22 20:44:47 +00:00
2015-03-14 01:42:50 +00:00
```shell
$ source ../venv.mitmproxy/bin/activate # ..\venv.mitmproxy\Scripts\activate.bat on Windows
2015-03-12 11:12:15 +00:00
$ nosetests ./test
2014-09-09 00:18:08 +00:00
```
2015-03-12 11:12:15 +00:00
Note that the main executables for the project - **mitmdump** , **mitmproxy** and
**mitmweb** - are all created within the virtualenv. After activating the
virtualenv, they will be on your $PATH, and you can run them like any other
command:
2014-10-22 20:44:47 +00:00
2015-03-12 11:12:15 +00:00
```$ mitmdump --version```
2013-05-24 03:23:47 +00:00
2015-04-07 23:59:00 +00:00
For convenience, the project includes an
[autoenv ](https://github.com/kennethreitz/autoenv ) file
([.env](https://github.com/mitmproxy/mitmproxy/blob/master/.env)) that
auto-activates the virtualenv when you cd into the mitmproxy directory.
2014-10-23 02:43:06 +00:00
2015-03-12 11:12:15 +00:00
### Testing
2014-10-23 02:43:06 +00:00
2015-03-12 11:12:15 +00:00
If you've followed the procedure above, you already have all the development
requirements installed, and you can simply run the test suite:
2014-10-23 02:43:06 +00:00
2015-03-12 11:12:15 +00:00
```nosetests ./test```
2014-10-23 02:43:06 +00:00
2013-05-13 21:12:26 +00:00
Please ensure that all patches are accompanied by matching changes in the test
suite. The project maintains 100% test coverage.
2014-10-23 02:43:06 +00:00
### Docs
Rendering the documentation requires [countershape ](http://github.com/cortesi/countershape ). After installation, you can render the documentation to the doc like this:
`cshape doc-src doc`