Perleando con - comprobar acceso a urls (blacklists)

El siguiente código perl, es un script sencillo que realiza peticiones de forma automática a las urls contenidas en el fichero ‘blacklist.txt’ con el objetivo de determinar si el Proxy o cualquier otro servidor de filtrado permite el acceso (‘permitidos.txt’) o lo deniega (‘denegados.txt’) o simplemente no llega a determinada url (‘inaccesibles.txt’).

Ideal para realizar una pequeña auditoría de la permisividad de navegación a ciertas urls que deberían estar bloqueadas en listas negras o blacklists.

#!/usr/bin/perl -w

use strict;

use warnings;

use LWP::Simple;

use LWP::UserAgent;

use CGI::Carp qw(fatalsToBrowser);

use HTTP::Request;

# Construye el navegador

my $browser = LWP::UserAgent->new;

$browser->env_proxy; # Utiliza la variable HTTP_PROXY

$browser->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");

# abre/crea ficheros

open(FILE_R,"blacklist.txt");

open(PERMITIDOS,'>permitidos.txt');

open(DENEGADOS,'>denegados.txt');

open(INACCESIBLES,'>inaccesibles.txt');

# mensajes desde el proxy -> si en su lugar se desea buscar la cadena en el content

my $inaccesible = "The host was not found";

my $denegado = "The ISA Server denied the specified Uniform Resource Locator";

foreach my $url ()

{

chop($url);

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

my $response = $browser->request($req);

my $estado = $response->status_line;

my $content = $response->content();

print "$estado\n";

#print $content;

if($estado =~ m/$denegado/i) {

print DENEGADOS "$url\n";

}

if($estado =~ m/200/i) {

print PERMITIDOS "$url\n";

}

if($estado =~ m/$inaccesible/i) {

print INACCESIBLES "$url\n";

}

}

close FILE_R;

close PERMITIDOS;

close DENEGADOS;

close INACCESIBLES;

Extraído de http://unlugarsinfin.blogspot.es

Comentarios