¿Cuál es la mejor manera de especificar un proxy con nombre de usuario y contraseña para una conexión http en python?¿Cómo especificar un proxy autenticado para una conexión http python?
Respuesta
Esto funciona para mí:
import urllib2
proxy = urllib2.ProxyHandler({'http': 'http://
username:[email protected]:proxyport'})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
urllib2.install_opener(opener)
conn = urllib2.urlopen('http://python.org')
return_str = conn.read()
La mejor manera de ir a través de un proxy que requiere autenticación está usando urllib2 para construir un abridor de URL personalizada, a continuación, utilizarlo para hacer todas las solicitudes que desea ir a través el proxy. Tenga en cuenta, en particular, que probablemente no desee insertar la contraseña del proxy en la url o en el código fuente de Python (a menos que sea un truco rápido).
import urllib2
def get_proxy_opener(proxyurl, proxyuser, proxypass, proxyscheme="http"):
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, proxyurl, proxyuser, proxypass)
proxy_handler = urllib2.ProxyHandler({proxyscheme: proxyurl})
proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)
return urllib2.build_opener(proxy_handler, proxy_auth_handler)
if __name__ == "__main__":
import sys
if len(sys.argv) > 4:
url_opener = get_proxy_opener(*sys.argv[1:4])
for url in sys.argv[4:]:
print url_opener.open(url).headers
else:
print "Usage:", sys.argv[0], "proxy user pass fetchurls..."
En un programa más complejo, se puede separar estos componentes en los casos adecuados (por ejemplo, usando un único gestor de contraseñas para el tiempo de vida de la aplicación). La documentación de Python tiene more examples on how to do complex things with urllib2 que también podría serle útil.
O si lo desea instalarlo, por lo que siempre se utiliza con urllib2.urlopen (lo que no es necesario tener una referencia a la apertura de alrededor):
import urllib2
url = 'www.proxyurl.com'
username = 'user'
password = 'pass'
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
# None, with the "WithDefaultRealm" password manager means
# that the user/pass will be used for any realm (where
# there isn't a more specific match).
password_mgr.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
print urllib2.urlopen("http://www.example.com/folder/page.html").read()
Configuración de un entorno var llamado http_proxy así: http: // usuario: contraseña @ proxy_url: puerto
Ahora, esa es una respuesta limpia. –
Pero realmente no responde la respuesta. – Bouncner
@Bouncner Respondiendo a la pregunta, no a la respuesta. Y tampoco está respondiendo. –
Aquí está el uso del método urllib
import urllib.request
# set up authentication info
authinfo = urllib.request.HTTPBasicAuthHandler()
proxy_support = urllib.request.ProxyHandler({"http" : "http://ahad-haam:3128"})
# build a new opener that adds authentication and caching FTP handlers
opener = urllib.request.build_opener(proxy_support, authinfo,
urllib.request.CacheFTPHandler)
# install it
urllib.request.install_opener(opener)
f = urllib.request.urlopen('http://www.python.org/')
"""
Utilice esta:
import requests
proxies = {"http":"http://username:[email protected]_ip:proxy_port"}
r = requests.get("http://www.example.com/", proxies=proxies)
print r.content
creo que es mucho más simple que el uso de urllib
. No entiendo por qué a la gente le encanta usar urllib
tanto.
- 1. Proxy HTTP autenticado con Java
- 2. curl mediante proxy autenticado y recurso HTTP autenticado
- 3. ¿Cómo configuro Emacs detrás de un proxy HTTP autenticado?
- 4. Cómo establecer un proxy HTTP en Python 2.7?
- 5. Cómo configurar un proxy HTTP para svn
- 6. Delphi proxy transparente para una conexión TCP
- 7. HTTP POST autenticado con carga útil XML usando Python urllib2
- 8. svn sobre proxy HTTP
- 9. ¿Cómo utiliza un Proxy HTTP el protocolo HTTP? un Proxy RFC?
- 10. Cómo usar un proxy HTTP en java
- 11. ¿CONECTA la solicitud a un proxy HTTP directo a través de una conexión SSL?
- 12. Cómo establecer el proxy HTTP en un applet
- 13. Cómo especificar un código de error HTTP?
- 14. Reintentando una conexión HTTP
- 15. ¿Mantiene viva una conexión http en C#?
- 16. Python-Requests cerrar la conexión HTTP
- 17. almacenamiento en caché de proxy con el descanso autenticado solicita
- 18. Cómo especificar las solicitudes de python http put body?
- 19. rtsp en http sobre un proxy
- 20. Servidor proxy HTTP
- 21. ¿Cómo hacer una solicitud HTTP a través de un (tor) socks proxy usando python?
- 22. Intellij Community no puede usar el proxy http para Maven
- 23. Creando conexión HTTP robusta para usuarios ficticios con WinINET
- 24. Configurar un proxy HTTP para insertar un encabezado
- 25. PHP HTTP Proxy Server
- 26. ¿Cómo escribir un servidor proxy en Python?
- 27. ¿Cómo probar una conexión persistente en un servidor HTTP?
- 28. Configurar un proxy HTTP en una aplicación web de Spring
- 29. Cómo falsificar/proxy una clase en Python
- 30. iPhone Simulator - set HTTP proxy
urllib2.HTTPHandler se agrega de forma predeterminada (ver urllib2 doc). Parece que es redundante agregarlo al abrir el abridor. – HongboZhu
¿Y por qué usas urllib2.HTTPBasicAuthHandler() si no hay autenticación involucrada? – HongboZhu
Normalmente, los proxies están en formato IP. Eso es lo mismo que proxyurl, ¿verdad? – User