1

我需要使用 mitmproxy 绕过代理并使用 GET 请求捕获 Web 数据。我正在使用 Windows 7 和 python 2.7 和 mitmproxy python

我尝试了以下代码:

#!/usr/bin/env python
"""
    This example shows how to build a proxy based on mitmproxy's Flow
    primitives.

    Note that request and response messages are not automatically replied to,
    so we need to implement handlers to do this.
"""
import sys,os
import os
import cStringIO
import threading
import thread
import exceptions
import gc
from libmproxy import proxy, flow
from libmproxy.proxy import config
from libmproxy.proxy import server
from libmproxy.proxy.server import ProxyServer
from libmproxy.platform.windows import TransparentProxy


class MyMaster(flow.FlowMaster):
    def run(self):
        try:
            flow.FlowMaster.run(self)
        except KeyboardInterrupt:
            self.shutdown()

    def responseheaders(context, flow):
        ct = flow.response.headers["Content-Type"]
        if ct and len(ct) > 0 and ct[0].startswith("application/"):
            flow.stream = True
            print "streaming"

    def handle_request(self, r):
        print r
        f = flow.FlowMaster.handle_request(self, r)
        if f:
            def run():
                r.reply()
                return f
            threading.Thread(target=run).start()
        else:
            return null

    def handle_response(self, r):
        f = flow.FlowMaster.handle_response(self, r)
        if f:
            def run():
                r.reply()
                return f
            threading.Thread(target=run).start()
        else:
            return null


config = proxy.config.ProxyConfig(
    #ca_file=os.path.expanduser("~\.mitmproxy\mitmproxy-ca.pem")
    confdir=os.path.realpath('.\\conf')#, mode="transparent"
)

gc.enable()

gc.set_threshold(250, 10, 10)

print gc.get_threshold()

state = flow.State()
server = ProxyServer(config, 8080)
#server = TransparentProxy()
m = MyMaster(server, state)

TransparentProxy().setup()

#proxifier = TransparentProxy()

#proxifier.start()

print "got here"

m.run();

但是遇到了一些错误:

confdir=os.path.realpath(r'C:\Users\rnive\Documents\certificates')      ``#,mode="transparent"
TypeError: __init__() got an unexpected keyword argument 'confdir'

有关纠正此错误的任何帮助。通过双击 mitmproxy-ca-cert.p12 文件导入 mitmproxy CA 并在 chrome 浏览器中加载 mitm.it 并得到如下内容:

如果您可以看到这一点,则说明流量没有通过 mitmproxy。在此处输入图像描述

有关如何配置以及如何纠正 TypeError 的任何帮助!

4

1 回答 1

0

检查浏览器中的代理设置。错误消息“...流量未通过 mitmproxy”应该消失。在 Firefox 中,转到选项|高级|网络|设置。另请参见此处

于 2015-04-18T19:40:59.950 回答