Como trabajo con proxys?..

Ernesto Hernandez-Novich emhn at telcel.net.ve
Mon May 21 14:20:59 CDT 2001


On Mon, 21 May 2001, pinocho madera wrote:
> Hola lista, queria saber si alguien me puede decir donde puedo conseguir 
> informacion sobre los protocolos que usan los proxys, por ejemplo quiero que 
> mis programas en perl se conecten a traves de un proxy pero el problema es 
> que no se bien como trabajan los proxy, no se por ejemplo como pedirle que 
> me redireccionen a X servidor http y hacer un http request etc.. Bueno si 
> alguien sabe por favor que me pase algun url sobre algun tutorial, bien 
> gracias..

El proxy habla los mismos protocolos que los extremos, esto es, si usas
un browser para conectarte a una página Web emplearás el protocolo HTTP y
el proxy simplemente _releva_ tu petición HTTP al servidor. Lo mismo
puede decirse de FTP.

En lugar de tener,

Cliente <--> HTTP <--> Servidor

tienes,

Cliente <--> HTTP <--> Proxy <--> HTTP <--> Servidor

Algunos proxies tienen la posibilidad de conversar con otros proxies para
intercambiar información de vecindad o jerarquía, utilizando los protocolos
ICP y HTCP... pero en la práctica _nunca_ los vas a utilizar desde un
programa (a menos que estés escribiendo un proxy, por supuesto). Y también
es posible que quieres monitorear el proxy, si este utiliza SNMP, para lo
cual podrías utilizar MRTG. Como vez hay muchos protocolos en juego, según
sea la tarea que te ocupa... de acuerdo a tu explicación, yo diría que
sólo te interesa hacer un programa que usa HTTP/FTP para "pasar" a través
de un proxy.

Una de las condiciones para que un proxy sea útil es que no altere en
modo alguno la transferencia de datos, salvo la posible identificación
del proxy. Esto simplifica la escritura de un programa que utilice HTTP
(o FTP, o lo que sea) porque puedes escribirlo pensando que la conexión
es directa, y para que trabaje con el proxy no hay que hacer ninguna
modificación especial.

En Perl dispones de la librería LWP (Library for WWW access in Perl) que
te permite acceder a la mayoría de servicios en la Web (man LWP, si no
muestra nada es porque no la tienes instalada y debes obtenerla desde
CPAN en www.perl.com).

Un ejemplo trivial puede ser:

#!/usr/bin/perl
# Un browser en 10 líneas
use LWP;
$c = new LWP::UserAgent;
$c->agent("Slowzilla/0.0");
$r = new HTTP::Request GET => 'http://www.yahoo.com';
$u = $c->request($r);
if ($u->is_success) {
  print $u->content;
} else {
  print "Algun error";
}

Este es un programa básico:
- Construye un agente $c.
- Le dice que se identifique como "Slowzilla/0.0".
- Construye una petición $r GET http://www.yahoo.com.
- Construye un URI $u en base a pedirle a $c que ubique $r.
- Si tiene éxito, lo imprime.

El programa funciona perfectamente sin necesidad de un proxy. Si hay un
proxy en el medio, hay dos alternativas:

$c->proxy('http','http://proxy:8080/');

Que obviamente especifica que para HTTP hay que usar el proxy determinado.

$c->env_proxy()

Que especifica tomar las variables de ambiente http_proxy, ftp_proxy, etc.
para identificar el proxy.

Lee la documentación de LWP para aprender a utilizar HTTP, FTP, Gopher,
News y hasta MailTo. Los protocolos que hablan los proxies son los mismos,
y están definidos en www.w3c.org o en www.faqs.org.

(Sólo para los Perl Mongers: ¿Quién puede decir "Tutorial"?)
-- 
Ernesto Hernández-Novich - Running Linux 2.2.19 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d+(-) s+: a C+++$ UBLAVHIOSC++++$ P++++$ L+++$ E- W+ N++ ?o ?K w--- O- M- V
PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G>++ e++ h+ r+ y++
-----END GEEK CODE BLOCK-----

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list