• Publicidad

Leer URL que requiere usuario/contraseña

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Leer URL que requiere usuario/contraseña

Notapor pbellon » 2015-06-23 06:39 @319

Hola de nuevo, tras largo tiempo.

Estoy intentando leer varias URL, de red interna, que requieren autenticación con usuario/contraseña. El objetivo es leer el código retornado e interpretarlo en busca de ciertos valores.

Caso 1: Este funciona correctamente.
use LWP::UserAgent;
$ua = new LWP::UserAgent;
my $req = HTTP::Headers->new;

$req = HTTP::Request->new(GET => 'http://172.22.1.142/accessos/accessos.html');
$req->authorization_basic('miusuario', 'mipassword');
print "Content-type: text/html\
\
";
my $response = $ua->request($req);
print "Response Code: " . $response->code . "\n";
print "Response Content: " . $response->content;



Caso 2: Este no funciona. Retorna: 400 URL must be absolute
use LWP::UserAgent;
$ua = new LWP::UserAgent;
my $req = HTTP::Headers->new;

my $url = URI->new('http://172.22.33.177:8803/gpm/perform.xml?resource=,,SYSPLEX&id=8D4540450&buttons=no%20title=%22zSystem%20%%20CPU%20utilization%20(CP)%20by%20MVS%20image%22%20scrolling=%22no%22/%3E');

$req = HTTP::Request->new(GET => '$url');
$req->authorization_basic('misuario', 'mipassword');
print "Content-type: text/html\
\
";
my $response = $ua->request($req);
print "Response Code: " . $response->code . "\n";
print "Response Content: " . $response->content;

Este caso 2 no funciona, no encuentro el motivo. Probando desde un navegador funciona correctamente.
El caso 1 funciona correctamente tanto en navegador como con el script Perl.

¿Alguien puede ayudarme?

Un saludo
pbellon
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2004-10-22 06:48 @325

Publicidad

Re: Leer URL que requiere usuario/contraseña

Notapor explorer » 2015-06-23 13:08 @589

La variable $url está entrecomillada simple, por lo que entonces no es interpolada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Leer URL que requiere usuario/contraseña

Notapor pbellon » 2015-06-24 02:14 @135

Hola Explorer,

he probado lo que dices, pero sigue igual, 400 URL must be absolute. ¿Puede ser por los parámetros?

Un saludo
pbellon
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2004-10-22 06:48 @325

Re: Leer URL que requiere usuario/contraseña

Notapor explorer » 2015-06-24 05:12 @258

Quizás el problema esté en el uso del módulo URI. Si ya tienes una URL completa, entonces eso es todo lo que necesitas para hacer el GET:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $url = 'http://172.22.33.177:8803/gpm/perform.xml?resource=,,SYSPLEX&id=8D4540450&buttons=no%20title=%22zSystem%20%%20CPU%20utilization%20(CP)%20by%20MVS%20image%22%20scrolling=%22no%22/%3E';

$req = HTTP::Request->new(GET => $url);
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Leer URL que requiere usuario/contraseña

Notapor pbellon » 2015-06-26 02:02 @126

Hola.

Hay que escapar los paréntesis, las comas, en fin, todo o casi todo. La URL también se ha podido acortar y, como decías, quitar el módulo URI.
Finalmente, este código funciona:

use LWP::UserAgent;
$ua = new LWP::UserAgent;
my $req = HTTP::Headers->new;

$req = HTTP::Request->new(GET => 'http://172.22.33.177:8803/gpm/perform.xml?resource=%2C%2CSYSPLEX&id=8D0450&buttons=no');
$req->authorization_basic('miusuer', 'mipwd');
my $response = $ua->request($req);
print $response->content;


Un saludo y gracias.
pbellon
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2004-10-22 06:48 @325

Re: Leer URL que requiere usuario/contraseña

Notapor explorer » 2015-06-26 05:21 @264

El último artículo en Perl Maven habla precisamente de este tema:

LWP::UserAgent and Basic Authentication (en inglés)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados