diff --git a/README.mkd b/README.mkd
index b15b57a97..99a567d85 100644
--- a/README.mkd
+++ b/README.mkd
@@ -32,17 +32,13 @@ Requirements
* [Python](http://www.python.org) 2.7.x.
* [netlib](http://pypi.python.org/pypi/netlib), version matching mitmproxy.
-* [PyOpenSSL](http://pypi.python.org/pypi/pyOpenSSL) 0.13 or newer.
-* [pyasn1](http://pypi.python.org/pypi/pyasn1) 0.1.2 or newer.
-* [urwid](http://excess.org/urwid/) version 1.1 or newer.
-* [PIL](http://www.pythonware.com/products/pil/) version 1.1 or newer.
-* [lxml](http://lxml.de/) version 2.3 or newer.
-* [flask](http://flask.pocoo.org/) version 0.9 or newer.
+* Third-party packages listed in [setup.py](https://github.com/mitmproxy/mitmproxy/blob/master/setup.py)
-Optional, for extended content decoding:
+Optional packages for extended content decoding:
* [PyAMF](http://www.pyamf.org/) version 0.6.1 or newer.
* [protobuf](https://code.google.com/p/protobuf/) version 2.5.0 or newer.
+* [cssutils](http://cthedot.de/cssutils/) version 1.0 or newer.
__mitmproxy__ is tested and developed on OSX, Linux and OpenBSD. Windows is not
officially supported at the moment.
@@ -57,7 +53,8 @@ The following components are needed if you plan to hack on mitmproxy:
framework and requires [pathod](http://pathod.org) and [flask](http://flask.pocoo.org/).
* Rendering the documentation requires [countershape](http://github.com/cortesi/countershape).
-For convenience, all dependencies save countershape, can be installed from pypi to a virtualenv with 'pip install -r requirements.txt'.
+For convenience, all dependencies save countershape can be installed from pypi
+to a virtualenv with 'pip install -r requirements.txt'.
Please ensure that all patches are accompanied by matching changes in the test
suite. The project maintains 100% test coverage.
diff --git a/doc-src/_nav.html b/doc-src/_nav.html
index 3b7c9e80c..b256f47f5 100644
--- a/doc-src/_nav.html
+++ b/doc-src/_nav.html
@@ -11,6 +11,7 @@
$!nav("anticache.html", this, state)!$
$!nav("clientreplay.html", this, state)!$
$!nav("filters.html", this, state)!$
+ $!nav("forwardproxy.html", this, state)!$
$!nav("proxyauth.html", this, state)!$
$!nav("replacements.html", this, state)!$
$!nav("serverreplay.html", this, state)!$
@@ -21,27 +22,27 @@
$!nav("ssl.html", this, state)!$
+ $!nav("certinstall/android.html", this, state)!$
$!nav("certinstall/firefox.html", this, state)!$
- $!nav("certinstall/osx.html", this, state)!$
- $!nav("certinstall/windows7.html", this, state)!$
$!nav("certinstall/ios.html", this, state)!$
$!nav("certinstall/ios-simulator.html", this, state)!$
- $!nav("certinstall/android.html", this, state)!$
+ $!nav("certinstall/osx.html", this, state)!$
+ $!nav("certinstall/windows7.html", this, state)!$
$!nav("transparent.html", this, state)!$
$!nav("transparent/linux.html", this, state)!$
$!nav("transparent/osx.html", this, state)!$
+
+ $!nav("scripting/inlinescripts.html", this, state)!$
+ $!nav("scripting/libmproxy.html", this, state)!$
+
$!nav("tutorials/30second.html", this, state)!$
$!nav("tutorials/gamecenter.html", this, state)!$
$!nav("tutorials/transparent-dhcp.html", this, state)!$
-
- $!nav("scripting/inlinescripts.html", this, state)!$
- $!nav("scripting/libmproxy.html", this, state)!$
-
$!nav("dev/testing.html", this, state)!$
diff --git a/doc-src/features/forwardproxy.html b/doc-src/features/forwardproxy.html
new file mode 100644
index 000000000..203520d51
--- /dev/null
+++ b/doc-src/features/forwardproxy.html
@@ -0,0 +1,16 @@
+
+In this mode, mitmproxy accepts proxy requests and unconditionally forwards all
+requests to a specified upstream server. This is in contrast to reverse proxy mode, in which
+mitmproxy forwards ordinary HTTP requests to an upstream server.
+
+
+
+
+ command-line | -F http[s]://hostname[:port] |
+
+
+ mitmproxy shortcut | F |
+
+
+
diff --git a/doc-src/features/index.py b/doc-src/features/index.py
index f7efc23ae..e15f3311c 100644
--- a/doc-src/features/index.py
+++ b/doc-src/features/index.py
@@ -4,6 +4,7 @@ pages = [
Page("anticache.html", "Anticache"),
Page("clientreplay.html", "Client-side replay"),
Page("filters.html", "Filter expressions"),
+ Page("forwardproxy.html", "Forward proxy mode"),
Page("setheaders.html", "Set Headers"),
Page("serverreplay.html", "Server-side replay"),
Page("sticky.html", "Sticky cookies and auth"),
diff --git a/doc-src/features/reverseproxy.html b/doc-src/features/reverseproxy.html
index 524df0838..d399cdc0c 100644
--- a/doc-src/features/reverseproxy.html
+++ b/doc-src/features/reverseproxy.html
@@ -1,9 +1,11 @@
-In reverse proxy mode, mitmproxy acts as a standard HTTP server and forwards
-all requests to the specified upstream server. Note that the displayed URL for
-flows in this mode will use the value of the __Host__ header field from the
-request, not the reverse proxy server.
+In reverse proxy mode, mitmproxy accepts standard HTTP requests and forwards
+them to the specified upstream server. This is in contrast to forward proxy mode, in which
+mitmproxy forwards HTTP proxy requests to an upstream server.
+Note that the displayed URL for flows in this mode will use the value of the
+__Host__ header field from the request, not the reverse proxy server.
diff --git a/requirements.txt b/requirements.txt
index cb27fd04c..e036fd1f1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,7 +4,7 @@ MarkupSafe>=0.18
Pillow>=2.3.0,<2.4
Werkzeug>=0.8.3
lxml>=3.2.1
-netlib>=0.9.2
+netlib>=0.10
nose>=1.3.0
mock>=1.0.1
pathod>=0.9.2