Passwort geschützter Inhalt einer URL auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PauleJS
User
Beiträge: 34
Registriert: Freitag 22. Oktober 2010, 14:58

Hallo,

ich will den Inhalt einer passwort-geschützten URL auslesen. Nutze Python 2.7 mit Windows 7.

bisher nutze ich die form-based authentication, die cookies verwendet

Code: Alles auswählen

import urllib2
import urllib

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)

params = urllib.urlencode(dict(username='paul', password='panzer'))
f = opener.open('http://website.de, params)
data = f.read()
f.close()
Fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\pfad_datei", line 18, in <module>
    f = opener.open('http://website.de', params)
  File "C:\Python27\lib\urllib2.py", line 397, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 518, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 401: Authorization Required

URL, Nutzername und Passwort stimmen! Wo ist der Fehler?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Du sendest nur ein POST Request mit den Zugangsdaten. Es handelt sich bei der Seite aber um ne HTTP Authentifizierung.

Wie du sowas machst siehst du z.B hier: Der Unterschied wird dir, denke ich, schon im Browser auffallen, wenn du die Seite öffnest.
PauleJS
User
Beiträge: 34
Registriert: Freitag 22. Oktober 2010, 14:58

danke für den link, war selber gerade darauf gestoßen!

bei dem beispiel wie in der dokumentation bekomme ich aber immer noch die selbe fehlermeldung! -> HTTP Error 401: Authorization Required

Code: Alles auswählen

import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm='Produkte',
                          uri='link feed',
                          user='paul',
                          passwd='panzer')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
urllib2.urlopen('link feed') # -> HTTP Error 401: Authorization Required
bei dem link handelt es sich um ein feed! ist das noch relevant?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Nein ist ja alles HTTP Protokol. Dann wird es kein Basic Auth sein sondern ein Digest.

Was der Server von dir will steht auch in den Antwort Headern im Key "WWW-Authenticate".
Antworten