我怎样才能使用urllib2将validation的代理exception应用到开jar器?

当在窗口python上使用urllib2(也许urllib)似乎神奇地拿起适用于InternetExplorer的身份validation代理设置。 但是,它似乎没有检查和处理高级设置“例外”列表。

有没有办法让我来处理例外列表? 或者,忽略IE代理设置,并应用我自己的代理开瓶器来解决这个问题?

我之前玩过创build一个代理开瓶器,但不能得到它的工作。 这是我设法挖掘出来的,但我仍然不知道如何/在哪里应用任何例外,我甚至不知道这是否正确:

proxy_info = { 'host':'myproxy.com', 'user':Username, 'pass':Password, 'port':1080 } http_str = "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info authInfo = urllib2.HTTPBasicAuthHandler() authInfo.add_password() proxy_dict = {'http':http_str} proxyHandler = urllib2.ProxyHandler(proxy_dict) # apply the handler to an opener proxy_opener = urllib2.build_opener(proxyHandler, urllib2.HTTPHandler) urllib2.install_opener(proxy_opener) 

默认情况下, urllib2从环境变量中获取代理设置,这就是为什么它使用IE设置。 这非常方便,因为您不需要自己设置身份验证。

你不能像你想要的那样应用异常,最简单的方法是使用两个opener并根据域是否在你的例外列表中决定使用哪一个。

当你想要使用代理的时候使用默认的opener ,而当你不需要的时候使用代理的代理。

 >>> no_proxy = urllib2.ProxyHandler({}) >>> opener = urllib2.build_opener(no_proxy) >>> urllib2.install_opener(opener) 

从这里 。

编辑:

以下是我该怎么做:

 exclusion_list = ['http://www.google.com/', 'http://localhost/'] no_proxy = urllib2.ProxyHandler({}) no_proxy_opener = urllib2.build_opener(no_proxy) default_proxy_opener = urllib2.build_opener() url = 'http://www.example.com/' if url in exclusion_list: opener = no_proxy_opener else: opener = default_proxy_opener page = opener.open(url) print page 

你最大的问题是将URL与排除列表相匹配,但这是一个全新的问题。