abriendo sitios web usando urllib2 desde detrás del firewall corporativo – 11004 getaddrinfo falló

Estoy intentando acceder a un sitio web desde detrás del firewall corporativo utilizando a continuación:

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') 

Obteniendo error

 URLError:  

He intentado con diferentes manejadores (probé ProxyHandler también de forma ligeramente diferente), pero no parece funcionar.

¿Alguna pista sobre cuál podría ser la razón del error y las diferentes formas de proporcionar las credenciales y hacer que funcionen?

Si está utilizando Proxy y ese proxy tiene un nombre de usuario y una contraseña (que tienen muchos proxies corporativos), debe configurar el controlador de proxy con 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 se utiliza para proporcionar credenciales para el sitio al que va a acceder y no para pasar por el proxy. El fragmento de arriba podría ayudarte.

En Windows, observé que Python usa las IE Internet Options-> LAN Settings configuración de IE Internet Options-> LAN Settings . Entonces, incluso si usamos urllib2 para instalar el abridor y especificar el proxy_url , continuará usando la configuración de IE.

Finalmente funcionó bien, cuando exporté una variable del sistema:

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