mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 08:11:00 +00:00
96 lines
3.6 KiB
Markdown
96 lines
3.6 KiB
Markdown
[![Build Status](https://travis-ci.org/mitmproxy/mitmproxy.svg?branch=master)](https://travis-ci.org/mitmproxy/mitmproxy) [![Coverage Status](https://coveralls.io/repos/mitmproxy/mitmproxy/badge.svg?branch=master)](https://coveralls.io/r/mitmproxy/mitmproxy)
|
|
[![Latest Version](https://pypip.in/version/mitmproxy/badge.svg?style=flat)](https://pypi.python.org/pypi/mitmproxy/)
|
|
[![Supported Python versions](https://pypip.in/py_versions/mitmproxy/badge.svg?style=flat)](https://pypi.python.org/pypi/mitmproxy)
|
|
[![Supported Python implementations](https://pypip.in/implementation/mitmproxy/badge.svg?style=flat)](https://pypi.python.org/pypi/mitmproxy/)
|
|
|
|
|
|
__mitmproxy__ is an interactive, SSL-capable man-in-the-middle proxy for HTTP
|
|
with a console interface.
|
|
|
|
__mitmdump__ is the command-line version of mitmproxy. Think tcpdump for HTTP.
|
|
|
|
__libmproxy__ is the library that mitmproxy and mitmdump are built on.
|
|
|
|
Documentation, tutorials and distribution packages can be found on the
|
|
mitmproxy.org website:
|
|
|
|
[mitmproxy.org](http://mitmproxy.org).
|
|
|
|
You can find complete directions for installing mitmproxy [here](http://mitmproxy.org/doc/install.html).
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- Intercept HTTP requests and responses and modify them on the fly.
|
|
- Save complete HTTP conversations for later replay and analysis.
|
|
- Replay the client-side of an HTTP conversations.
|
|
- Replay HTTP responses of a previously recorded server.
|
|
- Reverse proxy mode to forward traffic to a specified server.
|
|
- Transparent proxy mode on OSX and Linux.
|
|
- Make scripted changes to HTTP traffic using Python.
|
|
- SSL certificates for interception are generated on the fly.
|
|
- And much, much more.
|
|
|
|
__mitmproxy__ is tested and developed on OSX, Linux and OpenBSD. On Windows,
|
|
only mitmdump is supported, which does not have a graphical user interface.
|
|
|
|
|
|
|
|
Hacking
|
|
-------
|
|
|
|
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:
|
|
|
|
```
|
|
$ 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
|
|
$ ./dev
|
|
```
|
|
|
|
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.
|
|
|
|
To confirm that you're up and running, activate the virtualenv, and run the
|
|
mitmproxy test suite:
|
|
|
|
```shell
|
|
$ source ../venv.mitmproxy/bin/activate # ..\venv.mitmproxy\Scripts\activate.bat on Windows
|
|
$ nosetests ./test
|
|
```
|
|
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:
|
|
|
|
```$ mitmdump --version```
|
|
|
|
|
|
|
|
### Testing
|
|
|
|
If you've followed the procedure above, you already have all the development
|
|
requirements installed, and you can simply run the test suite:
|
|
|
|
```nosetests ./test```
|
|
|
|
Please ensure that all patches are accompanied by matching changes in the test
|
|
suite. The project maintains 100% test coverage.
|
|
|
|
|
|
### 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`
|