2013-02-12 5 views
12

Ich kann nicht Session Surfen über eine Website einmal in.PhantomJS und Sitzungen

angemeldet halten

ich erfolgreich auf der Seite einloggen kann (i, dass, was auch immer angeben wird die Seite nach dem Login werden Sie auf dem umgeleitet Homepage), aber dann muss ich auf eine andere Seite wechseln. Zuerst habe ich versucht mit page.open() dann mit page.evaluate die window-Eigenschaft location.href zu ändern, aber in beiden Fällen ist das Ergebnis leider, dass ich nicht mehr eingeloggt bin. Ich verfolgte den Login-Status nur Rendern der Seite auf jeder Seite laden Ereignis mit inkrementellen PNG-Namen (1.png, 2.png, etc). Ich habe auch versucht mit --cookies-file = cookies.txt param aber es hat nicht viel geholfen.

Meine Fragen sind: Was ist der beste Weg, um Seiten mit Phantomjs "zu bewegen"? Gibt es in diesen Fällen eine spezifische Methode, um Sitzungen zu behandeln (vielleicht, um Cookies manuell für jede .open() zu senden, nur zu sagen)?

Danke für Hilfe.

+0

Ich habe auch das gleiche Problem. Ich habe den Parameter --cookies-file auch versucht, ich kann sehen, dass die Login-Aktion korrekt ausgeführt wurde, aber wenn es auf die nächste Seite umleiten, wurde der Benutzer nicht angemeldet. Definitiv ein Sitzungsproblem. Ich freue mich auf die Lösung. –

+0

Haben Sie eine Lösung für dieses Problem gefunden? Kämpft immer noch und kann nichts finden, um die Datensicherheit zu kompromittieren. – CinetiK

Antwort

7

Sitzungen erfordern Cookies. Sie müssen ein zusätzliches Argument in phantomjs hinzufügen.

--cookies-file=/path/to/cookies.txt 

Blick here für weitere Informationen.

Bearbeiten: Enthält Ihr cookies.txt etwas?

+0

Ja, aber ich kann mich trotzdem nicht einloggen. Ich habe auch versucht, die alte cookie.txt-Datei zu löschen, das Skript erneut zu starten und zu sehen, ob Cookie-Daten korrekt darauf geschrieben sind und es scheint. – razorxan

+0

@razorxan so scheint Ihr Problem gelöst zu sein? wenn es ist bitte markieren Sie die obige Frage als richtig .., so dass wir nicht offen – abbood

+2

@abbood verlassen, sein Problem ist nicht gelöst. Cookie-Daten werden korrekt geschrieben, aber er verliert immer noch seine Login-Sitzung (wie ich jetzt ...) – alumi

7

Ich hatte Probleme mit dem Ansatz der Cookies-Datei. Die Datei würde geschrieben werden, und ich könnte "Cookie-Informationen" in der Datei sehen, aber zukünftige Anfragen würden als nicht authentifiziert interpretiert werden. Als letzte Anstrengung habe ich einfach das page.cookies-Array genommen, es zu JSON serialisiert und es in einer Datei gespeichert. Mein nächstes Skript würde die Datei öffnen, sie in eine Variable deserialisieren und die Seite page.cookies auf die Variable setzen. Sicher genug, das hat funktioniert! Ich dachte nur, ich würde es weitergeben.

+1

Dies ist ein bekanntes Problem offenbar: siehe https://github.com/ariya/phantomjs/issues/12277 und http: // stackoverflow.com/a/24184040/308421 – liorda

+0

Hier ist ein Grund, dies zu tun (obwohl die Option -cookies-Datei scheint für Nicht-Session-Cookies zu arbeiten): [https://gist.github.com/jarnix/8d6e279d7571da7fe3227f1e103f5562 ] (https://gist.github.com/jarnix/8d6e279d7571da7fe3227f1e103f5562) –