Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Perl/CGI auf Htaccess

Empfohlene Antworten

HI zusammen.

Also ich hab ein Script geschrieben, dass auf einen Htaccess-geschützen Bereich zugreifen soll, aber anstatt mir die geschütze Datei

zurückzugeben, gibt er mir die Fehlermeldung zurück, dass es der falsche Benutzername/Passwort ist. Die stimmen aber. Woran kann das

liegen?

Hier der Quelltext.

#!/usr/bin/perl -w

use strict;

use LWP::UserAgent;

use HTTP::Request::Common qw(POST);

my $lwp_user = new LWP::UserAgent;

my $url = 'http://User:Passwort@www.domain.de/statistik/domain.de/index.html';

my $Anfrage = POST $url;

my $Antwort = $lwp_user->request($Anfrage);

my $html = $Antwort->content();

my $Zeit = localtime;

open (DATEI,">log.txt");

print DATEI "$Zeit\n\n";

print DATEI $Antwort->content();

close (DATEI);

print "Content-type: text/html\n\n";

print <<test;

$html

test

Danke für eure Hilfe,

cu

alligator

Die Übermittlung von Username und Passwort sollten korrekt sein... ich weiss auch sonst nicht, was falsch sein könnte... aber warum machst Du es nicht so?

#!/usr/bin/perl -w

use strict;

use LWP::Simple;

my $url = "http://User:Passwort@www.domain.de/statistik/domain.de/index.html";

my $html = get $url;

my $Zeit = localtime;

open (DATEI,">log.txt");

print DATEI "$Zeit\n\n";

print DATEI $url;

close (DATEI);

print "Content-type: text/html\n\n";

print <<test;

$html

test

  • Autor

Erstmal thx für die Hilfe BigMac.

Hmm was macht den das Modul LWP::Simple genau?

Holt es den mit dem "get" den Inhalt von der Url oder wie ?

Ich hab das nämlich getestet und ich bekomme rein garnichts zurück?

cu

alligator

Ja genau.. in Verbindung mit dem Perl Modul LWP::Simple kannst Du via 'get' den Inhalt der Datei in eine Variable einlesen.

LWP::Simple ist geeignet für schnelle Abfragen, z.B. für eine die Du machen willst. HTTP::Request (in Verbindung mit LWP::UserAgent) hingegen benutzt man wenn man mehr Kontrolle über den Header, der gesendet wird, haben will.

(nachzulesen in dem Buch 'Programmieren mit Perl Modulen' von O'Reilly Seite 230 ;))

Versuchs halt erstmal mit einer "normalen" Seite die nicht hinter einem htaccess Schutz liegt.. wenn es dort geht, dann hängt es wohl mit dem htaccess Schutz zusammen.

Gruß,

Martin

<FONT COLOR="#a62a2a" SIZE="1">[ 14. November 2001 12:02: Beitrag 1 mal editiert, zuletzt von BigMac ]</font>

Ja,.. denk ich mal auch...

Mmh... aber dann ist es komisch, dass es via LWP Modul nicht geht, weil es ja auch nichts anderes macht als die Seite aufrufen.

  • Autor

Hi nochmal,

also beim Spotlight-Forum hab ich diese antwort bekommen, aber ich kann leider damit echt nix anfangen, vielleicht ja du BigMacc ?

Ich post die Antwort mal hier:

> my $url = 'http://User:Passwort@www.domain.de/statistik/domain.de/index.html';

das ist keine URL, wie Du RFC 1738 (http://www.ietf.org/rfc/rfc1738.txt) entnehmen kannst. Sowas durch's Netz zu jagen, bringt allenfalls ein

paar Systeme zum Absturz, wofür Du dann übrigens zur Verantwortung zu ziehen bist. Eine URL ist z.B.

http://www.domain.de/statistik/domain.de/index.html

Welche Header Du dem Request hinzufügen musst, bzw. wie die Kommunikation bei Basic Authentication aussieht, kannst Du RFC 2617

(http://www.ietf.org/rfc/rfc2617.txt) entnehmen.

Also wenn du daraus schlau wirst, dann klär mich bitte auf ;-)

cu

alligator

Ja,.. er meint also, dass Du das ganze so in dem Format vergessen kannst wegen dem Passwort und dem Usernamen,... da das nicht der Norm entspricht.

Joo, also muss Du, wie er sagte, die Daten im Header mit übertragen... moment... ich schau schlag da grad mal was nach... ich war eh vor kurzem hier an der Arbeit auch mit dem LWP beschäftigt :)

Okay,... ich hab die Lösung...

#!/usr/bin/perl -w

use strict;

use LWP::userAgent;

my $url = "http://www.domain.de/statistik/domain.de/index.html";

my $benutzer = "Username";

my $passwort = "Passwort";

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

my $anfrage = HTTP::Request->new(GET => $url);

$anfrage->authorization_basic($benutzer, $passwort);

my $html = $ua->request($anfrage)->as_string;

my $Zeit = localtime;

open (DATEI,">log.txt");

print DATEI "$Zeit\n\n";

print DATEI $url;

close (DATEI);

print "Content-type: text/html\n\n";

print <<test;

$html

test

So sollte es funktionieren... aber bei dem letzten Teil in dem ich das Ergebnis in $html reinschreibe bin ich mir nicht sicher... auf jedenfall kannst Du auf das Ergebnis mittels '$ua->request($anfrage)' zugreifen.

<FONT COLOR="#a62a2a" SIZE="1">[ 14. November 2001 14:50: Beitrag 1 mal editiert, zuletzt von BigMac ]</font>

  • Autor

WOW BigMAC!

Es funktioniert. Supercool.

Ich hab blos aus

my $html = $ua->request($anfrage)->as_string;

dass

my $html = $ua->request($anfrage)->content();

gemacht.

Vielen vielen Dank :) !!!

cu

alligator :D

Cool :)

Bitte, bitte... kein Problem :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.