Seite 1 von 1

(gelöst)Mit Urllib(2) eine Page über einen Proxy öffen?

Verfasst: Donnerstag 25. Juni 2009, 09:18
von Schaf220
Hallo Community,
Ich habe ein ganz blödes Problem, ich möchte ein Programm schreiben was bestimmte Informationen von einem Web-Interface eines Druckers ausließt. Soweit so gut, leider muss ich erst über einen Proxy gehen. Das lässt sich nicht vermeiden, weil das für eine Firma ist. Jetzt habe ich eine Lösung mit Urllib gefunden:

Code: Alles auswählen

import urllib
proxies = {'http': 'http://11.11.11.11:8028/'}
opener = urllib.FancyURLopener(proxies)
f = opener.open("http://12.34.5.67")
f.read()
Leider funktioniert das immer noch nicht. Er hängt sich auf und gibt nichts aus. Der Konsole bleibt schwarz, es sieht aus als wenn er arbeitet.

Wenn ich statt der zu öffnenden IP-Adresse "www.google.de" eingebe kommt dieser Fehler:

IOError: ('http error', 407, 'Proxy Authentication Required', <httplib.HTTPMessage instance at 0x00B75AF8>)

Wie kann man das Problem am besten lösen?
Vielen Dank schon mal im Voraus=)


MfG
Schaf220

Verfasst: Donnerstag 25. Juni 2009, 09:38
von lunar
Der Proxy verlangt eine Anmeldung. Wie du die Anmeldedaten an den Proxy übergibst, steht in der Dokumentation von urllib2. Dort gibt es auch Beispiele.

Verfasst: Donnerstag 25. Juni 2009, 10:00
von Schaf220
Ich habe gerade gemerkt das ich mit Urllib auf dem falschen weg bin ich muss eigentlich nicht übers Internet, also auch nicht über den Proxy gehen, auf den Drucker zugreifen. Er ist ja im ínternen Netz angeschlossen. Welches Modul benötigt man da jetzt um auf Ihn zugreifen zu können?

Verfasst: Donnerstag 25. Juni 2009, 10:12
von Rebecca
Ob internes Netz oder externes Netzt ist doch schnuppe.

Code: Alles auswählen

urlib2.urlopen("http://12.34.5.67").read()

Verfasst: Donnerstag 25. Juni 2009, 10:19
von mkesper
Ich vermute, du hängst hinter einem Proxy, der eine NTLM-Authentifizierung verlangt. Programme, die das nicht beherrschen, koppele ich per ntlmaps an.
Firmen-Proxy -> ntlmaps -> Python-Programm(proxy: localhost:5865)

Verfasst: Donnerstag 25. Juni 2009, 10:23
von Schaf220
hmm ja kann man urllib2 irgentwie sagen, das er den proxy nicht verwenden soll?
ich habe die IP des Druckers schon zu den Ausnahmen des Proxys hinzugefügt..., klappt aber nur wenn ich den Proxy ganz abschalte :(

Verfasst: Donnerstag 25. Juni 2009, 12:26
von mkesper
Ah, genau andersrum, logisch! :)
Ich hätte vermutet, dass man einfach proxies="" übergeben kann, aber anscheinend muss man den ProxyHandler verwenden.
EDIT: Noch nicht getestet, war Ergebnis der Googlesuche "urllib2 no proxy".