2016-02-15 20:13:06 +00:00
mitmproxy
^^^^^^^^^
2016-06-25 09:27:58 +00:00
|travis| |appveyor| |coverage| |latest_release| |python_versions|
2016-02-15 18:43:55 +00:00
2016-10-19 22:56:38 +00:00
This repository contains the **mitmproxy** and **pathod** projects.
2016-02-15 18:43:55 +00:00
2016-06-02 04:43:46 +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.
2016-12-27 19:47:47 +00:00
`` mitmweb `` is a web-based interface for mitmproxy.
2016-06-02 04:43:46 +00:00
`` 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
--------------------
2016-06-19 08:55:32 +00:00
General information, tutorials, and precompiled binaries can be found on the mitmproxy
2016-06-02 04:43:46 +00:00
and pathod websites.
2016-02-15 18:43:55 +00:00
2016-10-17 20:06:32 +00:00
|mitmproxy_site|
2016-06-19 08:55:32 +00:00
2016-02-15 18:43:55 +00:00
The latest documentation for mitmproxy is also available on ReadTheDocs.
|mitmproxy_docs|
2016-06-19 08:55:32 +00:00
2016-06-21 08:52:27 +00:00
Join our discussion forum on Discourse to ask questions, help
each other solve problems, and come up with new ideas for the project.
2016-06-19 08:55:32 +00:00
|mitmproxy_discourse|
2017-01-29 22:06:50 +00:00
Join our developer chat on Slack if you would like to contribute to mitmproxy itself.
2016-02-15 18:43:55 +00:00
|slack|
2016-06-02 17:57:26 +00:00
Installation
------------
2016-10-23 00:20:45 +00:00
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
2017-01-29 22:06:50 +00:00
Setting Up a Development Environment
------------------------------------
2016-02-15 18:43:55 +00:00
2017-01-29 22:06:50 +00:00
To get started hacking on mitmproxy, please follow the `advanced installation`_ steps to install mitmproxy from source, but stop right before running `` pip3 install mitmproxy `` . Instead, do the following:
2016-02-15 18:43:55 +00:00
.. code-block :: text
git clone https://github.com/mitmproxy/mitmproxy.git
cd mitmproxy
2017-01-29 22:06:50 +00:00
./dev.sh # "powershell .\dev.ps1" on Windows
2016-02-15 18:43:55 +00:00
2017-01-29 22:06:50 +00:00
The *dev* script will create a `virtualenv`_ environment in a directory called
2017-01-06 10:03:05 +00:00
"venv3.5", and install all mandatory and optional dependencies into it. The
2016-10-19 22:56:38 +00:00
primary mitmproxy components - mitmproxy and pathod - are installed as
2016-06-02 04:43:46 +00:00
"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
2017-01-29 22:06:50 +00:00
The main executables for the project - `` mitmdump `` , `` mitmproxy `` ,
2016-06-02 04:43:46 +00:00
`` 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
2017-01-29 22:06:50 +00:00
. venv3.5/bin/activate # "venv\Scripts\activate" on Windows
2016-02-15 18:43:55 +00:00
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
2017-01-29 22:06:50 +00:00
requirements installed, and you can run the full test suite (including tests for code style and documentation) with tox_:
2016-02-15 18:43:55 +00:00
.. code-block :: text
2017-01-29 22:06:50 +00:00
tox
2016-06-16 08:08:22 +00:00
2017-01-29 22:06:50 +00:00
For speedier testing, we recommend you run `py.test`_ directly on individual test files or folders:
2016-06-16 08:08:22 +00:00
.. code-block :: text
2017-01-29 22:06:50 +00:00
cd test/mitmproxy/addons
py.test --cov mitmproxy.addons.anticache --looponfail test_anticache.py
As py.test does not check the code style, you probably want to run `` tox -e lint `` before committing your changes.
2016-06-16 08:08:22 +00:00
2017-01-29 22:06:50 +00:00
Please ensure that all patches are accompanied by matching changes in the test
suite. The project tries to maintain 100% test coverage and enforces this strictly for some parts of the codebase.
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
2016-06-02 04:43:46 +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.
2017-01-29 22:06:50 +00:00
Code Style
----------
2016-05-31 21:55:43 +00:00
Keeping to a consistent code style throughout the project makes it easier to
contribute and collaborate. Please stick to the guidelines in
2016-05-31 22:17:10 +00:00
`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
2016-11-03 07:51:22 +00:00
PR checks will fail and block merging. You can run our lint checks yourself
with the following command:
2016-06-16 08:08:22 +00:00
.. code-block :: text
2016-11-03 07:51:22 +00:00
tox -e lint
2016-06-16 08:08:22 +00:00
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
.. |mitmproxy_docs| image :: https://readthedocs.org/projects/mitmproxy/badge/
:target: http://docs.mitmproxy.org/en/latest/
:alt: mitmproxy documentation
2016-06-19 08:55:32 +00:00
.. |mitmproxy_discourse| image :: https://shields.mitmproxy.org/api/https%3A%2F%2F-discourse.mitmproxy.org-orange.svg
:target: https://discourse.mitmproxy.org
:alt: Discourse: mitmproxy
2016-02-15 18:43:55 +00:00
.. |slack| image :: http://slack.mitmproxy.org/badge.svg
:target: http://slack.mitmproxy.org/
:alt: Slack Developer Chat
2016-06-25 09:27:58 +00:00
.. |travis| image :: https://shields.mitmproxy.org/travis/mitmproxy/mitmproxy/master.svg?label=Travis%20build
2016-02-15 18:43:55 +00:00
:target: https://travis-ci.org/mitmproxy/mitmproxy
2016-06-25 09:27:58 +00:00
:alt: Travis Build Status
.. |appveyor| image :: https://shields.mitmproxy.org/appveyor/ci/mhils/mitmproxy/master.svg?label=Appveyor%20build
:target: https://ci.appveyor.com/project/mhils/mitmproxy
:alt: Appveyor Build Status
2016-02-15 18:43:55 +00:00
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
2016-02-15 20:13:06 +00:00
.. |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
2016-02-15 20:13:06 +00:00
.. |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
2017-01-29 22:06:50 +00:00
.. _`advanced installation`: http://docs.mitmproxy.org/en/latest/install.html#advanced-installation
.. _virtualenv: https://virtualenv.pypa.io/
2016-02-15 18:43:55 +00:00
.. _.env: https://github.com/mitmproxy/mitmproxy/blob/master/.env
2017-01-29 22:06:50 +00:00
.. _autoenv: https://github.com/kennethreitz/autoenv
.. _`py.test`: http://pytest.org/
.. _tox: https://tox.readthedocs.io/
2016-02-15 18:43:55 +00:00
.. _Sphinx: http://sphinx-doc.org/
.. _sphinx-autobuild: https://pypi.python.org/pypi/sphinx-autobuild
2016-05-31 22:17:10 +00:00
.. _PEP8: https://www.python.org/dev/peps/pep-0008
2017-01-29 22:06:50 +00:00
.. _`Google Style Guide`: https://google.github.io/styleguide/pyguide.html