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