[Twisted-Python] Running a HTTP client connection through a SOCKS proxy

nnp version5 at gmail.com
Wed Jul 23 10:46:57 EDT 2008


Hey,

I'm working on an app at the moment, part of which needs to grab a
page from a website and parse the results. It will have to work in
environments where connections have to be routed through a SOCKSv4
proxy but I can't find any way to specify a proxy using any of the
Twisted classes. Is this possible? I assumed it was seeing as how it
is a fairly common situation but the documentation/API haven't
provided any useful information.

Cheers,
nnp

Btw, my code currently looks like this :

from twisted.web.client import HTTPClientFactory
from twisted.internet import ssl
from twisted.internet import reactor
from twisted.web import client

class BugGetter:

    def __init__(self, url):
        '''
        This class attempts to verify that a bug ID is a legitimate
        '''

        self.url = url
        self.contextFactory = ssl.ClientContextFactory()
        self.scheme, self.host, self.port, path = client._parse(url)

    def getPage(self, bugId):
        self.bugUrl = ''.join([self.url, bugId])
        self.hcf = HTTPClientFactory(self.bugUrl)
        self.hcf.deferred.addCallback(self.parsePage)
        self.hcf.deferred.addErrback(self.errorCallback)

        if scheme == 'https:':
            reactor.connectSSL(self.host, self.port, self.hcf,
self.contextFactory)
        else:
            reactor.connectTCP(self.host, self.port, self.hcf)

        reactor.run()

    def parsePage(self):
        print self.hcf.status
        print self.hcf.message
        reactor.stop()

    def errorCallback(self, failure):
        print failure.getErrorMessage()
        reactor.stop()

bz = Bugzilla('https://bugs.example.org/show_bug.cgi?id=')
bz.getPage('9999')

-- 
http://www.smashthestack.org
http://www.unprotectedhex.com




More information about the Twisted-Python mailing list