Python 从公司防火墙后面使用urllib2打开网站-11004 getaddrinfo失败

Python 从公司防火墙后面使用urllib2打开网站-11004 getaddrinfo失败,python,urllib2,firewall,Python,Urllib2,Firewall,我正试图通过以下方式从公司防火墙后面访问网站:- password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() password_mgr.add_password(None, url, username, password) auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr) opener = urllib2.build_opener(auth_handler) urllib2.

我正试图通过以下方式从公司防火墙后面访问网站:-

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler) 
urllib2.install_opener(opener) 
conn = urllib2.urlopen('http://python.org')
获取错误

URLError: <urlopen error [Errno 11004] getaddrinfo failed>
URLError:
我尝试过使用不同的处理程序(也尝试过以稍微不同的方式使用ProxyHandler),但似乎不起作用


关于错误原因的任何线索,以及提供凭证并使其工作的任何不同方式

如果您正在使用代理,并且该代理具有用户名和密码(许多公司代理都有),则需要使用urllib2设置代理处理程序

  proxy_url = 'http://' + proxy_user + ':' + proxy_password + '@' + proxy_ip
  proxy_support = urllib2.ProxyHandler({"http":proxy_url})
  opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
  urllib2.install_opener(opener)

HTTPBasicAuthHandler用于为您要访问的站点提供凭据,而不是通过代理。上面的代码片段可能会对您有所帮助。

在Windows上,我注意到python使用
IE Internet选项->LAN设置。
因此,即使我们使用
urllib2
安装opener并指定
代理url
,它也会继续使用IE设置

最后,当我导出一个系统变量时,它工作得很好:

http_proxy=http://userid:pswd@proxyurl.com:port

我已经尝试过了,但它给出了Http 401作为错误。我怀疑我的公司代理是NTLM,上述方法可能不够。请尝试使用此链接中的建议,如果这些方法和普通urllib2都不起作用,那么请向bugs.python.org提交一份报告(如果尚未出现)。我猜,它需要处理。python-ntlm没有帮助-给出了相同的getaddinfo错误。我会试试pycurl。非常感谢你的指点。代理需要什么样的身份验证?如果它需要
代理身份验证:NTLM
,那么很抱歉,它不可能与Python一起工作。请叫我哑巴,但在哪里导出,如何导出?你是在命令行上运行的吗?如果是这样,我假设使用
set