Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12396[/thread]

Mozilla Cookies mit WWW::MECHANIZE verwenden

Leser: 1


<< >> 3 Einträge, 1 Seite
skontox
 2008-08-23 11:38
#113923 #113923
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Guten Morgen,
nach langer Perl-Abstinenz habe ich mich mal wieder an das gute alte Perl gewagt ;-)

Nun bin ich fast fertig und stehe vor einem Problem:
Ich würde gerne direkt auf die für Mozilla hinterlegten und gültigen Cookies von meinen Perl-Script aus zugreifen. Sprich ich mache einige Webanfragen mit dem Mozilla-Browser (Login usw.) und möchte dann am Ende mit Perl auf die aktuelle URL des Browsers zugreifen. Leider sind dort cookies aktiv und ich würde nicht auf die Seite gelangen sondern wieder beim Login. ;-)

Und selber möchte ich diesen Login-Prozess mit meinem Perl-Script nicht machen, es sei denn das was ich mir hier vorstelle kann nicht gelöst werden.

Also einiges habe ich da auch schon ausprobiert.

Ich weiß auch, das ab Version 3.0 des Firefox- Browsers die cookies in eine SQL-Lite-DB abgespeichert werden. Da habe ich mir auch schon was gebastelt um das auszulesen. Aber ich habe erstmal auf Firefox 2.0 gesetzt. Dort werden die Cookies ja irgendwo hier:
C:\Dokumente und Einstellungen\nifi\Anwendungsdaten\Mozilla\Firefox\Profiles\...\cookies.txt";
abgelegt.

Wie gesagt, herumgebastelt habe ich auch schon wie ein wilder, aber leider funktionierte das nie. Ich lande immer wieder auf der Login-Seite, obwohl ich im Browser mich mit der URL schon ganz woanders befinde, also hat das mit dem Zugriff auf den aktuellen Mozille-Cookies nicht funktioniert. ;-(

Ich habe da auch noch ein Perl-Modul ausprobiert, dass sich genauso wie meine Lösung anhörte "HTTP::Cookies::Mozilla", aber irgendwie hat das auch nicht funktioniert. Gefunden und installiert habe ich das von hier:

"ppm install http://ppm.tcool.org/archives510/HTTP-Cookies-Mozi..."


Was mir ausserdem auch noch aufgefallen ist, dass wenn ich in meinen Firefox-Browser gehen und mir dort die Cookies anzeigen lasse, stehen da für die gewünschte Seite mehr Einträge drinnen, als in dem per Editor geöffneten "cookie.txt" bzw. "cookie.sqlite". Werden eventuell noch woanders Cookies abgelegt? DOM-Cookies??? Keine Ahnung hatt ich irgendwo aufgeschnappt ;-)

Vielleicht kennst sich hier jemand damit ein wenig aus und könnte mir ein wenig Hilfestellung geben. Würde mich natürlich sehr freuen. ;-)

benutze ActivePerl v5.10.0
Module:WWW-MECHANIZE 1.34
Betriebsystem Windows XP SP2
verwendeter Mozilla-Firefox-Browser: Firefox 2.0 bzw. 3.0

hier mein letzten in meinen Augen vielversprechende Codefragmente:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/local/bin/perl

use strict;
use HTTP::Cookies;
#use HTTP::Cookies::Mozilla;
use WWW::Mechanize;
use Crypt::SSLeay;

#$HTTP::Cookies::Mozilla::SQLITE = '/path/to/sqlite3';

my $cookiefile = "C:\Dokumente und Einstellungen\nifi\Anwendungsdaten\Mozilla\Firefox\Profiles\t0nmt4mb.default\cookies.txt";
#my $cookiefile = "C:\Dokumente und Einstellungen\nifi\Anwendungsdaten\Mozilla\Firefox\Profiles\t0nmt4mb.default\cookies.sqlite"; #Firefox ab Version 3

#my $cookie_jar = HTTP::Cookies::Mozilla->new;
my $cookie_jar = HTTP::Cookies->new(File => $cookiefile, autosave =>1);
...


Herzlichen Dank!
Gruß skontox
murphy
 2008-08-23 18:19
#113927 #113927
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
skontox+2008-08-23 09:38:54--
[...] Ich würde gerne direkt auf die für Mozilla hinterlegten und gültigen Cookies von meinen Perl-Script aus zugreifen. Sprich ich mache einige Webanfragen mit dem Mozilla-Browser (Login usw.) und möchte dann am Ende mit Perl auf die aktuelle URL des Browsers zugreifen. Leider sind dort cookies aktiv und ich würde nicht auf die Seite gelangen sondern wieder beim Login. ;-) [...]


Das könnte sich schwierig gestalten. Nicht, weil man die Keksdateien von Mozilla nicht auslesen könnte, sondern weil einige Cookies, zum Beispiel Sitzungsids, nicht unbedingt in diesen Dateien landen, sondern vom Browser nur bis zum Ende der Sitzung im Arbeitsspeicher vorgehalten werden.

Vielleicht hilft Dir ja so etwas wie CPAN:Mozilla::Mechanize weiter – ich habe das Modul allerdings noch nie verwendet und kann nicht viel dazu sagen, wie gut es funktioniert.
When C++ is your hammer, every problem looks like your thumb.
skontox
 2008-08-26 14:34
#113998 #113998
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Besten Dank murphy für Deine Antwort und den Link zum Modul.
Schade, das hört sich ja allerdings nicht so vielversprechend an ;-(

Dann werde ich wohl das ganze vom Perl-Script erledigen lassen. Sprich Login usw.
Ich hoffe, dass das wenigstens funktioniert und Perl analog zu dem Mozilla oder Internet-Browser die Cookies bzw. Sitzungs-IDs usw. korrekt verarbeitet.

Das werde ich jetzt erstmal testen.

Gruß skontox
<< >> 3 Einträge, 1 Seite



View all threads created 2008-08-23 11:38.