Acceder a página protegida con htaccess mediante Perl (LWP)

Ya vimos como acceder a una página que se encuentra protegida por htaccess desde un script PHP (con curl y con file_get_contents). Ahora vamos a hacer lo mismo con LWP en Perl. Las principales diferencias con los métodos vistos para PHP son que en este caso se debe indicar junto a las credenciales:

  • el dominio con el puerto
  • el “realm” (ámbito), que representa el valor del AuthName definido en el archivo htaccess.
    • Importante: Deben coincidir perfectamente

Entonces, el bloque de código modelo para implementar LWP es el siguiente:

 #!/usr/bin/perl
 use strict;
 use LWP;
 
 my $url = 'http://www.destino.com/secure/index.cgi';
 
 my $domain = 'www.destino.com';
 my $port = 80;
 my $username = 'ht_user';
 my $password = 'ht_pass';
 my $realm = 'Secured directory';
 
 my $ua = LWP::UserAgent->new();
 
 //Credenciales htaccess 
 $ua->credentials( "$domain:$port", $realm ,$username => $password);

 my $response = $ua->get($url);

 print "Content-type:text/html\n\n";
 my $data = $response->content;

En este ejemplo, obtendremos dentro la variable $data el contenido de la página index.cgi, para poder utilizarlo en el resto del script.

Se puede utilizar este medio para invocar otros scripts que devuelvan urls, json, etc. como si fuera un API a la aplicación.

 

Si desconocemos el “realm” podemos obtenerlo haciendo un get inicial de la url sin credenciales y leyendo el header WWW-Authenticate de la respuesta. El resultado para el ejemplo presentado devolvería:

Basic realm="Secured directory"

Tagged with: , ,
Publicado en Aplicaciones