Articulos de Colaboradores
Codigos Fuente
Compiladores
Documentos y Manuales
Programas y Librerias
Recursos y Articulos
Videotutoriales
Servidores (Aplicaciones)
Controles ActiveX

Analisis SEO
Conocer PageRank
Encriptar JS/HTML
Convertir HTML a JavaScript
Convertir HTML/JS a PHP
Tablas ASCII/HTML
Alertas de Virus
Base Windows API
Directorio de Empresas
Libros de Informatica
Rotador de Banners

ARTICULOS TECNICOS SOBRE PROGRAMAS Y PROGRAMACION
PROGRAMACION Y DISEƑO PARA PROGRAMADORES Y WEBMASTERS


Un Navegador Web Anonimo - Programacion y Codigos en Perl







Un Navegador Web Anonimo en Perl
Christian Gustavo Riva

Existen muchos sitios en Internet que te permiten navegar en forma anonima a traves de la red. Entras la direccion Web a donde quieres ir, y estos se encargan de aparecer en los identificadores de IP/Host como responsables de las conexiones.
En principio, lo que estos sitios hacen es actuar como mediadores entre tu peticion (una direccion Web) y el destino (el servidor que aloja al sitio solicitado).

Cuando el servidor destino recibe la peticion, reconoce como unico autor de la misma al servidor mediador, y este ultimo finalmente te entrega los resultados en forma (casi) transparente.
A traves del siguiente codigo podras ver una de las formas en las cuales puedes crear un script que actue como mediador entre la peticion de un cliente y el servidor destino final, haciendo que en los registros de este ultimo figure unicamente la direccion IP del servidor donde se encuentra alojado el
script y no la del cliente real.

Como veras en el codigo, la mayor parte del trabajo son las modificaciones que hay que hacerle a las paginas antes de enviarselas al cliente, ya que debemos:

  • Reconocer los enlaces relativos y recomponerlos como enlaces absolutos, para poder apuntarlos luego hacia el script ("pagina.htm" => "http://www.destino.com/pagina.htm"), salvando todas las alternativas posibles (directorios, etc).
  • Agregar a todos los enlaces una referencia a nuestro script para poder continuar navegando a traves del mismo.
  • Agregarles a todas las imagenes la ubicacion original de las mismas, ya que al mostrar la pagina al cliente cualquier referencia de archivos que no sea absoluta (http://..) por omision se entendera que los mismos estan en nuestro servidor ("imagen.gif" => "http://www.nuestro-servidor.com/imagen.gif").
Y muchas variantes mas que deberas atender y mejorar si quieres continuar el desarrollo de este script, como ser el uso de formularios Web, controlar errores, etc.
Para implementarlo deberas generar el archivo anonimo.pl con el codigo listado, copiarlo a tu FTP y asignarle los permisos correspondientes de ejecucion.
Y para navegar a traves del script ingresa la direccion destino como aparece a continuacion:

http:///www.tudominio.com/ruta_del_script/anonimo.pl?http://www.direccion-a-visitar.com

Recuerda que el codigo es para uso libre y su finalidad es introducirte en los conceptos que trata y animarte a que experimentes por tu cuenta.

ANONIMO.PL
###################################
# (C) 2001 Christian Gustavo Riva #
# http://www.programasprogramacion.com #
###################################
#!/usr/bin/perl

use LWP::Simple;

## Declaramos el modulo LWP ya que vamos a utilizar la funcion
## get() del mismo para peticionar las paginas Web.

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

## Definimos al cliente la salida que daremos: html

$script = "http:///www.tudominio.com/ruta_del_script/anonimo.pl?";

## Asignamos a la varible $script la direccion EXACTA donde se
## encuentra el script seguido por un signo de interrogacion (?).
## Esta variable la pegaremos delante de todas las referencias hacia
## otros enlaces en la pagina final, asegurandonos de esta forma
## que el cliente pueda continuar navegador a traves del script.

$destino = $ENV{'QUERY_STRING'};

## Asignamos a la variable $destino todo lo que enviemos al script
## seguido al signo ?
## En este caso debera ser la direccion Web completa donde se
## quiera ingresar.

$directorio = $destino;

## A continuacion buscamos y formamos el path absoluto de la direccion
## destino a partir de todas las variantes posibles, para poder luego
## componer los enlaces que aparezcan en forma relativa dentro de la
## pagina final.

if( $directorio !~ m|/$| )
## Si el $destino no es del tipo:
## http://www.direccion.com/
## http://www.direccion.com/carpeta/
{
if( $directorio !~ m|http://(.*)/([^.]+)$|i )
## Si el $destino es del tipo:
## http://www.direccion.com/pagina.htm
## http://www.direccion.com/carpeta/pagina.htm
{ $directorio =~ s|http://(.*)/(.*)$|http://$1|i; }
## Armamos el path absoluto extrayendo los
## nombres de pagina.
}

$directorio.="/" if( $directorio !~ m|/$| );

## Nos aseguramos un slash al final del path absoluto.

$pagina=get($destino) || die "Imposible abrir:\n$destino";

## Asignamos a la variable $pagina el contenido de la pagina Web
## solicitada, utilizando la funcion get() del modulo LWP.

$pagina =~ s|<title>(.*)?</title>|<title>** Navegador Anonimo **
$1</title>|gi;

## Agregamos al titulo de la pagina un identificador para
## el usuario sobre su condicion de Anonimo al navegarla.

$pagina =~ s|<a href[\s]?=[\s]?["']?(?=http)([^\s"'>]+)["']?|<a href="$script$1$2"|gi;

## Apuntamos hacia el script todos los enlaces absolutos
## de la pagina original (solo HTTP).

$pagina =~ s|<a href[\s]?=[\s]?["']?(?!http)([^\s"'>]+)["']?|<a href="$script$directorio$1"|gi;

## Apuntamos hacia el script todos los enlaces relativos
## de la pagina original, componiendolos previamente
## como absolutos (variable $directorio).

$pagina =~ s|<img(.*)src[\s]?=[\s]?["']?(?!http)([^\s"'>]+)["']?|
<img$1src="$directorio$2"|gi;

## Y finalmente componemos los path relativos de las
## imagenes para que sean absolutos
## (de otra forma serian peticionadas en el servidor
## del script, donde no se encuentran).

print $pagina;

## Enviamos la pagina modificada al cliente.
 






A continuacion puedes escribir tus comentarios sobre esta pagina:





ProgramasProgramacion.com (ex-CGR Software.com) © 2001-2018 C.G.R. @ Buenos Aires, Republica Argentina
Contacto | Thumbshots