bytebrain Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Hallo Zusammen, ich will mich mittels WWW::Mechanize automatisiert auf einer Webseite anmelden. Das Problem hier ist folgendes: Die Seite ist zusätzlich noch per htaccess geschützt. Wie kann ich mich mittels WWW::Mechanize an dem htaccess-Anmeldefenster einloggen? Ich habe leider mit google und auch auf CPAN nichts finden können Hoffe, mir kann jmd. helfen, bin grad recht ratlos. Grüße, bytebrain
Amstelchen Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 steht im cookbook drin: $ua->credentials( $base, $realm, $uname, $pass ) also z.b. $bla->credentials('http://deinhostname:deineip', 'deinrealm', 'deinuser', 'deinpasswort') ungetestet, und geht wahrscheinlich nur mit HTTP Basic, nicht mit HTTP Digest. s'Amstel
bigvic Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Hi, erster Treffer bei google: htaccess type authorization with WWW::Mechanize ciao, vic
bytebrain Geschrieben 26. Oktober 2008 Autor Geschrieben 26. Oktober 2008 Guten Morgen Zusammen, danke schonmal für die Anregungen! Ich werd mir das morgen mal anschauen. Grüße, bytebrain
bytebrain Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 Servus Zusammen, ich habe es leider mit einer "sauberen" Lösung nicht hinbekommen. Ich habe mir eure Links und die Module nochmals angeschaut, konnte aber mittels der Funktion credentials() keine Lösung meines Problems erreichen. Ich musste es anderes lösen Daher übergebe ich nun beim URL-Aufruf mittels get() den Benutzernamen und das Passwort gleich mit: my $url = 'https://username:password@this.is.my.url.com'; my $www = WWW::Mechanize->new(); $www->get( $url ); So funktioniert es. Leider nicht so schick, wie ich gerne gehabt hätte. Dennoch großes Dankeschön an euch. Grüße, bytebrain
Mr Unix Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 ich habe es leider mit einer "sauberen" Lo:sung nicht hinbekommen. 1. Das Ding heisst nicht htaccess, sondern je nach Art der Authentifizierung Basic/Digest/Etc... Auth. 2. Wenn du nur einen GET-Request absetzen willst, dann langt auch vollkommen LWP::UserAgent. WWW::Mechanize verwendet LWP::UserAgent als base. 3. Wirft man einen Blick in perldoc WWW::Mechanize sieht man, dass die Methode credentials nicht selbst implementiert ist, sondern von LWP::UserAgent stammt. Schlussfolgerung: Ich vermute, dass du die Authentifizierung fuer den falschen Realm verwendest. LWP::UserAgent sagt zur Authentifizierung folgendes: $ua->credentials( $netloc, $realm, $uname, $pass ) Set the user name and password to be used for a realm. It is often more useful to specialize the get_basic_credentials() method instead. Was bedeutet das fuer dich? 1. Du brauchst die Location. 2. Du brauchst den Realm. 3. Du brauchst User und Passwort Wie realisierst du das? 1. Location ist relativ einfach. Sie besteht aus dem Hostnamen und dem Port. Willst du dich an http://members.tolleseite.de/test/ anmelden, so lautet deine $location members.tolleseite.de:80 (bei https natuerlich 443 anstatt 80...) 2. Realm ist etwas komplizierter, da dieser beliebig vom Administrator gewaehlt werden kann. Jedoch laesst sich dies auch mit LWP::UserAgent realisieren: my $req = $ua->get("http://members.tolleseite.de/test/"); my ($realm) = ($req->header('www-authenticate') =~ m/Basic realm="(.+)"/i); 3. Der Login: Hier wird's wieder einfach da du dem Modul nur sagen musst, wie es sich fuer den Host und Realm anzumelden hat: $ua->credentials($location, $realm, $user => $pass); $ua->get($url); Wenn moeglich solltest du auch vermeiden das Passwort im Klartext hart in den Code zu kodieren. Mittels Term::ReadKey kannst du das echo auf dem Terminal ab- und anschalten und so auch Passwoerter auf der Kommandozeile einlesen. Ausser natuerlich das Script laeuft als Cronjob und erwartet keine Benutzereingaben. Dann wuerde ich aber wenigstens auf die Dateirechte achten! mfg Unix
bytebrain Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 Servus, @ Mr Unix so... Habs jetzt mal umgebaut. Und anhand deiner super Hilfe hats geklappt. Es lag tatsächlich am fehlerhaften Realm. Ich danke dir! Grüße, bytebrain
Mr Unix Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 Ich danke dir! Kein Problem. Irgendjemand muss ja die Perlgemeinde am Leben erhalten. ;-) mfg Unix
bytebrain Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 Kein Problem. Irgendjemand muss ja die Perlgemeinde am Leben erhalten. ;-) mfg Unix Genau Bist du eigentlich Perl (Monk|Monger)?
Mr Unix Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 Genau Bist du eigentlich Perl (Monk|Monger)? Nein, aber ich bin lange genug dabei und schreib bei zahlreichen CPAN- und Distributions-Modulen mit. Ich find's irgendwie nur schade, dass hier im Forum so wenig mit Perl gemacht wird. Aber das wird bestimmt noch...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden