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

War es hilfreich?

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:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top