mitmproxy/README.rst

188 lines
6.0 KiB
ReStructuredText
Raw Normal View History

mitmproxy
^^^^^^^^^
2016-06-07 07:32:29 +00:00
|travis| |coverage| |latest_release| |python_versions|
2016-02-15 18:43:55 +00:00
This repository contains the **mitmproxy** and **pathod** projects, as well as
their shared networking library, **netlib**.
2016-02-15 18:43:55 +00:00
``mitmproxy`` is an interactive, SSL-capable intercepting proxy with a console
interface.
2016-02-15 18:43:55 +00:00
``mitmdump`` is the command-line version of mitmproxy. Think tcpdump for HTTP.
``pathoc`` and ``pathod`` are perverse HTTP client and server applications
designed to let you craft almost any conceivable HTTP request, including ones
that creatively violate the standards.
2016-02-15 18:43:55 +00:00
Documentation & Help
--------------------
Documentation, tutorials and precompiled binaries can be found on the mitmproxy
and pathod websites.
2016-02-15 18:43:55 +00:00
|mitmproxy_site| |pathod_site|
The latest documentation for mitmproxy is also available on ReadTheDocs.
|mitmproxy_docs|
You can join our developer chat on Slack.
|slack|
2016-06-02 17:57:26 +00:00
Installation
------------
The installation instructions are `here <http://docs.mitmproxy.org/en/stable/install.html>`_.
2016-06-03 01:25:56 +00:00
If you want to contribute changes, keep on reading.
2016-06-02 17:57:26 +00:00
2016-02-15 18:43:55 +00:00
Hacking
-------
To get started hacking on mitmproxy, make sure you have Python_ 2.7.x. with
virtualenv_ installed (you can find installation instructions for virtualenv
here_). Then do the following:
2016-02-15 18:43:55 +00:00
.. code-block:: text
git clone https://github.com/mitmproxy/mitmproxy.git
cd mitmproxy
./dev.sh
2016-02-15 18:43:55 +00:00
The *dev* script will create a virtualenv environment in a directory called
"venv", and install all mandatory and optional dependencies into it. The
primary mitmproxy components - mitmproxy, netlib and pathod - are installed as
"editable", so any changes to the source in the repository will be reflected
live in the virtualenv.
2016-02-15 18:43:55 +00:00
To confirm that you're up and running, activate the virtualenv, and run the
mitmproxy test suite:
.. code-block:: text
. venv/bin/activate # venv\Scripts\activate.bat on Windows
2016-02-16 21:15:10 +00:00
py.test
2016-02-15 18:43:55 +00:00
Note that the main executables for the project - ``mitmdump``, ``mitmproxy``,
``mitmweb``, ``pathod``, and ``pathoc`` - 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:
2016-02-15 18:43:55 +00:00
.. code-block:: text
mitmdump --version
For convenience, the project includes an autoenv_ file (`.env`_) that
auto-activates the virtualenv when you cd into the mitmproxy directory.
Testing
-------
If you've followed the procedure above, you already have all the development
requirements installed, and you can simply run the test suite:
.. code-block:: text
2016-02-16 21:15:10 +00:00
py.test
2016-02-15 18:43:55 +00:00
Please ensure that all patches are accompanied by matching changes in the test
suite. The project tries to maintain 100% test coverage.
2016-06-16 08:08:22 +00:00
You can also use `tox` to run a full suite of tests in Python 2.7 and 3.5,
including a quick test to check documentation and code linting.
The following tox environments are relevant for local testing:
.. code-block:: text
tox -e py27 # runs all tests with Python 2.7
tox -e py35 # runs all tests with Python 3.5 (partial support only)
tox -e docs # runs a does-it-compile check on the documentation
tox -e lint # runs the linter for coding style checks
2016-06-16 08:08:47 +00:00
We are in the middle of transitioning to Python 3, so please make sure all tests
pass in Python 2.7 and 3.5. Running `tox` ensure all necessary tests are executed.
2016-02-15 18:43:55 +00:00
2016-02-17 19:38:51 +00:00
Documentation
2016-04-10 03:14:42 +00:00
-------------
2016-02-15 18:43:55 +00:00
The mitmproxy documentation is build using Sphinx_, which is installed
automatically if you set up a development environment as described above. After
installation, you can render the documentation like this:
2016-02-15 18:43:55 +00:00
.. code-block:: text
cd docs
make clean
make html
make livehtml
The last command invokes `sphinx-autobuild`_, which watches the Sphinx directory and rebuilds
the documentation when a change is detected.
2016-05-31 21:55:43 +00:00
Style
-----
Keeping to a consistent code style throughout the project makes it easier to
contribute and collaborate. Please stick to the guidelines in
`PEP8`_ and the `Google Style Guide`_ unless there's a very
2016-05-31 21:55:43 +00:00
good reason not to.
2016-06-16 08:08:22 +00:00
This is automatically enforced on every PR. If we detect a linting error, the
PR checks will fail and block merging. We are using this command to check for style compliance:
.. code-block:: text
flake8 --jobs 8 --count mitmproxy netlib pathod examples test
2016-02-15 18:43:55 +00:00
2016-02-15 22:05:30 +00:00
.. |mitmproxy_site| image:: https://shields.mitmproxy.org/api/https%3A%2F%2F-mitmproxy.org-blue.svg
2016-02-15 18:43:55 +00:00
:target: https://mitmproxy.org/
:alt: mitmproxy.org
2016-02-15 22:05:30 +00:00
.. |pathod_site| image:: https://shields.mitmproxy.org/api/https%3A%2F%2F-pathod.net-blue.svg
2016-02-15 18:43:55 +00:00
:target: https://pathod.net/
:alt: pathod.net
.. |mitmproxy_docs| image:: https://readthedocs.org/projects/mitmproxy/badge/
:target: http://docs.mitmproxy.org/en/latest/
:alt: mitmproxy documentation
.. |slack| image:: http://slack.mitmproxy.org/badge.svg
:target: http://slack.mitmproxy.org/
:alt: Slack Developer Chat
.. |travis| image:: https://shields.mitmproxy.org/travis/mitmproxy/mitmproxy/master.svg
2016-02-15 18:43:55 +00:00
:target: https://travis-ci.org/mitmproxy/mitmproxy
:alt: Build Status
2016-06-07 07:32:29 +00:00
.. |coverage| image:: https://codecov.io/gh/mitmproxy/mitmproxy/branch/master/graph/badge.svg
:target: https://codecov.io/gh/mitmproxy/mitmproxy
2016-02-15 18:43:55 +00:00
:alt: Coverage Status
.. |latest_release| image:: https://shields.mitmproxy.org/pypi/v/mitmproxy.svg
2016-02-15 18:43:55 +00:00
:target: https://pypi.python.org/pypi/mitmproxy
:alt: Latest Version
.. |python_versions| image:: https://shields.mitmproxy.org/pypi/pyversions/mitmproxy.svg
2016-02-15 18:43:55 +00:00
:target: https://pypi.python.org/pypi/mitmproxy
:alt: Supported Python versions
.. _Python: https://www.python.org/
.. _virtualenv: http://virtualenv.readthedocs.org/en/latest/
.. _here: http://virtualenv.readthedocs.org/en/latest/installation.html
.. _autoenv: https://github.com/kennethreitz/autoenv
.. _.env: https://github.com/mitmproxy/mitmproxy/blob/master/.env
.. _Sphinx: http://sphinx-doc.org/
.. _sphinx-autobuild: https://pypi.python.org/pypi/sphinx-autobuild
2016-02-17 19:38:51 +00:00
.. _issue_tracker: https://github.com/mitmproxy/mitmproxy/issues
.. _PEP8: https://www.python.org/dev/peps/pep-0008
.. _Google Style Guide: https://google.github.io/styleguide/pyguide.html