Schrift
[thread]3061[/thread]

Login klappt nicht mit LWP, Cookies, 302 redirect

Leser: 3


<< >> 9 Einträge, 1 Seite
Franz
 2007-05-31 11:22
#29025 #29025
User since
2006-07-12
31 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich möchte per Script Seiten aus delicious speichern. Dazu logge ich mich ein per POST. Ist das erfolgreich so erfolgt ein redirect auf meine Benutzerseite.

Nach dem Redirect bin ich aber nichgt mehr eingeloggt, was ich am Ergebnis sehen kann.

Ich vermute es liegt am Cookie, da mache ich wohl etwas falsch. Ich kann leider nicht erkennen was da falsch läuft.

Ich hoffe mir kann jemand einen Tipp geben.


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;
use FileHandle();

$fh = new FileHandle("content.htm","w");

$loginUrl="https://secure.del.icio.us/login";
$login="test";
$password="123";

my $ua = LWP::UserAgent->new();
my $cookie_jar = HTTP::Cookies->new;
$ua->cookie_jar($cookie_jar);
push @{ $ua->requests_redirectable }, 'POST';

my $response = $ua->post($loginUrl,['user_name'=>$login,'password'=>$password,'login'=>"log in"],'Referer' =>'https://secure.del.icio.us/login');
$cookie_jar->extract_cookies($response);

print ($fh $response->content());


Das ganze läuft auf nem Windows, openssl habe ich installiert - die Anmeldung klappt ja eigentlich auch, laut header.
moritz
 2007-05-31 18:29
#29026 #29026
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Mein Tipp wäre, die API von delicious zu benutzen, die sollte genau das tun, was du versuchst von Hand nachzubauen.
Franz
 2007-05-31 23:42
#29027 #29027
User since
2006-07-12
31 Artikel
BenutzerIn
[default_avatar]
die API ist leider sehr begrenzt, das was ich will klappt damit nicht - wäre na klar nett auch wg. dem overhead...
Franz
 2007-06-13 18:59
#29028 #29028
User since
2006-07-12
31 Artikel
BenutzerIn
[default_avatar]
hmmm hat niemand einen Tipp oder Link wo die Fragestellung evtl. detaillierter besprochen wird?
kristian
 2007-06-13 19:54
#29029 #29029
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Ich würde es zuerst mit dem Beispiel aus der DOKU (perldoc HTTP::Cookies) versuchen
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
         use HTTP::Cookies;
$cookie_jar = HTTP::Cookies->new(
file => "$ENV{'HOME'}/lwp_cookies.dat',
autosave => 1,
);

use LWP;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar($cookie_jar);

Or for an empty and temporary cookie jar:

use LWP;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar( {} );


Wenn das in die Hose geht - ich habe es nicht getestet - ist die Umsetzung nicht ganz trivial.
Dann willst du die redirects abfangen, indem du rediredts verbietest, den Header des Redirect auslesen und den Keks in deinen neuen Request einbauen und dann abschicken.
Es geht, da bin ich sicher aber es ist "ein hartes Brot".

Gruß
Kristian
renee
 2007-06-13 20:13
#29030 #29030
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also es wird ein Cookie gesetzt, das auch ok aussieht....
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
kristian
 2007-06-13 21:00
#29031 #29031
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo
[quote=renee,13.06.2007, 18:13]Also es wird ein Cookie gesetzt, das auch ok aussieht....[/quote]
Wird der Keks auch beim redirect() gesendet?
Wenn ja, welches OS, welche Perl-Version?
Ich habe auf den Nixen das "harte Brot" genommen um von 5.3 bis 5.8 richtig zu liegen...
Sorry, nein, Code gibt es nicht, es war ein Job und der Code gehört mir seit Auslieferung (und Bezahlung) nicht mehr.

Gruß
Kristian
Franz
 2007-06-20 16:32
#29032 #29032
User since
2006-07-12
31 Artikel
BenutzerIn
[default_avatar]
ich werd das wohl erst in ein paar wochen/monaten wieder anfassen
Gast Gast
 2007-10-12 11:54
#100741 #100741
Naja ich habs nicht so mit modulen deswegen funzt bei mir sowas in dem stil :P
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
# Login Request zusammensetzen
$request = HTTP::Request->new(POST => 'https://tst.com/Login.jsp?a=setLanguage&language=DE');
$request->push_header('Content-Type' => 'application/x-www-form-urlencoded');
$request->content("callTest=set&hotelKey=123&passwd=GEHEIM&weeksToShow=other&Login.y=7");

# Session id auslesen
$response->header('Set-Cookie') =~ /JSESSIONID=(.*?);/;
$sid = $1;

# Request Header
$request = HTTP::Request->new(POST => 'https://tst.com/daten.jsp');
$request->push_header('Cookie' => 'JSESSIONID='.$sid);
....


Und es gibts ja noch wireshark um zu schauen obs geklappt hat :P

MFG
<< >> 9 Einträge, 1 Seite



View all threads created 2007-05-31 11:22.