[Twisted-web] proxy and https
Vasil Vangelovski
vvangelovski at gmail.com
Wed Mar 19 06:57:20 EDT 2008
I'm writing a simple content filtering and access restriction proxy
using the twisted web proxy package. Here's some sample code:
#!/usr/bin/env python
from twisted.web import proxy, http
import sys
from twisted.python import log
PROXY_PORT = 80
class FilterProxyClient(proxy.ProxyClient):
def handleHeader(self, key, value):
#SOME FILTERING CODE
proxy.ProxyClient.handleHeader(self, key, value)
def handleResponsePart(self, data):
#SOME CONTENT RECOGNITION CODE
proxy.ProxyClient.handleResponsePart(self, data)
def handleResponseEnd(self):
proxy.ProxyClient.handleResponseEnd(self)
class FilterProxyFactory(proxy.ProxyClientFactory):
def buildProtocol(self, addr):
client = proxy.ProxyClientFactory.buildProtocol(self, addr)
# upgrade proxy.proxyClient object to AdpusherProxyClient
client.__class__ = FilterProxyClient
return client
class FilterProxyRequest(proxy.ProxyRequest):
protocols = {'http': AdpusherProxyFactory}
def __init__(self,*args):
proxy.ProxyRequest.__init__(self, *args)
def process(self):
#SOME FILTERING CODE
proxy.ProxyRequest.process(self)
class FilterProxy(proxy.Proxy):
def __init__(self):
proxy.Proxy.__init__(self)
def requestFactory(self, *args):
return FilterProxyRequest( *args)
class FilterProxyFactory(http.HTTPFactory):
def __init__(self):
http.HTTPFactory.__init__(self)
def buildProtocol(self, addr):
protocol = FilterProxy()
return protocol
if __name__ == "__main__":
from twisted.internet import reactor
prox = FilterProxyFactory()
reactor.listenTCP(PROXY_PORT, prox)
reactor.run( )
I'd like to know if there is a way I can set it up so that it also
handles https traffic but doesn't do anythin with the content, just so
that https traffic passes trough it.
More information about the Twisted-web
mailing list