Konvertieren HTTP-Proxy, HTTPS-Proxy Twisted

Vor kurzem habe ich spielen, um mit dem HTTP-Proxy in verdreht. Nach viel Versuch und Irrtum ich glaube, dass ich endlich ich etwas arbeiten. Was ich will zu wissen, obwohl, ist, wie Sie, wenn es möglich ist, tun, erweitere ich diese proxy auch in der Lage sein zu handhaben HTTPS-Seiten? Hier ist, was ich habe, so weit:

from twisted.internet import reactor
from twisted.web import http
from twisted.web.proxy import Proxy, ProxyRequest, ProxyClientFactory, ProxyClient



class HTTPProxyClient(ProxyClient):
    def handleHeader(self, key, value):
        print "%s : %s" % (key, value)
        ProxyClient.handleHeader(self, key, value)

    def handleResponsePart(self, buffer):
        print buffer
        ProxyClient.handleResponsePart(self, buffer)

class HTTPProxyFactory(ProxyClientFactory):
    protocol = HTTPProxyClient

class HTTPProxyRequest(ProxyRequest):
    protocols = {'http' : HTTPProxyFactory}

    def process(self):
        print self.method
        for k,v in self.requestHeaders.getAllRawHeaders():
            print "%s : %s" % (k,v)
        print "\n \n"

        ProxyRequest.process(self)

class HTTPProxy(Proxy):

    requestFactory = HTTPProxyRequest


factory = http.HTTPFactory()
factory.protocol = HTTPProxy

reactor.listenSSL(8001, factory)
reactor.run()

Als dieser code veranschaulicht, für den sake des Beispiels für jetzt bin ich nur drucken, was auch immer, die durch die Verbindung. Ist es möglich zu behandeln HTTPS mit den gleichen Klassen? Wenn nicht, wie gehe ich bei der Umsetzung einer solchen Sache?

  • Wie wollen Sie behandeln das Thema server-Zertifikat Vertrauen?
  • MattH, arbeite ich mit einem weiteren Programmierer für dieses Projekt, und nach ihm hat er bereits herausgefunden, wie man die SSL-cert in twsited. Anscheinend können Sie ausführen: Reaktor.listenSSL(Hafen, Fabrik, cert) und Sie können hören, HTTPS-verbindungen. Obwohl, Sie sind kenntnisreich über das Thema würde ich auf jeden Fall zu schätzen jede Eingabe!
  • Wie Marcus Adams Punkte aus. Sie haben die Ausgabe des Zertifikats Vertrauen. Wenn ein webbrowser ist so konfiguriert, einen proxy für HTTPS, sendet er ein "connect host:port" und erwartet, übergeben zu werden,-durch den server. Der proxy eingebunden, sehen nur den verschlüsselten SSL-traffic, es ist die Vermittlung zwischen client und server. Wenn Sie wollte magisch tarnen sich als server zum client, dann würden Sie haben, um den client zu Vertrauen, Ihre Bescheinigung für die Zwecke des Zugriffs auf die website der client versucht, zu besuchen.
InformationsquelleAutor themaestro | 2010-06-25
Schreibe einen Kommentar