Seite 1 von 1

Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 11:02
von tlosert
Hallo zusammen,

ich möchte, da es die Fritz-Box nicht immer hinbekommt, per Python Programm meine IP-Adresse beim DynDNS-Dienst DDNSS aktualisieren lassen.
Dies geschieht mit dem Aufruf eines Links im Browser (bspw.:

Code: Alles auswählen

https://www.ddnss.de/upd.php?user=xxx&pwd=yyy&host=zzz.ddnss.de
).
Soweit so gut.
Ich habe es mit folgendem Programm (ist ein Ausschnitt) versucht bzw. angefangen:

Code: Alles auswählen

import os
import webbrowser

url = 'https://www.ddnss.de/upd.php?user=xxx&pwd=yyy&host=zzz.ddnss.de'
webbrowser.open(url)
time.sleep(10)
os.system("taskkill /im chrome.exe /f") #funktioniert aber nicht oder ist eine doofe Lösung
Das ganze wird nur ausgeführt, wenn sich meine IP-Adresse geändert hat, das habe ich bereits implementiert!
Nach Aufruf der URL startet der Browser, der dann wieder nach einer Zeit (10 Sek.) geschlossen werden soll, da dies in der shell (crontab) ausgeführt wird und sonst jeden Tag mindestens ein weiteren Tab eröffnet!

Danke für eure Hilfe,
Grüße Thomas

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 11:05
von sparrow
Warum startest du überhaupt einen Browser und rufst die URL nicht aus Python auf? In der Regel verwendet man dafür das externe "requests" Modul.

Edit: Typo des Moduls korrigiert :roll:

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 11:26
von tlosert
sparrow hat geschrieben: Montag 7. Juni 2021, 11:05 Warum startest du überhaupt einen Browser und rufst die URL nicht aus Python auf? In der Regel verwendet man dafür das externe "reqeusts" Modul.
Hi,
das war mir nicht eingefallen (Greenhorne mit Python 😁), werde Mal danach Ausschau halten.
Danke erstmal, Grüße Thomas

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 12:31
von Sirius3
Hier reicht eigentlich das eingebaute urllib:

Code: Alles auswählen

import urllib

URL = 'https://www.ddnss.de/upd.php?user=xxx&pwd=yyy&host=zzz.ddnss.de'

response = urllib.request.urlopen(URL)

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 13:28
von tlosert
Ich danke euch.
D.h. eigentlich ist egal, ob ich

Code: Alles auswählen

response = urllib.request.urlopen(URL)
oder

Code: Alles auswählen

response = request.get(URL)
nutze, oder?

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Montag 7. Juni 2021, 20:56
von snafu
Wenn beides den selben Effekt hat, dann macht es wohl keinen Unterschied. ;)

requests kann halt mehr bequeme Sachen. Zum Beispiel musst du die Login-Daten dann nicht in die URL kodieren, sondern könntest sie auch als Wörterbuch mitgeben. Oder wenn du nach dem Login noch weitere Befehle absitzen willst, dann hält es quasi die Session für dich offen. Sowas ist ohne requests auch machbar, aber erfordert mehr Code und Hirnschmalz. Man kann requests aufgrund seiner Popularität einfach immer nutzen bzw beim Anwender zur Abhängigkeit machen, muss man aber nicht.

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Mittwoch 9. Juni 2021, 09:30
von __blackjack__
`requests` wird IMHO schon ab dem Punkt interessant wo im Benutzernamen oder Passwort (wahrscheinlicher) Zeichen auftauchen, die man nicht einfach so 1:1 in eine URL schreiben kann.

Keines der Beispiele prüft übrigens bisher den HTTP-Status der Antwort.

Code: Alles auswählen

#!/usr/bin/env python3
import requests

DYNDNS_UPDATE_URL = "https://www.ddnss.de/upd.php"
USERNAME = "xxx"
PASSWORD = "yyy"
HOSTNAME = "zzz.ddnss.de"


def main():
    response = requests.get(
        DYNDNS_UPDATE_URL,
        params={"user": USERNAME, "pwd": PASSWORD, "host": HOSTNAME},
    )
    response.raise_for_status()


if __name__ == "__main__":
    main()

Re: Webbrowser nach 10 Sekunden wieder schließen lassen

Verfasst: Mittwoch 9. Juni 2021, 11:31
von tlosert
Ich danke euch werde das alles gleich mal ausprobieren.