Frage

Ich verwende urllib.urlopen mit einigen http-Proxies und manchmal (wahrscheinlich, wenn sie genehmigungspflichtig) ich die folgende Meldung erhalten, in die Konsole ausgegeben:

Enter username for Private Proxy Access (country) at xxx.xxx.xxx.xxx:xxxx

Wie kann ich eine Ausnahme auf so etwas geschieht erhöhen?

Hier ist das Beispiel:

from urllib import urlopen

p = '64.79.209.238:36867'
print urlopen('http://google.com', proxies={'http': 'http://'+p})

Falls die genannten Proxy stirbt zu früh, hier sind einige Ersatz 64.79.197.36:43444, 64.79.209.203:34968, 64.79.197.36:43444, 209.59.207.197:3438

War es hilfreich?

Lösung

Sie müssen überschreiben FancyURLopener.prompt_user_passwd Methode:

class AuthorizationRequired(Exception):

    pass


class MyURLOpener(urllib.FancyURLopener):

    def prompt_user_passwd(self, host, realm):
        raise AuthorizationRequired()


opener = MyURLOpener(proxies={'http': 'http://'+p})
fp = opener.open(url)

Andere Tipps

urllib.urlencode nicht immer die Nachricht drucken. Das Verfahren trifft nie das Netz an erster Stelle. Ihr Problem ist woanders.

Ich denke, man einen anderen Dämon im Hintergrund laufen lassen, das druckt die Nachricht.

Bitte geben Sie die genauen reproduzierbaren Code und Nachricht. Beispiel für Proxy, dass Trigger die Nachricht auch gut sein würde.

angepasst I Denis' Code ein wenig zu diesem:

import urllib
urllib.FancyURLopener.prompt_user_passwd = lambda *a, **k: (None, None)

Es wird Kennwort deaktivieren Sie die Aufforderung insgesamt

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