Seite 1 von 2
Anmeldung Website Server Growatt
Verfasst: Sonntag 29. Januar 2023, 11:29
von Chrissili
Hallo ich würde mich gerne bei dem Server von growatt.com anmelden aber irgendwie werden meine Anmeldedaten nicht übernommen... Was mache ich falsch? Mein Python-Code ist:
import requests
import webbrowser
url = "
https://server.growatt.com/login"
login = {'val_loginAccount.sameLogin.userNameVal': 'xxx',
'val_loginPwd.sameLogin.pasdVal': 'yyy'}
print("Original URL:", url)
r = requests.post(url, data=login)
print("\nNew URL", r.url)
print("Status Code:", r.status_code)
print("History:", r.history)
print("\nRedirection:")
for i in r.history:
print(i.status_code, i.url)
# Open r in the browser to check if I logged in
new = 2 # open in a new tab, if possible
webbrowser.open(r.url, new=new)
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 29. Januar 2023, 12:27
von Sirius3
Eine Webseite benutzt normalerweise Cookies, um zu wissen ob sich jemand eingeloggt hat oder nicht. Dein requests-Aufruf hat aber nichts mit dem anschließenden webbrowser Aufruf zu tun. Der Browser weiß also nichts davon dass du dich eingeloggt hast.
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 29. Januar 2023, 19:40
von Chrissili
Hallo Sirius, was müsste ich dann am Script ändern? Kannst du mir da bitte weiterhelfen? Import cookielib?
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 29. Januar 2023, 20:11
von __deets__
Kann er nicht. Weil das so ohne weiteres nicht geht. An den Browser Cookie Store ranzukommen ist eine ganz andere Aufgabe. Wenn du sowas willst, benutz stattdessen Greasmonkey oder Selenium, letzteres dann ohne Tabula Rasa zu machen (was man sonst will, um eben Cookies und andere Seiteneffekte zu kontrollieren).
Re: Anmeldung Website Server Growatt
Verfasst: Donnerstag 23. Februar 2023, 20:53
von Chrissili
Sirius3 hat geschrieben: Sonntag 29. Januar 2023, 12:27
Eine Webseite benutzt normalerweise Cookies, um zu wissen ob sich jemand eingeloggt hat oder nicht. Dein requests-Aufruf hat aber nichts mit dem anschließenden webbrowser Aufruf zu tun. Der Browser weiß also nichts davon dass du dich eingeloggt hast.
Hallo Sirius3, kann man das nicht ohne Webbrowser lösen?
Was ist denn die einfachste Methode sich auf einer HTML Seite einzuloggen und dann einfach die Daten zu sehen? Sowas muss doch auch schon millionenfach zB für Facebook erstellt worden sein? Hab auch mal was von import cookiejar gelesen...
Re: Anmeldung Website Server Growatt
Verfasst: Donnerstag 23. Februar 2023, 22:12
von sparrow
@Chrissili: _Du_ öffnest doch in deinem Script den Webbrowser?! Wenn du das nicht möchtest, dann tu das doch nicht? Und Webbrowser sind dafür da, Webinhalte anzuzeigen. Wenn du also Daten sehen willst, sind die doch das Mittel der Wahl?
Was hast du denn _eigentlich_ vor?
Re: Anmeldung Website Server Growatt
Verfasst: Donnerstag 23. Februar 2023, 22:25
von __deets__
Mit requests bekommst du doch schon die Daten der Webseite. Die kannst du dann verarbeiten. Der Browser wird nur bei JavaScript-Einsatz nötig.
Re: Anmeldung Website Server Growatt
Verfasst: Freitag 24. Februar 2023, 15:43
von Chrissili
Ich will letztlich nur Werte von der url = "
https://server.growatt.com/login" auslesen und dafür muss ich "nur" meinen Account eingeben
login = {'val_loginAccount.sameLogin.userNameVal': 'xxx',
'val_loginPwd.sameLogin.pasdVal': 'yyy'} und auf der anschließenden Seite stehen verschiedene Kennzahlen, die ich aus dem Quelltext natürlich ziehen könnte.
Aber wie komme ich da am einfachsten oder elegantesten dran?
Re: Anmeldung Website Server Growatt
Verfasst: Freitag 24. Februar 2023, 15:45
von Chrissili
Webbrowser bräuchte ich eigentlich nicht
Re: Anmeldung Website Server Growatt
Verfasst: Freitag 24. Februar 2023, 15:57
von sparrow
Entweder baust du die entsprechenden Aufrufe mit requests komplett nach oder du steuerst mit Selenium einen Browser fern.
Letzteres kann nötig sein, falls Daten per Javascript in die Seite eingefügt werden und sich die entsprechenden Aufrufe nicht abbilden lassen.
Re: Anmeldung Website Server Growatt
Verfasst: Freitag 24. Februar 2023, 16:21
von Sirius3
Du mußt halt schauen, was in `r.content` drinsteht, und ob Du darin die Daten findest, die Du brauchst.
Oder ob Du nach dem Login noch eine weitere Seite abfragen mußt.
Diese Arbeit kann Dir hier niemand abnehmen, weil es sehr unwahrscheinlich ist, dass hier noch jemand dieses growatt kennt.
(Naja, wahrscheinlich das json das
https://server.growatt.com/selectPlant/getPlantTotal liefert).
Re: Anmeldung Website Server Growatt
Verfasst: Samstag 25. Februar 2023, 23:19
von Chrissili
Also ich verstehe es leider immer noch nicht, habe es mit Selenium probiert:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("
https://server.growatt.com/login")
username = browser.find_element_by_id("val_loginAccount")
password = browser.find_element_by_id("val_loginPwd")
submit = browser.find_element_by_id("loginBtn")
username.send_keys("MeinUsername")
password.send_keys("MeinPasswort")
submit.click()
Aber es passiert nichts und es wird auch nichts in die Felder geschrieben
Re: Anmeldung Website Server Growatt
Verfasst: Samstag 25. Februar 2023, 23:23
von Chrissili
Und bei requests:
import requests
pload = {'val_loginAccount':'MeinUsername','val_loginPwd':'MeinPwd'}
r = requests.post("
https://Server.growatt.com/login", pload)
print(r.text)
Kommt nur {"result":-2,"msg":....}
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 03:23
von grubenfox
Chrissili hat geschrieben: Samstag 25. Februar 2023, 23:19
username = browser.find_element_by_id("val_loginAccount")
password = browser.find_element_by_id("val_loginPwd")
submit = browser.find_element_by_id("loginBtn")
Findet er da denn überhaupt irgendwelche bzw. die korrekten Felder?
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 07:10
von Chrissili
Leider eben nicht oder wie meinst du das?
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 09:04
von sparrow
@Chrissli: Selenium steuert den Browser fern. Wenn der in ein Feld schreiben soll, dann muss das auch genau so im DOM der Webseite enthalten sein. Sind sie das?
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 15:12
von grubenfox
grubenfox hat geschrieben: Sonntag 26. Februar 2023, 03:23
Chrissili hat geschrieben: Samstag 25. Februar 2023, 23:19
password = browser.find_element_by_id("val_loginPwd")
Findet er da denn überhaupt irgendwelche bzw. die korrekten Felder?
val_loginPwd findet sich in dem Quelltext der Webseite. Einmal als id von einem Input-Feld. Hätte mich auch extrem gewundert wenn
browser.find_element_by_id da nichts finden würde und
password dann z.b. None enthält.
Aber dann gibt es da noch 8 andere Fundstellen. Alles in irgendwelchem Javascript.

Vielleicht klemmt da was.... Darf/kann der Browser unter der Steuerung von Selenium denn auch den JavaScript-code ausführen? Würde bei mir vermutlich zuerst am installierten "NoScript" scheitern.
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 15:17
von sparrow
@grubenfox: Würde es nicht. Da starten keine Plugins. Es sei denn, man konfiguriert das explizit. Die Instanz des Browsers, die Selenium öffnet, hat nichts mit der der Instanz zu tun, die der Benutzer zum Browsen verwendet.
Chrissili: Wie gesagt, ich würde erst einmal schauen, ob die Felder, die du befüllen willst, überhaupt (schon) in dem DOM der Webseite enthalten sind. Und zumidst den Button wirst du auf die Weise nicht finden, denn der hat keine ID.
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 17:34
von grubenfox
sparrow hat geschrieben: Sonntag 26. Februar 2023, 15:17
Es sei denn, man konfiguriert das explizit.
Eben drum.... wenn Chrissili da nichts (ver)konfiguriert hat, dann sollte das also kein Problem sein.
sparrow hat geschrieben: Sonntag 26. Februar 2023, 15:17
Chrissili: Wie gesagt, ich würde erst einmal schauen, ob die Felder, die du befüllen willst, überhaupt (schon) in dem DOM der Webseite enthalten sind. Und zumidst den Button wirst du auf die Weise nicht finden, denn der hat keine ID.
Aha! Die zwei Mal wo ich mir jetzt den Quelltext der Webseite angeschaut hatte, da hatte ich nur nach den IDs der Felder, die Chrissili im Pythoncode angegeben hatte, geschaut. Aber wenn das Programm den Button nicht findet und der "Klick" auf das Login im Nirvana verschwindet....
Re: Anmeldung Website Server Growatt
Verfasst: Sonntag 26. Februar 2023, 18:03
von Chrissili
Ne ich habe nichts korrigiert, aber es wundert mich eben dass nichts befüllt wird... ist dann der Button falsch definiert oder wo liegt mein Fehler?