
Hallo zusammen, ich würde gerne einen Webserver (Heizung) mit Python auslesen, bis jetzt mit HTTPDigestAuth so: url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/1' r = requests.get(url, auth=HTTPDigestAuth('user', 'passwort'), verify=False, stream=True) inhalt = r.text Funktioniert. Nun möchte ich ich aber die weiteren Punkte ohne übergabe der Benutzerdaten auslesen, quasi so: url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/2' r = requests.get(url, verify=False, stream=True) inhalt = r.text Wie stelle ich es an, das der Server sich an den vorrigen Login erinnert? Heiko

Guten Morgen, Am 13.03.24 um 22:15 schrieb Heiko Neubauer über python-de:
Hallo zusammen,
ich würde gerne einen Webserver (Heizung) mit Python auslesen, bis jetzt mit HTTPDigestAuth so:
url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/1' r = requests.get(url, auth=HTTPDigestAuth('user', 'passwort'), verify=False, stream=True) inhalt = r.text Funktioniert.
Nun möchte ich ich aber die weiteren Punkte ohne übergabe der Benutzerdaten auslesen, quasi so:
url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/2' r = requests.get(url, verify=False, stream=True) inhalt = r.text
Wie stelle ich es an, das der Server sich an den vorrigen Login erinnert?
meistens wird doch mit einem Cookie gearbeitet. In der requests Lib gibt es das Keksglas (cookiejar). Hier ist ggf. ein Beispiel. https://scrapfly.io/blog/save-and-load-cookies-in-requests-python/ Hope it helps, Maurice -- Maurice Kemmann +49 175 721 7020 maurice@kemmann.de Messenger: Signal Social Media: LinkedIn & Xing

ich würde gerne einen Webserver (Heizung) mit Python auslesen, bis jetzt mit HTTPDigestAuth so:
url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/1' r = requests.get(url, auth=HTTPDigestAuth('user', 'passwort'), verify=False, stream=True) inhalt = r.text Funktioniert.
Nun möchte ich ich aber die weiteren Punkte ohne übergabe der Benutzerdaten auslesen, quasi so:
url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/2' r = requests.get(url, verify=False, stream=True) inhalt = r.text
Wie stelle ich es an, das der Server sich an den vorrigen Login erinnert?
Am einfachsten geht das über das "Session" Objekt, siehe https://docs.python-requests.org/en/latest/user/advanced/#session-objects Ungefähr so: url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/1' with requests.Session() as sess: sess.auth = ... r = sess.get(url) Die Methoden .get()/.post() usw. werden also nicht am Request-Objekt, sondern am Session-Objekt aufgerufen. Requests kümmert sich im Hintergrund um das Speichern der Auth-Cookies. Freundliche Grüße, Hardy

Am 15.03.2024 um 10:02 schrieb Hardy Erlinger:
Am einfachsten geht das über das "Session" Objekt, siehe https://docs.python-requests.org/en/latest/user/advanced/#session-objects
Ungefähr so:
url='http://xxx.xxx.xxx.xxx/api/1.0/datapoint/1' with requests.Session() as sess: sess.auth = ... r = sess.get(url)
Die Methoden .get()/.post() usw. werden also nicht am Request-Objekt, sondern am Session-Objekt aufgerufen. Requests kümmert sich im Hintergrund um das Speichern der Auth-Cookies.
Ich mag einfache Lösungen, nur, ist es einfach genug für mich. Ich werde das versuchen und wieder melden. Heiko
participants (3)
-
Hardy Erlinger
-
Heiko Neubauer
-
Maurice Kemmann