在Python中使用mitmproxy绕过代理并使用HTTP GET请求从服务器捕获网页数据

在Python中使用mitmproxy绕过代理并使用HTTP GET请求从服务器捕获网页数据,python,webpage,mitmproxy,Python,Webpage,Mitmproxy,我需要使用mitmproxy绕过代理,并使用GET请求捕获web数据。 我正在使用Windows7、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 n

我需要使用mitmproxy绕过代理,并使用GET请求捕获web数据。 我正在使用Windows7、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


关于如何压缩和如何纠正类型错误的任何帮助

检查浏览器中的代理设置。错误消息“。。。交通没有通过mitmproxy,应该会消失。在Firefox中,进入选项|高级|网络|设置。另见