Ist in Python 2.6.1 Unterstützung Proxy urllib2 über https
Frage
urllib2 in Python 2.6.1 Unterstützung Proxy über https?
Ich habe folgende auf http://www.voidspace.org gefunden .uk / python / articles / urllib2.shtml :
Hinweis
Zur Zeit ist urllib2 nicht unterstützt Abrufen von Orten durch eine https Proxy. Dies kann ein Problem sein.
Ich versuche, Login, um Web-Site automatisieren und das Herunterladen von Dokument, ich habe gültiges Benutzername / Passwort.
proxy_info = {
'host':"axxx", # commented out the real data
'port':"1234" # commented out the real data
}
proxy_handler = urllib2.ProxyHandler(
{"http" : "http://%(host)s:%(port)s" % proxy_info})
opener = urllib2.build_opener(proxy_handler,
urllib2.HTTPHandler(debuglevel=1),urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
fullurl = 'https://correct.url.to.login.page.com/user=a&pswd=b' # example
req1 = urllib2.Request(url=fullurl, headers=headers)
response = urllib2.urlopen(req1)
Ich habe es für ähnliche Seiten arbeiten aber nicht mit HTTPS und ich vermute, dass es nicht durch Proxy bekommt - es ist nur in der gleichen Art und Weise stecken bleibt, wie wenn ich nicht Proxy angegeben haben. Ich muss über Proxy gehen.
Ich brauche zu authentifizieren, aber unter Verwendung der Standardauthentifizierung nicht, wird urllib2 Authentifizierung herauszufinden, wann über https-Website gehen (I liefern Benutzername / Passwort-Website via URL)?
EDIT: Nö, ich getestet mit
proxies = {
"http" : "http://%(host)s:%(port)s" % proxy_info,
"https" : "https://%(host)s:%(port)s" % proxy_info
}
proxy_handler = urllib2.ProxyHandler(proxies)
Und ich bekomme Fehler:
urllib2.URLError: urlopen Fehler [8 Errno] _ssl.c: 480: EOF aufgetreten in Verletzung von Protokoll
Lösung
Ich bin nicht sicher, ob Michael Foord der Artikel, die Sie zitieren, um Python aktualisiert 2.6.1 - warum nicht, es zu versuchen? Statt ProxyHandler zu sagen, dass der Proxy für http nur gut ist, wie Sie jetzt gerade sind, registrieren sie für https auch (natürlich sollte man es in eine Variable formatiert nur einmal, bevor Sie ProxyHandler aufrufen und verwenden Sie einfach immer wieder, dass Variable in der dict): das kann oder auch nicht, aber, du bist nicht einmal Versuch , und das ist sicher , nicht zu arbeiten -)
!Andere Tipps
Fixed in Python 2.6.3 und einige andere Zweige:
- _bugs.python.org/issue1424152 (ersetzen _ mit http ...)
-
http://www.python.org/download /releases/2.6.3/NEWS.txt
Issue # 1424152: Fix für httplib, urllib2 die Unterstützung von SSL während der Arbeit durch Proxy. Original-Patch von Christopher Li, Änderungen von Senthil Kumaran.
Incase jemand anderes dieses Problem haben in der Zukunft Ich mag würde darauf hinweisen, dass es unterstützt https jetzt Proxying, stellen Sie sicher, dass der Proxy unterstützt zu oder laufen Sie Gefahr, in einen Fehler ausgeführt wird, der die Python-Bibliothek in eine Endlosschleife versetzt (das mir passiert ist).
Sehen Sie den Unittest in der Python-Quelle, die https Proxying Unterstützung für weitere Informationen testen: http: //svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203