2016-12-21 8 views
1

おはよう、API(Python)を使用したmitmproxyロードスクリプト

私は大きなアプリケーションにmitmproxyを実装しようとしています。 そのためには、コードラインではなくインラインスクリプトと呼ばれるものをコマンドライン経由で読み込む必要があります。私はドキュメンテーションでそれに関する有用な情報を見つけることができませんでした。

私はmitmproxyバージョン0.17とPython 2.7を使用しています。

新しいバージョンがありますが、コード例を使用していないことがわかりました。

これは私が持っている基本コードです:

from mitmproxy import controller, proxy 
from mitmproxy.proxy.server import ProxyServer 


class ProxyMaster(controller.Master): 
    def __init__(self, server): 
     controller.Master.__init__(self, server) 

    def run(self): 
     try: 
      return controller.Master.run(self) 
     except KeyboardInterrupt: 
      self.shutdown() 

    def handle_request(self, flow): 
     flow.reply() 

    def handle_response(self, flow): 
     flow.reply() 


config = proxy.ProxyConfig(port=8080) 
server = ProxyServer(config) 
m = ProxyMaster(server) 
m.run() 

は、どのように私は、インラインスクリプトを使用して、このプロキシを実行するだろうか?

ありがとうございます。

答えて

0

私は本当に醜い回避策を考え出しました。

controller.Masterを使用する代わりに、flow.FlowMasterをcontroller.Master libとして使用する必要がありましたが、インラインスクリプトを処理できないようです。

何らかの理由でファイルをロードしても機能しなかった場合は、すぐにトリガーされますが、一致するフックは実行されません。代わりに、私はあなたがhandle_responseで見ることができるようにマッチング機能を搭載しています、動作していないフック使用の

(試す/以外が不足していると、スレッドは役に立つかもしれません)、それをやっについて

from mitmproxy import flow, proxy 
from mitmproxy.proxy.server import ProxyServer 
import imp 


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

    def handle_request(self, flow): 
     flow.reply() 

    def handle_response(self, flow): 
     for inline_script in self.scripts: 
      script_file = imp.load_source("response", inline_script.filename) 
      script_file.response(self, flow) 

     flow.reply() 


proxy_config = proxy.ProxyConfig(port=8080) 
server = ProxyServer(proxy_config) 
state = flow.State() 
m = ProxyMaster(server, state) 

m.load_script("upsidedowninternet.py") 
m.load_script("add_header.py") 

m.run() 

任意のアイデア正しい方法が評価されます。

関連する問題