Autor Thema: HTTPMOD Login  (Gelesen 11286 mal)

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #30 am: 07 November 2017, 12:56:25 »
probier mal einfach mit:

   enableCookies 1
   reAuthRegex community/login
   sid01Data  userNameB=deinUserName&userPassWordB=deinPasswort
   sid01URL   https://www.mytischtennis.de/community/login
   verbose    5
und der Rest weg.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #31 am: 07 November 2017, 13:08:46 »
Habe mal ein neues Device dafür angelegt:
Folgenden Logeintrag erhalte ich nun:
2017.11.07 13:05:07 4: myTischtennis2: GetUpdate called (update)
2017.11.07 13:05:07 4: myTischtennis2: update timer modified: will call GetUpdate in 60.0 seconds at 2017-11-07 13:06:07
2017.11.07 13:05:07 4: myTischtennis2: AddToQueue adds update, initial queue len: 0
2017.11.07 13:05:07 5: myTischtennis2: AddToQueue adds type update to URL https://www.mytischtennis.de/community/, no data, no headers, retry 0
2017.11.07 13:05:07 5: myTischtennis2: HandleSendQueue called, qlen = 1
2017.11.07 13:05:07 5: myTischtennis2: HandleSendQueue is adding Cookies: SRV=81
2017.11.07 13:05:07 4: myTischtennis2: HandleSendQueue sends request type update to URL https://www.mytischtennis.de/community/, No Data,
header: Cookie: SRV=81,
timeout 2
2017.11.07 13:05:07 4: HttpUtils url=https://www.mytischtennis.de/community/
2017.11.07 13:05:07 5: HttpUtils request header:
GET /community/ HTTP/1.0
Host: www.mytischtennis.de
User-Agent: fhem
Cookie: SRV=81
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.11.07 13:05:07 4: https://www.mytischtennis.de/community/: HTTP response code 200
2017.11.07 13:05:07 4: HttpUtils https://www.mytischtennis.de/community/: Got data, length: 0
2017.11.07 13:05:07 5: HttpUtils response header:
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Language: de-DE
Server: Microsoft-IIS/7.5
Content-Length: 0
Accept-Ranges: bytes
Date: Tue, 07 Nov 2017 12:05:07 GMT
X-Varnish: 778708016
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: Miss
2017.11.07 13:05:07 4: myTischtennis2: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Language: de-DE
Server: Microsoft-IIS/7.5
Content-Length: 0
Accept-Ranges: bytes
Date: Tue, 07 Nov 2017 12:05:07 GMT
X-Varnish: 778708016
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: Miss, body empty
2017.11.07 13:05:07 5: myTischtennis2: looking for Cookies in HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Language: de-DE
Server: Microsoft-IIS/7.5
Content-Length: 0
Accept-Ranges: bytes
Date: Tue, 07 Nov 2017 12:05:07 GMT
X-Varnish: 778708016
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: Miss
2017.11.07 13:05:07 5: myTischtennis2: ExtractSid called, context reading, num
2017.11.07 13:05:07 5: myTischtennis2: CheckAuth is checking buffer with ReAuthRegex community/login
2017.11.07 13:05:07 4: myTischtennis2: CheckAuth decided no authentication required
2017.11.07 13:05:07 5: myTischtennis2: Read starts parsing response to update with defined readings:
2017.11.07 13:05:07 3: myTischtennis2: Read response to update didn't match any Reading
2017.11.07 13:05:07 5: myTischtennis2: HandleSendQueue called, qlen = 0

Ich muss doch jetzt aber noch irgendwo definieren was er dann suchen soll oder nicht?
Quellcode Auszug der Seite:
gimmeMoreUrl = 'ajax/_moreTimeLine';
ttrFortimeline = 1583;
ttrTypeString = 'TTR'

Dort soll er dann nach ttrFortimeline suchen und 1583 zurückgeben...

Offline EinEinfach

  • Full Member
  • ***
  • Beiträge: 165
Antw:HTTPMOD Login
« Antwort #32 am: 07 November 2017, 13:22:31 »
Wenn das Login geklappt hat, müssen in dem Device-Internal "buf" schon Daten zu sehen sein.

Siehst du dort von dir gewünschte Readings?
fhem@RasPi, diverse HM Geräte, Gigaset-Elements, LaCrosse, Landroid WG798E, FritzBox 7490

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #33 am: 07 November 2017, 13:24:06 »
Nein, dort ist noch nichts zu sehen...

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #34 am: 07 November 2017, 13:26:02 »
Das Problem ist: du bist immer noch nicht eingeloggt
Zitat
2017.11.07 13:05:07 4: myTischtennis2: CheckAuth decided no authentication required
und HTTPMOD schaltet deswegen nicht zur Login Seite, weil die erste Antwort leer ist.

