2017-04-27 2 views
4

J'ai finalement mis à jour ma version de Python de 2.7 à 3.6.1 et avec cela a également mis à jour mon mitmproxy de l'ancienne et bonne v0.16 à la version la plus récente.Quel est l'équivalent de libmproxy dans la nouvelle mitmproxy?

je travaillais avec libmproxy afin de manipuler les requêtes qui ont été détournés par le proxy avec cette syntaxe:

from netlib.http import decoded 
from libmproxy import controller, proxy 
from libmproxy.proxy.server import ProxyServer 

class StickyMaster(controller.Master): 
    def __init__(self, server): 
     controller.Master.__init__(self, server) 
     self.stickyhosts = {} 

    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): 
     with decoded(flow.response): 
      <DO SOMETHING> 
     flow.reply() 

config = proxy.ProxyConfig(port=8081) 
server = ProxyServer(config) 
m = StickyMaster(server) 
m.run() 

Je compris que dans la nouvelle version de la syntaxe est totalement différente et je ne peux pas trouver une documentation pertinente avec un exemple de comment faire cela correctement.

Quelqu'un peut-il partager avec moi un exemple d'un code de base tel que je l'ai écrit ci-dessus de la dernière version?

Répondre

1

Nous avons déconseillé l'approche "libmproxy subclassing" avec une implémentation plus flexible des addons. En fait, la plupart des fonctionnalités de base de mitmproxy sont implémentées en tant qu'addons eux-mêmes. Donc, la réponse courte est: Ecrire un addon!

Nous fournissons une introduction au développement d'addons au http://docs.mitmproxy.org/en/stable/scripting/overview.html. Pour des exemples de code, vous devriez également jeter un oeil à https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple.