diff options
| author | Henrik Nordstrom <henrik@henriknordstrom.net> | 2010-11-17 14:11:56 +0100 |
|---|---|---|
| committer | Henrik Nordstrom <henrik@henriknordstrom.net> | 2011-02-10 02:59:51 +0100 |
| commit | d11dd742d8593087959b6f1e0d9cc1f956dee03e (patch) | |
| tree | 9ac076b44004556cfc83682999a4774639759868 /mitmrecord | |
| parent | 4bae297fbbe294a962116f574ca1b8ae434e0886 (diff) | |
| download | mitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.tar.gz mitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.tar.bz2 mitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.zip | |
Simple record & playback functionality
Diffstat (limited to 'mitmrecord')
| -rwxr-xr-x | mitmrecord | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/mitmrecord b/mitmrecord new file mode 100755 index 00000000..0fcb91c2 --- /dev/null +++ b/mitmrecord @@ -0,0 +1,93 @@ +#!/usr/bin/env python + +# Copyright (C) 2010 Henrik Nordstrom <henrik@henriknordstrom.net> +# +# Based on mitmproxy and mitmdump +# Copyright (C) 2010 Aldo Cortesi +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +import sys, os.path, os, errno +from libmproxy import proxy, controller, record, utils +from libmproxy import VERSION +from optparse import OptionParser, OptionGroup + +def mkdir_p(path): + try: + os.makedirs(path) + except OSError as exc: + if exc.errno == errno.EEXIST: + pass + else: + raise + +if __name__ == '__main__': + parser = OptionParser( + usage = "%prog [options] output", + version="%%prog %s"%VERSION, + ) + + parser.add_option( + "-c", "--cert", action="store", + type = "str", dest="cert", default="~/.mitmproxy/cert.pem", + help = "SSL certificate file." + ) + + parser.add_option( + "-p", "--port", action="store", + type = "int", dest="port", default=8080, + help = "Port." + ) + + parser.add_option( + "-s", "--store", action="store", + type = "str", dest="cache", default="cache/", + help = "Session store location" + ) + + parser.add_option( + "-C", "--cookies", action="append", + type = "str", dest="cookies", default=[], + help = "Persistent client cookies already set or generated in client" + ) + + parser.add_option("-q", "--quiet", + action="store_true", dest="quiet", + help="Quiet.") + parser.add_option("-v", "--verbose", + action="count", dest="verbose", default=1, + help="Increase verbosity. Can be passed multiple times.") + + options, args = parser.parse_args() + + if options.quiet: + options.verbose = 0 + + certpath = os.path.expanduser(options.cert) + options.cache = os.path.expanduser(options.cache) + + if not os.path.exists(certpath): + print >> sys.stderr, "Creating bogus certificate at %s"%options.cert + utils.make_bogus_cert(certpath) + + proxy.config = proxy.Config( + certpath + ) + server = proxy.ProxyServer(options.port) + mkdir_p(options.cache) + if os.path.exists(options.cache + "/index.txt"): + print >> sys.stderr, "ERROR: data already recorded in %s"%options.cache + sys.exit(1) + m = record.RecordMaster(server, options) + m.run() |