Ich muss mal selbst testen, aber ich kann von der Arbeit aus nicht wirklich :) Vielleicht heute Abend.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #35 am: 07 November 2017, 13:27:29 »
Wenn du das für mich machen könntest wäre super.
Mach einfach wenn du Zeit hast =)
Viele Dank schonmal!

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #36 am: 07 November 2017, 13:49:03 »
Mach mal ein paar Headers dazu, insbesondere das mit gzip, deflate. Auf meinem Windows Testrechner in der Arbeit, kriege ich krÿptische Antwort (hängt wahrscheinlich an fhem/windows/gzip), aber zumindest eine Antwort, die nicht leer ist:

attr myTischtennis2 requestHeader1 User-Agent: Mozilla/5.0 (Windows NT 10.0;; WOW64;; rv:45.0) Gecko/20100101 Firefox/45.0
attr myTischtennis2 requestHeader2 Accept: text/html,application/xhtml+xml,application/xml;;q=0.9,*/*;;q=0.8
attr myTischtennis2 requestHeader3 Accept-Language: en-GB,en;;q=0.5
attr myTischtennis2 requestHeader4 Accept-Encoding: gzip, deflate
Ansonsten, der Rest heute Abend ;)
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #37 am: 07 November 2017, 14:45:38 »
Also: das geht bei mir mit:
define tennis HTTPMOD https://www.mytischtennis.de/community/ 60
attr tennis enableCookies 1
attr tennis reAuthRegex name="userNameB"
attr tennis requestHeader4 Accept-Encoding: identity
attr tennis sid01Data userNameB=meinUsername&userPassWordB=meinPasswort&targetPage=index?fromlogin=1&goLogin=Einloggen
attr tennis sid01Header4 Accept-Encoding: identity
attr tennis sid01URL https://www.mytischtennis.de/community/login
attr tennis verbose 5

Jetzt musst Du deine reading[0-9]+Name und reading[0-9]+Regex bauen, um die Daten zu holen, die Du als Readings möchtest.

Einzige Anmerkung: wie gesagt funktioniert bei mir (in der Arbeit)
attr tennis requestHeader4 Accept-Encoding: gzip, deflate
attr tennis sid01Header4 Accept-Encoding: gzip, deflate
nicht.

Mit "identity" zwinge ich die Abfrage und die Antwort ohne Komprimierung, was natürlich FHEM (und die Leitung und meine Log und mein Browser) stark belastet. Deswegen empfehle ich ein Test mit "gzip, deflate", es wäre viel besser. Und erst wenn es nicht funktioniert, dann mit "identity".
« Letzte Änderung: 07 November 2017, 14:50:11 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #38 am: 07 November 2017, 16:11:31 »
Also mit identity schreibt er mir, wie du es ja schon geschrieben hast, mein Logfile mit dem Inhalt der gewünschten Webseite voll.
Nehme ich das identity raus, ist der ja gezipt und so nicht im Log lesbar.

Mit:
attr myTischtennis readingsName1 TTR
attr myTischtennis readingsRegex1 ttrFortimeline = ([\d]+)

wollte ich meinen TTR Wert (1583) aus der Webseite auslesen. Da scheint er nichts zu finden. Egal ob gezipt oder ungezipt.
Auf der Webseite: https://regex101.com scheint mein Regex zu funktionieren.

Also muss ja doch mein Regex fehlerhaft zu sein...
« Letzte Änderung: 07 November 2017, 16:17:25 von mazze2000 »

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #39 am: 07 November 2017, 18:16:20 »
Ich habe selbst keine TTR Daten. Deshalb kann ich nicht testen. Zeig mal das relevante Teil der Log.

Und auch ein "list <dein httpmodDevice>". Die Attribute sollten eigentlich nicht readingsName1 und readingsRegex1 heissen (deprecated), sondern reading1Name und reading1Regex

EDIT: nicht vergessen => anonymisieren!
« Letzte Änderung: 07 November 2017, 18:45:13 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #40 am: 07 November 2017, 18:21:03 »
Ich denke das sollte der relevante Teil sein:
2017.11.07 18:19:17 5: myTischtennis2: ExtractSid called, context reading, num
2017.11.07 18:19:17 5: myTischtennis2: CheckAuth is checking buffer with ReAuthRegex name="userNameB"
2017.11.07 18:19:17 4: myTischtennis2: CheckAuth decided no authentication required
2017.11.07 18:19:17 5: myTischtennis2: UpdateReadingList created list of reading.* nums to parse during getUpdate as 1
2017.11.07 18:19:17 5: myTischtennis2: Read starts parsing response to update with defined readings: 1
2017.11.07 18:19:17 5: myTischtennis2: ExtractReading TTR with regex /ttrFortimeline = ([\d]+)/...
2017.11.07 18:19:17 5: myTischtennis2: ExtractReading TTR did not match
2017.11.07 18:19:17 3: myTischtennis2: Read response to update didn't match any Reading
2017.11.07 18:19:17 5: myTischtennis2: HandleSendQueue called, qlen = 0

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #41 am: 07 November 2017, 18:41:59 »
Internals
BUSY 0
CHANGED
DEF https://www.mytischtennis.de/community/ 60
HTTPCookies SRV=82; cfid=fcb61e49-8f35-4a23-8ef9-bade7e289caa; cftoken=0
Interval 60
LASTSEND 1510076097.07451
LastAuthTry 2017-11-07 15:00:50
MainURL https://www.mytischtennis.de/community/
ModuleVersion 3.4.0 - 9.9.2017
NAME myTischtennis2
NR 96
STATE 1
TRIGGERTIME 1510076157.06736
TRIGGERTIME_FMT 2017-11-07 18:35:57
TYPE HTTPMOD
addr https://www.mytischtennis.de:443
buf
code 200
conn
data
displayurl https://www.mytischtennis.de/community/
header Accept-Encoding: gzip, deflate Cookie: SRV=82; cfid=fcb61e49-8f35-4a23-8ef9-bade7e289caa; cftoken=0
host www.mytischtennis.de
httpheader HTTP/1.1 200 OK Content-Encoding: gzip Content-Type: text/html;charset=UTF-8 Content-Language: de-DE Server: Microsoft-IIS/7.5 Content-Length: 13514 Accept-Ranges: bytes Date: Tue, 07 Nov 2017 17:34:58 GMT X-Varnish: 1557465454 Age: 0 Via: 1.1 varnish Connection: close X-Cache: Miss
httpversion 1.0
hu_blocking 0
hu_filecount 221
hu_port 443
hu_portSfx
ignoreredirects 0
loglevel 4
path /community/
protocol https
redirects 0
timeout 2
url https://www.mytischtennis.de/community/
value 0

Attributes
enableCookies 1
reAuthRegex name="userNameB"
readingsName1 TTR
readingsRegex1 ttrFortimeline = ([\d]+)
requestHeader4 Accept-Encoding: gzip, deflate
sid01Data userNameB=USER&userPassWordB=PW&targetPage=index?fromlogin=1&goLogin=Einloggen
sid01Header4 Accept-Encoding: gzip, deflate
sid01URL https://www.mytischtennis.de/community/login
userattr readingsName1 readingsRegex1 requestHeader1 requestHeader2 requestHeader3 requestHeader4 sid01Data sid01Header4 sid01URL sidURL
verbose 5

Bei reAuthRegex name habe ich userNameB drin stehen... oder muss dann da auch direkt der Benutzer rein?

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #42 am: 07 November 2017, 19:46:15 »
Ich habe nochmal ein neues Device angelegt. Das ständige rum probieren macht es ja nicht gerade leichter.
Und siehe da: Ich kann jetzt meinen Wert erfolgreich auslesen. Danke schonmal dafür, dass du dir die Zeit genommen hast.

Jedoch kann ich den Wert nur auslesen wenn ich ohne Komprimierung arbeite. Das ist an sich nicht so schlimm. Ein auslesen des Wertes findet ohnehin nur ein mal pro Tag statt. Kann man irgendwie verhindern, dass er mir meinen Log so dermaßen voll schreibt?
« Letzte Änderung: 07 November 2017, 19:55:38 von mazze2000 »

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4351
Antw:HTTPMOD Login
« Antwort #43 am: 07 November 2017, 22:05:38 »
Ja, setze wieder verbose auf 1 oder 0
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline mazze2000

  • New Member
  • *
  • Beiträge: 25
Antw:HTTPMOD Login
« Antwort #44 am: 09 November 2017, 08:29:54 »
Also das funktioniert jetzt echt wunderbar.
Ich habe die automatische Abfrage jetzt komplett abgeschaltet und frage den Wert jetzt immer morgens um 5 Uhr ab.
Da die Werte auf der Seite immer über Nacht aktualisiert werden reicht es völlig aus.
Soweit so gut =)

Wenn ich mich jetzt innerhalb der Seite weiter bewegen möchte lege ich doch sid02Data, sid02Header und sid02URL an oder sehe ich das falsch?
Woher weiß das HTTPMOD Modul denn welche Readings zu welcher sid gehören?

Kann ich beispielsweise, wenn ich mir jetzt ein neues Device anlege, diesem HTTPMOD unterschiedliche Data Werte übergeben? Momentan würde ich vermuten ich stelle im HTTMOD keine festen Werte ein sondern Werte aus einem Dummy, die er sich holen soll, ein. Diese Werte im Dummy würde ich dann vor der Abfrage nach belieben setzen. Richtig oder ist da ein Denkfehler drin?

Vielen Dank schonmal =)

 

decade-submarginal