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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

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
Zuletzt geändert von Schaf220 am Samstag 30. Januar 2010, 16:36, insgesamt 1-mal geändert.
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.
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

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?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ob internes Netz oder externes Netzt ist doch schnuppe.

Code: Alles auswählen

urlib2.urlopen("http://12.34.5.67").read()
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

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)
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

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 :(
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

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".
Antworten