Skip to main content

WARC writing MITM HTTP/S proxy

Project description

Based on the excellent and simple pymiproxy by Nadeem Douba.


Warcprox runs on python 2.7 or 3.4+.

To install latest release run:

# apt-get install libffi-dev libssl-dev
pip install warcprox

You can also install the latest bleeding edge code:

pip install git+

Trusting the CA cert

For best results while browsing through warcprox, you need to add the CA cert as a trusted cert in your browser. If you don’t do that, you will get the warning when you visit each new site. But worse, any embedded https content on a different server will simply fail to load, because the browser will reject the certificate without telling you.


usage: warcprox [-h] [-p PORT] [-b ADDRESS] [-c CACERT]
                [--certs-dir CERTS_DIR] [-d DIRECTORY] [-z] [-n PREFIX]
                [-s SIZE] [--rollover-idle-time ROLLOVER_IDLE_TIME]
                [-g DIGEST_ALGORITHM] [--base32]
                [--method-filter HTTP_METHOD]
                [--stats-db-file STATS_DB_FILE] [-P PLAYBACK_PORT]
                [--playback-index-db-file PLAYBACK_INDEX_DB_FILE]
                [-j DEDUP_DB_FILE | --rethinkdb-servers RETHINKDB_SERVERS]
                [--cdxserver-dedup CDX_SERVER_URL]
                [--rethinkdb-db RETHINKDB_DB] [--rethinkdb-big-table]
                [--onion-tor-socks-proxy ONION_TOR_SOCKS_PROXY]
                [--plugin PLUGIN_CLASS] [--version] [-v] [--trace] [-q]

warcprox - WARC writing MITM HTTP/S proxy

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to listen on (default: 8000)
  -b ADDRESS, --address ADDRESS
                        address to listen on (default: localhost)
  -c CACERT, --cacert CACERT
                        CA certificate file; if file does not exist, it
                        will be created (default:
  --certs-dir CERTS_DIR
                        where to store and load generated certificates
                        (default: ./
                        where to write warcs (default: ./warcs)
  -z, --gzip            write gzip-compressed warc records
  -n PREFIX, --prefix PREFIX
                        WARC filename prefix (default: WARCPROX)
  -s SIZE, --size SIZE  WARC file rollover size threshold in bytes
                        (default: 1000000000)
  --rollover-idle-time ROLLOVER_IDLE_TIME
                        WARC file rollover idle time threshold in seconds
                        (so that Friday's last open WARC doesn't sit
                        there all weekend waiting for more data)
                        (default: None)
                        digest algorithm, one of sha1, sha384, sha512,
                        md5, sha224, sha256 (default: sha1)
  --base32              write digests in Base32 instead of hex
  --method-filter HTTP_METHOD
                        only record requests with the given http
                        method(s) (can be used more than once) (default:
  --stats-db-file STATS_DB_FILE
                        persistent statistics database file; empty string
                        or /dev/null disables statistics tracking
                        (default: ./warcprox.sqlite)
                        port to listen on for instant playback (default:
  --playback-index-db-file PLAYBACK_INDEX_DB_FILE
                        playback index database file (only used if
                        --playback-port is specified) (default:
  -j DEDUP_DB_FILE, --dedup-db-file DEDUP_DB_FILE
                        persistent deduplication database file; empty
                        string or /dev/null disables deduplication
                        (default: ./warcprox.sqlite)
  --cdxserver-dedup CDX_SERVER_URL
                        use a CDX server for deduplication
                        (default: None)
  --rethinkdb-servers RETHINKDB_SERVERS
                        rethinkdb servers, used for dedup and stats if
                        specified; e.g.
                        (default: None)
  --rethinkdb-db RETHINKDB_DB
                        rethinkdb database name (ignored unless
                        --rethinkdb-servers is specified) (default:
                        use a big rethinkdb table called "captures",
                        instead of a small table called "dedup"; table is
                        suitable for use as index for playback (ignored
                        unless --rethinkdb-servers is specified)
  --onion-tor-socks-proxy ONION_TOR_SOCKS_PROXY
                        host:port of tor socks proxy, used only to
                        connect to .onion sites (default: None)
  --plugin PLUGIN_CLASS
                        Qualified name of plugin class, e.g.
                        "mypkg.mymod.MyClass". May be used multiple times
                        to register multiple plugins. Plugin classes are
                        loaded from the regular python module search
                        path. They will be instantiated with no arguments
                        and must have a method `notify(self,
                        recorded_url, records)` which will be called for
                        each url, after warc records have been written.
                        (default: None)
  --version             show program's version number and exit
  -v, --verbose
  -q, --quiet


Warcprox is a derivative work of pymiproxy, which is GPL. Thus warcprox is also GPL.

  • Copyright (C) 2012 Cygnos Corporation
  • Copyright (C) 2013-2017 Internet Archive

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Release history Release notifications

History Node


History Node


This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
warcprox-2.3.tar.gz (43.0 kB) Copy SHA256 hash SHA256 Source None Dec 16, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page