Ok, dann verwendest du also auch cURL - da kann ich dir nur die Cookie Verwaltung ans Herz legen, da brauchst du dir keine Gedanken machen, was wie lange läuft und wo steht.
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04
Wie oft schätz Du denn das die Session abläuft? ich würde halt ungern jedes mal die ganze Prozedur aufrufen sondern eigentlich nur den Cookie erneuern bevor er abläuft. Der erste Cookie läuft bis 2037 an dem kann es nicht liegen daher muss das einer der anderen Cookies sein.
Der Cookie ist ja einer Session bei Amazon zugeordnet, immer wenn die ihre Sessions aufräumen, wird der Cookie ungültig. Ich mache das auf meinen Servern normalerweise alle 6 Stunden (Inaktivität der Session).
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04
Ok den ersten Cookie bzw. die Session ID lese ich aus. Die Location im Header ist doch aber fest oder?
Würde es da nicht ausreichen einfach auswählen zu lassen ob der User z.B. die Deutsche oder Englische Seite aufrufen will und die URL kann man dann ja fest hinterlegen die im weiteren Schritt aufgerufen wird.
Diese sollte doch an sich immer bei der deutschen Seite
Code: Alles auswählen
https://www.amazon.de/ap/signin?showRmrMe=1&openid.return_to=https%3A%2F%2Falexa.amazon.de%2F&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_dp_project_dee_de&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&
sein oder?
Momentan mag das stimmen, aber evtl. ändert Amazon daran ja auch etwas, daher nutzen wir doch einfach die Weiterleitungsmöglichkeiten von cURL (-L). Die Location braucht man eim nächsten Schritt allerdings als Referer.
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04
Den Header werte ich aus gibt bei mir ein Array
Welche Hidden Felder meinst Du denn da oder habe ich da was übersehen was ich noch auslesen muss?
Das sind die Form-Felder der Antwortseite. Die sind mit Werten vorbelegt und müssen als Post-Data mitgesendet werden. Theoretisch brauchst du ein Parse-HTML Modul dafür, oder du machst mit "preg_replace" eine übersetzung meiner "sed" Kommandos.
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04
Hier ist der Referrer die Location aus Schritt 1 aus dem Header s.o. hätte ich da noch etwas an der Loctaion ergänzen müssen oder ist das 1:1 das was im Header stand? Wie ich an die Hidden Felder ran komme muss ich mal schauen. Sind die im Header?
Der Location Header wird zum Referer - wenn man die HTML Seite sowieso parst, kann man daraus auch die ACTION-URL für die Form extrahieren - das ist bei meiner Methode eine kleine Unsauberkeit...

Ich lege die ACTION-URL auf "
www.amazon.de/ap/signin" fest. Wegen der Hidden-Felder s.o.
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04
Hier fehlen mir wohl die Hidden Felder da muss ich schauen wie ich da ran komme. Vorher habe ich ja die Cookie Daten einzeln ausgelesen, ab hier würdest Du dann den Cookie im Buffer zwischen speichern und diesen dann weiter zur Authentifizierung verwenden.
Für die Cookie-Verwaltung unbedingt cURL nutzen! Man muss allerdings die Session-Id aus dem Cookie auslesen für diesen Schritt. Die Post-Daten (email,password) müssen über die Hidden-Form-Daten der Antwort aus dem vorigen Schritt ergänzt werden.
Fonzo hat geschrieben: ↑Mi 29. Nov 2017, 00:04Es gibt ja unterschiedliche CSRF z.B. für TuneIn oder Amazon Music muss ich dann also eine spezifische URL aufrufen oder bekomme ich automatisch alle Cookies nach dem ersten Aufruf von layla.amazon.de zurück und speichere diese dann ab sofort im Buffer?
Solange die URL layla.amazon.de ist, sollte der CSRF der Gleiche sein. Zusätzlich zum Cookie muss er allerdings noch im Header mitgesendet werden => d.h. man muss ihn ebenfalls aus der Cookie Datei auslesen
Fonzo hat geschrieben: ↑Di 28. Nov 2017, 00:41
Ok dann werde ich also alle Cookies einfach komplett wegspeichern bevor ich verscuhe die Cookies zu zerlegen bzw. nur bestimmte Dinge zu verwerten. Problem sehe ich momentan noch bei den Hidden Feldern, da muss ich mal schauen vielleicht hast Du da ja noch einen Tipp falls Du Dich mit PHP auskennen solltest.
s.o. PHP DOMDocument und getElementsByTagName('input') oder per preg_grep/preg_replace meine "grep/sed" Abfolge nachbauen.
Alex
Cliff hat geschrieben: ↑Mi 29. Nov 2017, 15:10
Hat schon mal jemand versucht die Fernsteuerung mit Hilfe eines ESP8266 (Arduino) hin zu bekommen?
Hier steht einem ein Werkzeug wie Curl ja nicht zur Verfügung...
Was möchtest du denn erreichen? Ich denke, dass die String-Bearbeitung nicht unbedingt zu den Stärken des ESP8266 gehört.
Wenn du nicht DER C(++) Guru auf der Welt bist (ich bin's nicht), dann halte ich das Vorhaben zum Scheitern verurteilt.
Es gibt wahrscheinlich in jedem Haushalt irgendein Gerät, was eine Shell und cURL anbieten kann - damit müsste der ESP zumindest nur noch einfache HTTP-Requests absenden.
Alex