From 7de3507f9a3f75a890a946e1c6bd50950c527245 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Tue, 20 Dec 2016 17:30:35 +0100 Subject: [PATCH 1/2] docs: add mitmweb stub --- docs/index.rst | 1 + docs/mitmweb.rst | 16 ++++++++++++++++ docs/screenshots/mitmweb.png | Bin 0 -> 62415 bytes 3 files changed, 17 insertions(+) create mode 100644 docs/mitmweb.rst create mode 100644 docs/screenshots/mitmweb.png diff --git a/docs/index.rst b/docs/index.rst index cd32a1f6..a40a5f62 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,6 +17,7 @@ mitmproxy mitmdump + mitmweb config .. toctree:: diff --git a/docs/mitmweb.rst b/docs/mitmweb.rst new file mode 100644 index 00000000..e761fdbc --- /dev/null +++ b/docs/mitmweb.rst @@ -0,0 +1,16 @@ +.. _mitmweb: +.. program:: mitmweb + +mitmweb +======= + +**mitmweb** is mitmproxy's web-based user interface that allows interactive examination and modification of HTTP traffic. Like mitmproxy, it differs from mitmdump in that all flows are kept in memory, which means that it's intended for taking and manipulating +small-ish samples. + +.. warning:: + + Mitmweb is currently in beta. We consider it stable for all features currently exposed in the UI, but it still misses a lot of mitmproxy's features. + + +.. image:: screenshots/mitmweb.png + diff --git a/docs/screenshots/mitmweb.png b/docs/screenshots/mitmweb.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0cc9258a2430b48227d7b17ecedaae6e94bba6 GIT binary patch literal 62415 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

