Quelle est la meilleure façon de spécifier un proxy avec nom d'utilisateur et mot de passe pour une connexion http en python?Comment spécifier un proxy authentifié pour une connexion http python?
Répondre
Cela fonctionne pour moi:
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 meilleure façon de passer par un proxy qui requiert une authentification utilise urllib2 pour construire un ouvre-url personnalisé, puis en utilisant que pour faire toutes les demandes que vous souhaitez passer par le proxy. Notez en particulier, que vous ne voulez probablement pas intégrer le mot de passe du proxy dans le code source url ou python (à moins que ce soit juste un hack rapide).
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..."
Dans un programme plus complexe, vous pouvez séparer ces composants comme approprié (par exemple, en utilisant un seul gestionnaire de mot de passe pour la durée de vie de l'application). La documentation python a more examples on how to do complex things with urllib2 que vous pourriez également trouver utile.
Ou si vous voulez l'installer, de sorte qu'il est toujours utilisé avec urllib2.urlopen (vous n'êtes pas obligé de conserver une référence à l'ouvreur autour):
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()
Définition d'un environnement var nommé http_proxy comme ceci: http: // nom d'utilisateur: mot de passe @ proxy_url: port
Maintenant, c'est une réponse propre. –
Mais pas vraiment répondre à la réponse. – Bouncner
@Bouncner Répondre à la question, pas la réponse. Et ça ne répond pas non plus. –
est ici l'utilisation de la méthode 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/')
"""
Utilisez ceci:
import requests
proxies = {"http":"http://username:[email protected]_ip:proxy_port"}
r = requests.get("http://www.example.com/", proxies=proxies)
print r.content
Je pense qu'il est beaucoup plus simple que d'utiliser urllib
. Je ne comprends pas pourquoi les gens aiment tellement utiliser urllib
.
- 1. Comment configurer un proxy HTTP pour svn
- 2. Proxy transparent Delphi pour une connexion TCP
- 3. svn over HTTP proxy
- 4. Quel est le meilleur moyen de spécifier un proxy avec un nom d'utilisateur et un mot de passe pour une connexion ** https ** en python?
- 5. Maintenir une connexion http active en C#?
- 6. Configurer un proxy HTTP pour insérer un en-tête
- 7. Comment utiliser un VCS derrière un proxy HTTP?
- 8. Modifier des images avec un proxy Http
- 9. Emacs derrière le proxy HTTP
- 10. Comment obtenir le contrôle de connexion asp.net pour authentifier automatiquement un utilisateur précédemment authentifié?
- 11. Comment puis-je écrire un simple proxy HTTP en Perl?
- 12. Equivalent Python de dbi/DBD :: Accès par proxy? (Perl DBI/DBD :: Proxy pour Python)
- 13. Serveur proxy HTTP en C#
- 14. Comment configurer une connexion HTTP dans une classe spéciale?
- 15. Python Proxy Script
- 16. Bibliothèque de proxy http Python basée sur libevent ou une technologie comparable?
- 17. Ruby and Rails - proxy oauth et http
- 18. iPhone Simulator - définir le proxy HTTP
- 19. python multitraitement proxy
- 20. Meilleur proxy http compatible avec la liste blanche pour Windows?
- 21. Tunnel HTTP sortant sur une connexion socket entrante
- 22. Kerberos de Java - Obtenir un objet pour l'utilisateur actuellement authentifié
- 23. connexion HTTP permanente vs connexion socket TCP
- 24. Comment définir proxy dans Windows avec Python?
- 25. Comment se connecter à SQL Server via un serveur proxy
- 26. Connexion HTTP Android
- 27. Castle Windsor: Comment récupérer un proxy pour une instance spécifique?
- 28. Simple proxy Http utilisant Sockets: Questions
- 29. Annulation d'une connexion d'authentification HTTP?
- 30. comment puis-je spécifier une configuration de proxy en utilisant Microsoft.XMLHTTP?
urllib2.HTTPHandler est ajouté par défaut (voir doc urllib2). Il semble qu'il soit redondant de l'ajouter lors de l'ouverture du bâtiment. – HongboZhu
Et pourquoi utilisez-vous urllib2.HTTPBasicAuthHandler() si aucune authentification n'est en cause? – HongboZhu
Normalement les proxies sont dans un format IP. C'est la même chose que proxyurl, non? – User