Seite 2 von 2

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 18:24
von __deets__
Bei requests kann das nicht klappen, weil da das request nunmal komplett anders aussieht. Das musst du dir schon im Browser im Network-Tab anschauen, was da wirklich passiert, nicht einfach wild Werte uebernehmen.

{
"userName": "aaaaa",
"password": "aaaaa",
"lang": "en",
"loginTime": "2023-02-26+18:18:50",
"noRecord": "true",
"type": "1"
}

Wobei das jetzt die copy & paste-Darstellung ist, das ist natuerlich form-encodiert eigentlich

userName=aaaaa&password=aaaaa&lang=en&loginTime=2023-02-26+18%3A18%3A50&noRecord=true&type=1

Keine Ahnung, was dann passiert, weil ich keinen Account habe.

Und dein login-button-selector ist auch Quatsch, auch da gilt wieder: man muss schon sorgfaeltig damit umgehen. So sieht der Code aus:

Code: Alles auswählen

<button class="hasColorBtn loginB">Sign In</button>
Nix mit ID, wie du mit browser.find_element_by_id("loginBtn") unterstellst.

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 18:32
von Chrissili
Ja was kann ich nun tun? Ist es aus eurer Sicht aussichtslos oder wie kann ich mich herantasten?

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 18:50
von __deets__
Na du kannst richtig programmieren. Also die tatsaechlichen Formularwerte zum einloggen per requests benutzen, oder eben richtig mit Selenium arbeiten. Nicht Werte/Namen erraten.

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 18:57
von Chrissili
Aber waren die nicht korrekt aus dem Quellcode ermittelt?

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 19:15
von __deets__
Hast du meinen Beitrag gelesen? Da beziehe ich mich doch darauf, Quellcode aus der Seite inklusive.

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 19:41
von Sirius3
Man muß den Code korrekt lesen. Sollte eigentlich ganz einfach sein:

Code: Alles auswählen

import requests
import datetime

session = requests.Session()
response = session.post("https://Server.growatt.com/login", data={
    "userName": "username",
    "password": "password",
    "lang": "en",
    "loginTime": f"{datetime.datetime.now():%Y-%m-%d+%H:%M:%S}",
    "noRecord": "true",
    "type": "1",
})
print(response.json())
response = session.post("https://server.growatt.com/index/getPlantListTitle")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantTotal")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantList", data={
    "currPage": "1",
    "plantType": "-1",
    "orderType": "2",
    "plantName": "",
    })
print(response.json())
Jedenfalls mit dem Beispiellogin bekomme ich alle Daten frei haus geliefert:

Code: Alles auswählen

import requests

session = requests.Session()
response = session.get("https://server.growatt.com/login/toViewExamlePlant")
response = session.post("https://server.growatt.com/index/getPlantListTitle")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantTotal")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantList", data={
    "currPage": "1",
    "plantType": "-1",
    "orderType": "2",
    "plantName": "",
    })
print(response.json())

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 20:27
von Chrissili
Hey vielen Dank das funktioniert natürlich bei mir auch.
Nur trotz Eingabe meiner Daten bei "userName" und "password" kommt dann
{'result': -2, 'msg': 'Username Password Error'}

Wie kann das jetzt sein?! Genau die gleichen Daten wenn ich diese manuell eingebe funktionierts?!?!

Tut mir so leid dass ich mich so anstelle...

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 21:09
von __deets__
Das kann zB ein escape-Code sein, wenn du einen \ im Passwort oder Benutzernamen hast. Wesentlich mehr faellt mir erstmal nicht ein. Darum bitte nochmal *genau* den Code zeigen (ohne dein echtes Passwort natuerlich), den du benutzt. Nicht ein wolkiges "also was Sirius3 gemacht hat".

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 21:26
von Chrissili
Also ich habe das von Sirius3 ja exakt so verwendet. Lediglich mein Passwort hat einen "." mit drin. Sonst keine Sonderzeichen

Re: Anmeldung Website Server Growatt

Verfasst: Sonntag 26. Februar 2023, 21:47
von Chrissili
Oder was meinst du mit "wolkiges"?

Re: Anmeldung Website Server Growatt

Verfasst: Montag 27. Februar 2023, 18:29
von Chrissili
Sorry ich stehe gerade total auf dem Schlauch...

Re: Anmeldung Website Server Growatt

Verfasst: Montag 27. Februar 2023, 22:25
von sparrow
Das hat __deets__ doch geschrieben:
Du sollst deinen Code zeigen. Also den, den du verwendest. Passwort und Username ist das einzige, das du entfernst.
Und zwar wirklich den Code, den du verwendet. Kein "ich habe das so wie Sirius3 gemacht".
Aus deinem Editor kopieren, hier zwischen Code-Tags einfügen.

Re: Anmeldung Website Server Growatt

Verfasst: Montag 27. Februar 2023, 23:20
von Sirius3
Da scheint es mehrere Login-Aufrufe zu geben. Der letzte ist:

Code: Alles auswählen

response = session.post("https://Server.growatt.com/login", data={
    "account": "abc",
    "password": "abc",
    "validateCode": "",
    "isReadPact": "0",
})

Re: Anmeldung Website Server Growatt

Verfasst: Dienstag 28. Februar 2023, 07:58
von Chrissili
Hallo anbei der Code aus meinem Editor:

Code: Alles auswählen

import requests
import datetime

session = requests.Session()
#response = session.get("https://server.growatt.com/login/toViewExamlePlant")
response = session.post("https://server.growatt.com/login", data={
    "userName": "",
    "password": "",
    "lang": "en",
    "loginTime": f"{datetime.datetime.now():%Y-%m-%d+%H:%M.%S}",
    "noRecord": "true",
    "type": "1",
})
print(response.json())

response = session.post("https://server.growatt.com/index/getPlantListTitle")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantTotal")
print(response.json())
response = session.post("https://server.growatt.com/selectPlant/getPlantList", data={
    "currPage": "1",
    "plantType": "-1",
    "orderType": "2",
    "plantName": "",
    })
print(response.json())

Re: Anmeldung Website Server Growatt

Verfasst: Dienstag 28. Februar 2023, 08:10
von Chrissili
Sirius3 hat geschrieben: Montag 27. Februar 2023, 23:20 Da scheint es mehrere Login-Aufrufe zu geben. Der letzte ist:

Code: Alles auswählen

response = session.post("https://Server.growatt.com/login", data={
    "account": "abc",
    "password": "abc",
    "validateCode": "",
    "isReadPact": "0",
})
[/quote]

Hey das funktioniert! Da hat der Login geklappt.
Darf ich noch fragen, wo ihr diese Referenzen "https://server.growatt.com/selectPlant/getPlantTotal" oder "https://server.growatt.com/index/getPlantListTitle" gefunden habt? Sind die im Quelltext zu finden oder wo finde ich die verschiedenen Daten?
Besten Dank schon mal!!!

Re: Anmeldung Website Server Growatt

Verfasst: Dienstag 28. Februar 2023, 21:50
von Chrissili
hat jemand ne Idee, wie ich noch konkretere weitere Werte erhalte, bzw. die Referenzen von "https://server.growatt.com/... " erkenne, was man da noch abgreifen kann?