Perl:Link Protection überlisten mit LWP::UserAgent

Hallo,

ein CGI-Script im Internet überträgt Links mit einer sogenannten „Link-Protection“, indem bei Aufruf des CGIs mit der print-Funktion ein „Location: http…“ ausgegeben wird.

Jetzt habe ich ein CGI geschrieben, dass mit LWP::UserAgent eine get-Anfrege erzeugt.

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(‚GET‘, $url);
$response = $ua->request($request);

Die Variable $response->content() liefert jedoch nicht etwa die print-Ausgabe „Location: http…“ sondern den Inhalt der verlinkten Seite.

Wie kann ich die print-Ausgabe „Location: http…“ erhalten? Gibt es da evtl. eine andere Variable, die die gewünschte Information enthält?

Vielen Dank für Eure Hilfe.

Michael

Hallo,

ein CGI-Script im Internet überträgt Links mit einer
sogenannten „Link-Protection“, indem bei Aufruf des CGIs mit
der print-Funktion ein „Location: http…“ ausgegeben wird.

Jetzt habe ich ein CGI geschrieben, dass mit LWP::UserAgent
eine get-Anfrege erzeugt.

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(‚GET‘, $url);
$response = $ua->request($request);

$response = $ua->simple_request($request);

$location = $response->header(„Location“);

siehe perldoc LWP::UserAgent, HTTP::Headers

Alexander

Hallo Alexander,

vielen Dank für Deine Hilfe, aber

$location = $response->header(„Location“);

gibt nur den Dateinamen (z.B. datei.dat) zurück, nicht jedoch den gesamten Pfad, obwohl mein Test-Script „Lacation: http://www.dom.de/pfad/zu/datei.dat“ ausgibt.

Unter LWP::UserAgent und HTTP::Headers habe ich keine weiteren Hinweise mehr gefunden, welche Variable den gesamten Pfad liefert.

Hast Du noch eine Idee?

Michael

Hallo Alexander,

vielen Dank für Deine Hilfe, aber

$location = $response->header(„Location“);

gibt nur den Dateinamen (z.B. datei.dat) zurück, nicht jedoch
den gesamten Pfad, obwohl mein Test-Script „Lacation:
http://www.dom.de/pfad/zu/datei.dat“ ausgibt.

Meine Testscriptausgabe:
> telnet werner 80
Connected to werner.
Escape character is ‚^]‘.
GET /fleischer/test.php HTTP/1.1
Host: werner
Connection: close

HTTP/1.1 302 Found
Date: Tue, 29 Oct 2002 09:27:16 GMT
Server: Apache/1.3.19 (Unix) (SuSE/Linux) ApacheJServ/1.1.2 mod_ssl/2.8.3 OpenSSL/0.9.6a PHP/4.0.4pl1
X-Powered-By: PHP/4.0.4pl1
Location: http://www.google.de
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

Script:
> cat test.pl
#!/usr/bin/perl
use LWP::UserAgent;
$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(‚GET‘, ‚http://werner/fleischer/test.php‘);
$response = $ua->simple_request($request);
print $response->header(„Location“);

Ausgabe:
> perl test.pl
http://www.google.de

Unter LWP::UserAgent und HTTP::Headers habe ich keine weiteren
Hinweise mehr gefunden, welche Variable den gesamten Pfad
liefert.

$response->headers_as_string() sollte zur Not alle Header im String liefern, die kann man dann zur Not per regex zerlegen.

Alexander