I found answer to my own question:<br><br><span style="font-family: courier new,monospace;">class NoVerifyClientContextFactory:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    &quot;&quot;&quot;A context factory for SSL clients.&quot;&quot;&quot;</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    isClient = 1</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    method = SSL.SSLv3_METHOD</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    def getContext(self):</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        def x(*args):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            return True</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        ctx=SSL.Context(self.method)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        #print dir(ctx)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        ctx.set_verify(SSL.VERIFY_NONE,x)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        return ctx</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">def getPage(url, contextFactory=None, *args, **kwargs):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    scheme, host, port, path = _parse(url)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    factory = HTTPClientFactory(url, *args, **kwargs)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    if 1: # use a proxy</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        host, port = &#39;localhost&#39;, 8080</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        factory.path = url</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    if scheme == &#39;https&#39;:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        from twisted.internet import ssl</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        if contextFactory is None:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            contextFactory = NoVerifyClientContextFactory()</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        reactor.connectSSL(host, port, factory, contextFactory)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    else:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        reactor.connectTCP(host, port, factory)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    return factory.deferred</span><br style="font-family: courier new,monospace;"><br clear="all">--<br>Konrads Smelkovs<br>Applied IT sorcery.<br>
<br><br><div class="gmail_quote">On Thu, Jul 30, 2009 at 10:15 PM, Konrads Smelkovs <span dir="ltr">&lt;<a href="mailto:konrads@smelkovs.com">konrads@smelkovs.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br><br>I am writing some scraper scripts and need to pass them through an intercepting proxy. getPage does not support a proxy argument and this code I found on internet won&#39;t work with SSL proxy (stalls indefinitely):<br>

<br><span style="font-family: courier new,monospace;">def getPage(url, contextFactory=None, *args, **kwargs):</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    scheme, host, port, path = _parse(url)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    factory = HTTPClientFactory(url, *args, **kwargs)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    if 0: # use a proxy</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">        host, port = &#39;localhost&#39;, 8080</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        factory.path = url</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    if scheme == &#39;https&#39;:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        from twisted.internet import ssl</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">        if contextFactory is None:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">            contextFactory = ssl.ClientContextFactory()</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">        reactor.connectSSL(host, port, factory, contextFactory)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    else:</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">        reactor.connectTCP(host, port, factory)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    return factory.deferred</span><br>

<br>Plain http proxying works. My guess is that there is an issue with self-signed or otherwise invalid certificate the http proxy supplies. Any clues?<br><font color="#888888"><br>--<br>Konrads Smelkovs<br>Applied IT sorcery.<br>

</font></blockquote></div><br>