kO?Pl7qqx+NoZT))He!Kpie z;(coIf0`c_6pp667c-fxUX(&_c=vk;|NFd3GIDi~@ZNIr3>hea*_FkRz!piuCsON3 zesYYXo^H1LeN0k8vJOwpR2B~=-Cne Date: Tue, 20 Dec 2016 17:34:35 +0100 Subject: [PATCH 2/2] update installation page We emphasize the binary installation because that is usually the simplest method to install mitmproxy on all major platforms. --- docs/install.rst | 159 +++++++++++++++++++++++++---------------------- 1 file changed, 84 insertions(+), 75 deletions(-) diff --git a/docs/install.rst b/docs/install.rst index 1fe09aca..70b52731 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -3,117 +3,125 @@ Installation ============ -.. _install-ubuntu: +Please follow the steps for your operating system. -Installation On Ubuntu ----------------------- - -Ubuntu comes with Python but we need to install pip, python-dev and several libraries. -This was tested on a fully patched installation of Ubuntu 16.04. - -.. code:: bash - - sudo apt-get install python3-pip python3-dev libffi-dev libssl-dev libtiff5-dev libjpeg8-dev zlib1g-dev libwebp-dev - sudo pip3 install mitmproxy # or pip install --user mitmproxy - -On older Ubuntu versions, e.g., **12.04** and **14.04**, you may need to install a newer version of Python. -mitmproxy requires Python 3.5 or higher. Please take a look at pyenv_. -Make sure to have an up-to-date version of pip by running ``pip3 install -U pip``. - -Once installation is complete you can run :ref:`mitmproxy` or :ref:`mitmdump` from a terminal. - - -.. _install-fedora: - -Installation On Fedora ----------------------- - -Fedora comes with Python but we need to install pip, python-dev and several libraries. -This was tested on a fully patched installation of Fedora 24. - -.. code:: bash - - sudo dnf install make gcc redhat-rpm-config python3-pip python3-devel libffi-devel openssl-devel libtiff-devel libjpeg-devel zlib-devel libwebp-devel openjpeg2-devel - sudo pip3 install mitmproxy # or pip install --user mitmproxy - -Make sure to have an up-to-date version of pip by running ``pip3 install -U pip``. - -Once installation is complete you can run :ref:`mitmproxy` or :ref:`mitmdump` from a terminal. - - - -.. _install-arch: - -Installation On Arch Linux --------------------------- - -mitmproxy has been added into the [community] repository. Use pacman to install it: - ->>> sudo pacman -S mitmproxy - -Once installation is complete you can run :ref:`mitmproxy` or :ref:`mitmdump` from a terminal. +Once installation is complete, you can run :ref:`mitmproxy`, :ref:`mitmdump` or :ref:`mitmweb` from a terminal. .. _install-macos: -Installation On macOS ------------------------- +Installation on macOS +--------------------- You can use Homebrew to install everything: + .. code:: bash brew install mitmproxy Or you can download the pre-built binary packages from `mitmproxy.org`_. -Once installation is complete you can run :ref:`mitmproxy` or :ref:`mitmdump` from a terminal. - - .. _install-windows: -Installation On Windows +Installation on Windows ----------------------- +The recommended way to install mitmproxy on Windows is to use the installer provided at `mitmproxy.org`_. After installation, you'll find shortcuts for :ref:`mitmweb` (the web-based interface) and :ref:`mitmdump` in the start menu. Both executables are added to your PATH and can be invoked from the command line. + .. note:: - Please note that mitmdump is the only component of mitmproxy that is supported on Windows at - the moment. + mitmproxy's console interface is not supported on Windows, but you can use mitmweb (the web-based interface) and mitmdump. - **There is no interactive user interface on Windows.** +.. _install-linux: + +Installation on Linux +--------------------- + +The recommended way to run mitmproxy on Linux is to use the pre-built binaries provided at `mitmproxy.org`_. + +Our pre-built binaries provide you with the latest version of mitmproxy, a self-contained Python 3.5 environment and a recent version of OpenSSL that supports HTTP/2. Of course, you can also install mitmproxy from source if you prefer that (see :ref:`install-advanced`). + +.. _install-advanced: + +Advanced Installation +--------------------- + +.. _install-docker: + +Docker Images +^^^^^^^^^^^^^ + +You can also use the official mitmproxy images from `DockerHub`_. +That being said, our portable binaries are just as easy to install and even easier to use. 😊 -First, install the latest version of Python 3.5 from the `Python website`_. -If you already have an older version of Python 3.5 installed, make sure to install pip_ -(pip is included in Python by default). If pip aborts with an error, make sure you are using the current version of pip. -.. code:: powershell +.. _install-arch: - python -m pip install --upgrade pip +Installation on Arch Linux +^^^^^^^^^^^^^^^^^^^^^^^^^^ -Next, add Python and the Python Scripts directory to your **PATH** variable. -You can do this easily by running the following in powershell: +mitmproxy has been added into the [community] repository. Use pacman to install it: -.. code:: powershell +>>> sudo pacman -S mitmproxy - [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27;C:\Python27\Scripts", "User") + + +.. _install-source-ubuntu: + +Installation from Source on Ubuntu +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Ubuntu comes with Python but we need to install pip3, python3-dev and several libraries. +This was tested on a fully patched installation of Ubuntu 16.04. + +.. code:: bash + + sudo apt-get install python3-pip python3-dev libffi-dev libssl-dev libtiff5-dev libjpeg8-dev zlib1g-dev libwebp-dev + sudo pip3 install mitmproxy # or pip3 install --user mitmproxy + +On older Ubuntu versions, e.g., **12.04** and **14.04**, you may need to install a newer version of Python. +mitmproxy requires Python 3.5 or higher. Please take a look at pyenv_. +Make sure to have an up-to-date version of pip by running ``pip3 install -U pip``. + +.. _install-source-fedora: + +Installation from Source on Fedora +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Fedora comes with Python but we need to install pip3, python3-dev and several libraries. +This was tested on a fully patched installation of Fedora 24. + +.. code:: bash + + sudo dnf install make gcc redhat-rpm-config python3-pip python3-devel libffi-devel openssl-devel libtiff-devel libjpeg-devel zlib-devel libwebp-devel openjpeg2-devel + sudo pip3 install mitmproxy # or pip3 install --user mitmproxy + +Make sure to have an up-to-date version of pip by running ``pip3 install -U pip``. + +.. _install-source-windows: + +🐱💻 Installation from Source on Windows +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + mitmproxy's console interface is not supported on Windows, but you can use mitmweb (the web-based interface) and mitmdump. + +First, install the latest version of Python 3.5 or later from the `Python website`_. During installation, make sure to select `Add Python to PATH`. Now, you can install mitmproxy by running .. code:: powershell - pip install mitmproxy + pip3 install mitmproxy -Once the installation is complete, you can run :ref:`mitmdump` from a command prompt. +.. _install-dev-version: - -.. _install-source: - -Installation From Source ------------------------- +Latest Development Version +^^^^^^^^^^^^^^^^^^^^^^^^^^ If you would like to install mitmproxy directly from the master branch on GitHub or would like to -get set up to contribute to the project, install the dependencies as you would for a regular -mitmproxy installation. Then see the Hacking_ section of the README on GitHub. +get set up to contribute to the project, install the dependencies as you would for a regular installation from source. Then see the Hacking_ section of the README on GitHub. You can check your system information by running: ``mitmproxy --sysinfo`` @@ -122,3 +130,4 @@ You can check your system information by running: ``mitmproxy --sysinfo`` .. _`Python website`: https://www.python.org/downloads/windows/ .. _pip: https://pip.pypa.io/en/latest/installing.html .. _pyenv: https://github.com/yyuu/pyenv +.. _DockerHub: https://hub.docker.com/r/mitmproxy/mitmproxy/