Frage

Ich möchte ein Skript schreiben, um eine Web-Anwendung anmelden und dann auf andere Teile bewegen die Anwendung:

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use Data::Dumper;

$ua = LWP::UserAgent->new(keep_alive=>1);

my $req = POST "http://example.com:5002/index.php",
[ user_name     => 'username',
  user_password => "password",
  module        => 'Users',
  action        => 'Authenticate',
  return_module => 'Users',
  return_action => 'Login',
];

my $res = $ua->request($req);
print Dumper(\$res);
if ( $res->is_success ) {
    print $res->as_string;
}

Wenn ich diesen Code versuchen, bin ich auf die Anwendung nicht anmelden kann. Der HTTP-Statuscode zurückgegeben wird, ist 302, die gefunden wird, aber ohne Daten.

Wenn ich Benutzername / Passwort mit allen erforderlichen Dinge schreiben, dann sollte es die Homepage der Anwendung zurück und halten die Verbindung andere Teile der Anwendung bewegen leben.

War es hilfreich?

Lösung

Unter Umständen können Sie WWW :: Mechanize für diesen Zweck:

  

Mech unterstützt eine Folge von Seiten Durchführung holt einschließlich folgenden Links und Formulare einreichen. Jede abgerufene Seite wird analysiert und ihre Verbindungen und Formen werden extrahiert. Ein Link oder eine Form gewählt werden, Formularfelder gefüllt werden können, und die nächste Seite abgerufen werden kann. Mech speichert auch eine Geschichte der URLs, die Sie besucht haben, die abgefragt werden können und neu aufgelegt.

Andere Tipps

Ich vermute, dass LWP nicht folgt der Umleitung:

push @{ $ua->requests_redirectable }, 'POST';

Gibt es Gründe, warum Sie nicht WWW mit :: Mechanize

I LWP verwendet habe sich einloggen, um viele Web-Seiten und machen Sachen mit dem Inhalt, so sollte es kein Problem sein, zu tun, was Sie wollen. Ihr Code sieht gut aus so weit, aber zwei Dinge, die ich vorschlagen würde:

  1. Wie bereits erwähnt, können Sie die Anfragen vornehmen müssen umleitbare
  2. Sie können auch Cookies aktivieren: $ Ua-> cookie_jar ({});

Hope, das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top