"Jack" <[EMAIL PROTECTED]> writes:

> I'm trying to use a proxy server with urllib2.
> So I have managed to get it to work by setting the environment
> variable:
> export HTTP_PROXY=127.0.0.1:8081
>
> But I wanted to set it from the code. However, this does not set the proxy:
>     httpproxy = '127.0.0.1:3129'
>     proxy_support = urllib2.ProxyHandler({"http":"http://"; + httpproxy})
>     opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
>     urllib2.install_opener(opener)

Works for me.
How do you know that the proxy is not set?

> I'm using it from a web.py URL handler file, not sure if it matters.

I don't think so.

> I have another question though. It seems that using either of the
> methods above, the proxy will be global. What if I want to use
> a proxy with one site, but not with another site? Or even use a
> proxy for some URLs but not others? The proxy having to be global
> is really not convenient. Is there any way to do per-fetch proxy? 

Try this:

<code>
import urllib2

def getopener(proxy=None):
    opener = urllib2.build_opener(urllib2.HTTPHandler)
    if proxy:
        proxy_support = urllib2.ProxyHandler({"http": "http://"; + proxy})
        opener.add_handler(proxy_support)
    return opener

def fetchurl(url, opener):
    f = opener.open(url)
    data = f.read()
    f.close()
    return data

print fetchurl('http://www.python.org', getopener('127.0.0.1:8081'))
</code>

HTH,
Rob
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to